Skip to main content
Glama
theonlytruebigmac

N-central MCP Server

N-central REST API MCP Server

A Model Context Protocol server for N-able N-central — exposing the N-central REST API as MCP tools, resources, and prompts for use with any MCP-compatible client.

Disclaimer: This is an unofficial, community-maintained MCP server. It is not an official N-able MCP server, and it is focused specifically on the N-central REST API surface.


Features at a Glance

  • 87 tools covering devices, device notes, organizations, users, custom properties, scheduled tasks, PSA integrations, maintenance windows, and reporting — full coverage of the N-central REST API

  • Three write modes: read-only, write (default), full — controls which tools are exposed

  • Auto-paginated bulk reports in CSV or JSON; per-endpoint concurrency caps tuned to N-central's documented limits

  • MCP Resources for live org-hierarchy context (ncentral://org-tree) and per-entity lookups via templated URIs

  • MCP Prompts for common audit and reporting workflows

  • Two transports: stdio (for Claude Desktop / local clients) and Streamable HTTP (for remote clients, MCP Inspector, etc.)

  • Single- or multi-tenant: self-host against one N-central (env credentials), or run one hosted server many users point at — each targeting their own N-central via per-request headers (NC_MULTI_TENANT=1), with strict per-request credential isolation. See the Setup & Client Guide

  • Production-grade auth: JWT exchange with auto-refresh, hash-based bearer-token auth for the HTTP endpoint, CORS allow-list, rate limiting, audit log

  • Operability: /healthz and /metrics (Prometheus text format) endpoints, structured audit logging, configurable retry/timeout/session caps


Related MCP server: nable-rmm-mcp

Quick Start

Prerequisites

  • Node.js ≥ 22.9 (uses the built-in --env-file-if-exists flag and fetch)

  • An N-central instance you can reach over HTTPS

  • A User-API JWT token generated in the N-central UI

1. Install dependencies

npm install

2. Get your N-central JWT token

In the N-central UI: Administration → User Management → Users → [user] → API Access → Generate JSON Web Token

Best practice: Use a dedicated API-only user with least-privilege roles. The API user password rotates every 90 days — regenerate the JWT proactively to avoid 500 errors.

3. Configure your environment

cp .env.example .env
# Edit .env — set NC_SERVER_URL and NC_JWT_TOKEN at minimum.

The most common variables (full list in .env.example):

Variable

Required when

Description

NC_SERVER_URL

single-tenant

Your N-central URL, e.g. https://ncentral.example.com. Not needed in multi-tenant mode

NC_JWT_TOKEN

single-tenant

User-API JWT from the N-central UI. Not needed in multi-tenant mode

NC_MULTI_TENANT

hosted mode

Set to 1 to require per-request X-NC-FQDN/X-NC-JWT headers (HTTP only). See Multi-Tenant Mode

NC_FQDN_ALLOWLIST

multi-tenant

Comma-separated host suffixes a client may target — SSRF guard (exact or DNS-suffix match)

NC_WRITE_MODE

optional

read-only | write | full (default write)

MCP_PORT

HTTP mode only

Setting this enables HTTP mode (omit for stdio)

MCP_API_KEY

HTTP mode

Bearer token clients must present. Generate with openssl rand -hex 32. Required unless MCP_ALLOW_UNAUTHENTICATED=1

MCP_BIND_ADDRESS

optional

Interface to bind. 127.0.0.1 (default) for localhost-only; 0.0.0.0 for Docker / LAN exposure

MCP_CORS_ORIGIN

browser clients

Comma-separated allow-list of origins

Connecting a client? See the Setup & Client Guide for copy-paste config for Claude Code, VS Code, Claude Desktop, and Cursor — in both single- and multi-tenant modes.

Write modes

Mode

Tool count

Includes

read-only

56

GET endpoints only

write (default)

82

Read tools + create/update tools (POST/PUT/PATCH)

full

87

Everything, including destructive tools: delete_device, delete_maintenance_windows, delete_device_note, clear_device_notes, create_direct_scheduled_task

All write/destructive tools are audit-logged. Start in read-only, move to write once the integration is trusted, and reserve full for vetted automation.

4. Start the server

The server runs in stdio mode by default and switches to HTTP mode when MCP_PORT is set.

Option A — stdio (Claude Desktop / local clients)

Use the npm script (loads .env if present):

npm start

Or wire it into Claude Desktop directly. Add to claude_desktop_config.json:

{
  "mcpServers": {
    "ncentral": {
      "command": "node",
      "args": ["--env-file-if-exists=/absolute/path/to/n-central-rest-api-mcp/.env", "/absolute/path/to/n-central-rest-api-mcp/index.js"],
      "env": {
        "NC_WRITE_MODE": "read-only"
      }
    }
  }
}

Option B — Streamable HTTP (remote clients, MCP Inspector)

Set MCP_PORT in .env (default 3100) and an MCP_API_KEY, then:

npm run start:http
# Listening at http://127.0.0.1:3100/mcp
# Health probe: http://127.0.0.1:3100/healthz
# Metrics:      http://127.0.0.1:3100/metrics

Clients send Authorization: Bearer <MCP_API_KEY> on every request.

Option C — Docker

cp .env.example .env
# Edit .env: NC_SERVER_URL, NC_JWT_TOKEN, MCP_API_KEY are required for the HTTP listener.
docker compose up -d

Compose maps 127.0.0.1:3100:3100 by default. To expose on the LAN, edit docker-compose.yml and ensure MCP_API_KEY is set.

5. Verify

# stdio mode — should print "Authenticated with N-central..." on first tool call.
# HTTP mode — should respond:
curl -s http://127.0.0.1:3100/healthz
# {"status":"ok","sessions":0}

Multi-Tenant (Hosted) Mode

By default the server is single-tenant: it reads one NC_SERVER_URL + NC_JWT_TOKEN from its environment. That's the right model for an MSP self-hosting it against a single N-central.

Set NC_MULTI_TENANT=1 to host one server that many users point at, each targeting a different N-central server with their own JWT — supplied per request via headers in their own MCP client config. (Intended for a centrally-hosted demo/eval box, not for routing third parties' production credentials through infrastructure you don't control.)

# Hosted server (HTTP only — stdio cannot carry per-request headers):
NC_MULTI_TENANT=1 \
MCP_PORT=3100 \
MCP_API_KEY="$(openssl rand -hex 32)" \
NC_FQDN_ALLOWLIST=ncentral.com,n-able.com \
node index.js

Each user's MCP client config sends, per request:

{
  "mcpServers": {
    "ncentral": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": {
        "Authorization": "Bearer <MCP_API_KEY>",       // gates access to THIS server
        "X-NC-FQDN": "https://their-ncentral.example.com",
        "X-NC-JWT":  "<their N-central User-API JWT>"
      }
    }
  }
}

Isolation guarantees

  • One session = one tenant. Credentials are validated at session init (before the session exists); an invalid/missing header pair is rejected with 400. The tenant is then bound to the session for its lifetime — later header changes on the same session are ignored.

  • No shared credential state. Tokens are keyed per tenant and resolved per request via AsyncLocalStorage, so concurrent requests for different servers can never read each other's URL or token. The resource cache is tenant-scoped for the same reason.

  • Memory only, auto-evicted. Tokens and cache entries live in memory and are dropped when the last session for a tenant closes. Nothing is persisted; JWTs are never logged.

  • SSRF guard. NC_FQDN_ALLOWLIST restricts which N-central hosts a client may target (exact or DNS-suffix match). Leave it unset only behind trusted network boundaries — the server warns at startup if it's empty.

Scaling. The event loop handles many concurrent users on one process (the work is I/O-bound — waiting on N-central). If you outgrow one process, run replicas behind a load balancer with sticky routing by mcp-session-id — StreamableHTTP sessions live in process memory, so a session must return to the replica that created it.

Tip — multiple servers without hosting: a self-hoster who just needs to target several N-central servers from their own editor can skip multi-tenant mode entirely and define one stdio entry per server, each with its own env: { NC_SERVER_URL, NC_JWT_TOKEN }.


Tools

Each tool is tagged with its required write mode:

  • 🟢 read — available in every mode

  • 🟡 write — requires NC_WRITE_MODE=write or full

  • 🔴 destructive — requires NC_WRITE_MODE=full

Pagination

Every list_* tool returns a single page by default (with pagination metadata: pageNumber, pageSize, totalItems, totalPages, _links). To retrieve every result across all pages in one call, pass all: true — the server will auto-paginate at 200 items per page (up to 40,000 items). For CSV/JSON exports over large datasets, use the matching report_* tool instead.

Devices (11)

Tool

Mode

Description

list_devices

🟢

List all devices with pagination, sorting, and filter support

list_devices_by_org_unit

🟢

List devices under a specific org unit

get_device

🟢

Get a device by ID

get_device_status

🟢

Get service monitoring status for a device

get_device_assets

🟢

Get hardware/software asset info for a device

get_device_lifecycle

🟢

Get warranty/lifecycle info for a device

get_appliance_task

🟢

Get appliance task info by task ID

create_device

🟡

Add a new device (customerId, networkAddress, longName, supportedOs, deviceClass required)

update_device_lifecycle

🟡

PUT — replace asset lifecycle/warranty info (all fields required)

patch_device_lifecycle

🟡

PATCH — partially update asset lifecycle info

delete_device

🔴

Delete a device by ID (optional removeAgents)

Organizations (14)

Tool

Mode

Description

list_service_orgs

🟢

List all service organizations

get_service_org

🟢

Get a specific service org by ID

list_customers

🟢

List customers (all or filtered by SO)

get_customer

🟢

Get a specific customer by ID

list_sites

🟢

List sites (all or filtered by customer)

get_site

🟢

Get a specific site by ID

list_org_units

🟢

List all organization units

get_org_unit

🟢

Get a specific org unit by ID

get_org_unit_limits

🟢

Get licensing/usage limits for an org unit

list_org_unit_children

🟢

List child org units for a parent

create_service_org

🟡

Create a new service organization

create_customer

🟡

Create a new customer under a service org

create_site

🟡

Create a new site under a customer (PREVIEW)

update_org_unit_limits

🟡

Update licensing/usage limits for an org unit (PATCH)

Scheduled Tasks (5)

Tool

Mode

Description

list_scheduled_tasks

🟢

List all scheduled tasks across the environment

get_scheduled_task

🟢

Get general info for a scheduled task

get_scheduled_task_status

🟢

Get aggregated or per-device task status

list_device_tasks

🟢

List all scheduled tasks for a device

create_direct_scheduled_task

🔴

Run an Automation Policy / Script / MacScript on a device (direct support task)

Custom Properties (9)

Tool

Mode

Description

list_device_custom_properties

🟢

List all custom properties for a device

get_device_custom_property

🟢

Get a specific device custom property

get_device_default_custom_property

🟢

Get default custom property for an org unit

list_org_custom_properties

🟢

List custom properties for an org unit

get_org_unit_property

🟢

Get a specific org unit custom property

get_org_custom_property_default

🟢

Get default value for an org unit custom property

update_device_custom_property

🟡

Update a custom property value on a device

update_org_unit_custom_property

🟡

Update a custom property value on an org unit

update_org_custom_property_default

🟡

Update the default value of an org-unit custom property (with propagation)

Users & Access (10)

Tool

Mode

Description

list_all_users

🟢

List all users in N-central (global, not scoped by org unit)

get_current_user

🟢

Get details for the currently authenticated user

list_users

🟢

List users for an org unit

list_user_roles

🟢

List user roles for an org unit

get_user_role

🟢

Get a specific user role

list_access_groups

🟢

List access groups for an org unit

get_access_group

🟢

Get a specific access group by ID

create_user_role

🟡

Create a new user role for an org unit (PREVIEW)

create_access_group

🟡

Create a new org-unit-type access group

create_device_access_group

🟡

Create a new device-type access group

Server Info & Discovery (6)

Tool

Mode

Description

get_server_info

🟢

Server/API version info, health, or extended system details

get_server_time

🟢

Current server time (useful for clock drift detection)

list_device_filters

🟢

List all device filters

get_report

🟢

Retrieve an N-central report by ID

get_server_info_authenticated

🟡

Extra server version info using supplied credentials

logout

🟡

Invalidate the current N-central API session

Registration & Software (4)

Tool

Mode

Description

get_registration_token

🟢

Agent registration token for a site / customer / org unit

get_device_activation_key

🟢

Generate an activation key for a device

get_software_installers

🟢

List agent installer download URLs for a customer

generate_software_download_link

🟡

Generate a software download link for a customer

Maintenance Windows (4)

Tool

Mode

Description

get_maintenance_windows

🟢

List all maintenance windows for a device

create_maintenance_windows

🟡

Add a set of patch maintenance windows to a list of devices

update_maintenance_windows

🟡

Modify existing maintenance windows by ScheduleId

delete_maintenance_windows

🔴

Delete maintenance windows by ScheduleIds

PSA (10)

Tool

Mode

Description

get_psa_customer_mapping

🟢

Customer-mapping record by customer ID

list_psa_customer_mappings

🟢

All PSA mappings for a customer

list_psa_companies

🟢

Standard PSA companies for a customer

list_psa_company_contacts

🟢

Contacts in a Standard PSA company

list_psa_company_sites

🟢

Sites in a Standard PSA company

list_custom_psa_tickets

🟢

List Custom PSA tickets

validate_psa_credential

🟡

Validate Standard PSA credentials (TigerPaw 3.0 only)

get_custom_psa_ticket_detail

🟡

Retrieve a Custom PSA ticket (POST — requires creds)

create_custom_psa_ticket

🟡

Create a new Custom PSA ticket

update_psa_customer_mappings

🟡

Update PSA mappings for a customer

Device Notes (6)

Tool

Mode

Description

list_device_notes

🟢

List all notes attached to a device

add_device_note

🟡

Add a note to a device

add_notes_bulk

🟡

Add the same note to a list of devices

update_device_note

🟡

Update an existing note on a device

delete_device_note

🔴

Delete a specific note on a device

clear_device_notes

🔴

Delete ALL notes on a device

Reports (8)

The cross-entity and bulk aggregate reports. For simple lists, use the matching list_* tool with all: true and format: "csv" — those auto-paginate and CSV-export too. Bulk reports use per-endpoint safe concurrency (3-5); override with concurrency.

Tool

Mode

Description

report_devices_bulk

🟢

Fan out a per-device call across an org unit — dataType: custom-properties / assets / monitor-status. CSV default.

report_all_users_by_so

🟢

Deduplicated users across an SO and all its customers. CSV default.

report_devices_by_so

🟢

All devices under a service org (filters across all devices). CSV default.

report_customer_site_summary

🟢

Customers with sites and device counts (per-site and customer totals). CSV default.

report_org_hierarchy

🟢

Full SO → Customer → Site hierarchy flat table. CSV default.

list_active_issues

🟢

All active issues for an org unit. CSV/JSON.

list_job_statuses

🟢

All job statuses for an org unit. CSV/JSON.

generate_patch_comparison_report

🟡

Submit a patch comparison report job (returns report ID)


Resources

Resources provide live context to the client without requiring explicit tool calls. Hierarchical resources are cached for 60s by default — set NC_RESOURCE_CACHE_TTL_MS=0 to disable.

URI

Description

ncentral://org-tree

Full SO → Customer → Site hierarchy with IDs and names

ncentral://status

Server health + version snapshot

ncentral://device/{deviceId}

Templated — full device record by ID

ncentral://customer/{customerId}

Templated — customer details by ID

ncentral://org-unit/{orgUnitId}

Templated — org unit details by ID


Prompts

Name

Description

full-customer-report

Comprehensive customer/site report with org custom properties

device-health-audit

Active issues and monitoring status across the environment

agent-deployment-status

Find sites with missing or low device counts

custom-property-audit

Audit custom property consistency across all customers


Resilience

Concern

Behavior

Rate limits (429)

Auto-retry with exponential backoff on all methods (up to 3 attempts)

Unauthorized (401)

Auto re-authenticates from JWT and replays the request on all methods

Token expiry

Access tokens (1hr) and refresh tokens (25hr) auto-refreshed; concurrent refreshes coalesced

Server errors (500/503)

Retried on GET/PUT/DELETE (idempotent). POST/PATCH fail fast to avoid duplicate writes

Request timeouts

30s on API calls, 15s on auth calls. Retried on idempotent methods only

Stale HTTP sessions

Cleaned up after 30 minutes of inactivity


Known API Quirks

  • Probe assets: Return 404 — probes don't have asset records (expected behavior, skipped in bulk reports)

  • Active issues: deviceClassValue and deviceClassLabel are always null (known N-central API bug)

  • get_device by ID: lastLoggedInUser and stillLoggedIn may return null — use list_devices instead for these fields. (lastApplianceCheckinTime was also missing pre-v2025.3.1.9 — now fixed.)

  • Active issues at SO level: The /active-issues endpoint only supports customer/site org unit types, not service org

  • Scheduled task /details: does NOT accept DEVICE-level task IDs — only SYSTEM and CUSTOMER. Navigate via parentId if you have a device task ID.

  • create_direct_scheduled_task: Scripts must have Repository ID ≥ 2000 and "Enable API" toggled ON in the N-central UI. There's no API to enumerate scripts — find IDs in the Script/Software Repository UI. Extensive use accumulates DB rows that slow the UI's Task Execution page.

  • validate_psa_credential: only works with TigerPaw 3.0 — calls for other PSAs will fail.

  • Per-endpoint concurrency limits: N-central enforces concurrency per-endpoint (range 1-50). /api/devices allows 5 concurrent; /api/devices/{id}/assets/lifecycle-info only 1. Bulk reports default to safe values; tune via the concurrency parameter.

  • PREVIEW endpoints: create_site and create_user_role are flagged PREVIEW by N-central — the request/response shape may change between versions

  • Credentialed POST endpoints: validate_psa_credential, get_custom_psa_ticket_detail, and get_server_info_authenticated transmit plaintext credentials in request bodies — only use over HTTPS and be mindful of audit-log contents

  • select is a filter, not a projection: despite the name, the select query parameter on list endpoints is a FIQL/RSQL predicate that filters rows. It does NOT pick which fields come back. Valid: select=soId==50 (returns only that SO). Invalid: select=soId,soName (parse error). Not all fields are queryable — unsupported ones error with Field not found: X. Some operators (e.g. =gt=) throw NPEs on the server.


Troubleshooting

Symptom

Likely cause

Fix

500 errors on every API call

N-central API user password expired (rotates every 90 days)

Reset the password in N-central UI; regenerate the JWT; set a reminder for ~80 days

Repeated Got 401, re-authenticating... logs

N-central instance was rebooted (in-memory token state lost)

First 401 triggers re-auth; subsequent calls recover automatically. Noisy on restart but transient.

JWT works now but fails 5 minutes later

Token revocation propagation

After regenerating a JWT in N-central UI, allow up to 5 minutes for the old token's revocation to propagate

Server restart loses authentication state

Tokens are stored in-memory only

First API call after restart triggers fresh JWT exchange — no action needed

Can't reach the API on a custom port

N-central only serves the API on port 443

Use a reverse proxy or accept port 443

create_direct_scheduled_task errors with no script found

Repository ID < 2000 (bundled default) or "Enable API" toggle is OFF

Use a custom-uploaded script; toggle "Enable API" in the UI

Reaching MAX_PAGES errors on big environments

fetchAll caps at 200 pages × 200 items (40k rows)

Use a tighter filter via the select parameter, or call the underlying tool with explicit pageNumber/pageSize

HTTP mode exits with "FATAL: MCP_PORT is set but MCP_API_KEY is not"

Safety check — HTTP mode requires an API key

Set MCP_API_KEY=$(openssl rand -hex 32) or MCP_ALLOW_UNAUTHENTICATED=1 for local dev

ERR_CONNECTION_REFUSED / can't reach /healthz//metrics from another machine

Server bound or published to localhost only

Set MCP_BIND_ADDRESS=0.0.0.0; in Docker publish 0.0.0.0:3100:3100 (not 127.0.0.1:3100:3100) and connect to the host's LAN IP, not localhost. If curl 127.0.0.1:3100/healthz works on the host but not remotely, it's the bind/publish scope

Client connects but queries the wrong N-central / X-NC-* headers ignored

Server not started with NC_MULTI_TENANT=1

In single-tenant mode the headers are ignored and env NC_SERVER_URL/NC_JWT_TOKEN are used. Start with NC_MULTI_TENANT=1 for header passthrough

400 at connect in multi-tenant mode

Missing/invalid X-NC-FQDN / X-NC-JWT

Send both; FQDN must be https:// and match NC_FQDN_ALLOWLIST if set

"FATAL: NC_MULTI_TENANT=1 requires HTTP mode"

Multi-tenant needs per-request headers, which stdio can't carry

Set MCP_PORT (run in HTTP mode)

For client-side setup issues, see the Setup & Client Guide.


Project Structure

├── index.js                  # Entry point — transport selection (stdio / HTTP)
├── src/
│   ├── auth.js               # Per-tenant JWT → Access Token auth, auto-refresh logic
│   ├── client.js             # HTTP client with retry, timeout, and rate-limit handling
│   ├── context.js            # Per-request tenant context (AsyncLocalStorage) — credential isolation
│   ├── logging.js            # Structured logger + audit log
│   ├── metrics.js            # Prometheus counters / gauges
│   ├── paginator.js          # Auto-pagination, bounded concurrency, CSV helpers
│   ├── prompts.js            # MCP Prompts definitions
│   ├── resources.js          # MCP Resources definitions
│   ├── server-utils.js       # JSON-schema → Zod, header parsing, safeCompare
│   ├── shared.js             # Shared pagination/format schema helpers
│   ├── tool-registry.js      # Write-mode gating + MCP tool annotations
│   └── tools/
│       ├── custom-properties.js
│       ├── devices.js
│       ├── maintenance-windows.js
│       ├── notes.js
│       ├── organizations.js
│       ├── psa.js
│       ├── registration.js
│       ├── reports.js
│       ├── scheduled-tasks.js
│       ├── server-info.js
│       └── users.js
├── test/
│   ├── auth-isolation.test.js  # Per-tenant token/credential isolation (forced interleave, 401 path)
│   ├── isolation.test.js       # End-to-end session isolation, cache, boot matrix, SSRF guard
│   ├── mock-fetch.js           # Shared test helpers (not a test suite)
│   ├── helpers.test.js
│   ├── server-utils.test.js
│   └── utils.test.js
├── docs/
│   └── SETUP-GUIDE.md          # Client setup how-to (Claude Code, VS Code, Claude Desktop, Cursor)
├── .env.example
├── Dockerfile
└── docker-compose.yml

License

Released under the MIT License — see the LICENSE file for the full text.

Available Tools

82 tools
add_device_noteA

Add a note to a specific device. Required: text. The N-central API attaches the note to the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID
textYesNote content

TDQS

A4/5.0
Behavior4/5

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

Beyond annotations (which only indicate readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description reveals that the note is attached to the authenticated user, adding valuable 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?

Extremely concise with two sentences that convey the essential information without any 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?

The description covers the main purpose and a behavioral trait, though it could mention that both deviceId and text are required (the schema covers this). Given no output schema and simple parameters, it is fairly 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 100%, so the schema already documents both parameters. The description adds 'Required: text' but this is redundant with the required field in the schema; no extra semantic meaning is 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 action ('Add a note') and the resource ('a specific device'), distinguishing it from sibling 'add_notes_bulk' and 'update_device_note'.

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 'text' is required, providing minimal guidance, but does not specify when to use this tool over alternatives like 'add_notes_bulk' or 'update_device_note'.

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

add_notes_bulkB

Add the same note to a list of devices in one call. Required: deviceIDs (numeric array), text.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIDsYesDevice IDs to attach the note to
textYesNote content (applied to every listed device)

TDQS

B3.4/5.0
Behavior2/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) and not destructive (destructiveHint=false). The description adds only that it 'adds' a note, which is consistent but does not disclose behavioral details beyond what annotations provide, such as whether notes are appended or overwritten.

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 plus a concise note on required parameters. Every word is necessary and front-loaded. No filler or 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?

For a bulk operation, the description lacks important context: potential limits on device array size, empty string behavior, return value, and idempotency. While annotations and schema cover basic safety, the description does not fully address the complexity of a bulk mutation 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 100%, so parameter descriptions are already present. The description repeats the required param names and types without adding semantic depth or usage examples. It meets the baseline but adds no extra value.

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 ('add the same note'), the target ('list of devices'), and the distinction from a single-device tool via 'in one call'. It explicitly lists required parameters, making the purpose 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 use for bulk note addition vs. single-device alternatives like add_device_note, but does not explicitly state when to choose this tool over others or provide exclusion criteria. It offers clear context but no when-not guidance.

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

create_access_groupC

Create a new organization-unit-type access group. Required: groupName, groupDescription. Optional: orgUnitIds, userIds, autoIncludeNewOrgUnits.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe parent organization unit ID
groupNameYesName of the access group
groupDescriptionYesDescription of the access group
orgUnitIdsNoOrg unit IDs to attach
userIdsNoUser IDs to associate
autoIncludeNewOrgUnitsNoWhether new org units should be automatically included

TDQS

C2.6/5.0
Behavior2/5

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

Annotations indicate the tool is not read-only and not destructive, but the description adds no behavioral context beyond a simple 'create'. It does not explain what happens on success, error handling, or side effects. The description also incorrectly lists required fields, omitting the schema-required orgUnitId, which is misleading.

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 concise—a single sentence plus a list of required and optional fields. However, the inaccuracy regarding required parameters detracts from its effectiveness. It is front-loaded but flawed.

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 6 parameters and no output schema, the description should provide more context about the tool's behavior, such as what the access group is used for, how orgUnitId relates to orgUnitIds, or return value. It fails to do so, leaving 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 100%, so the schema already documents all parameters. The description adds value by grouping parameters into 'Required' and 'Optional', but it inaccurately excludes orgUnitId from required fields. This error undermines the added value.

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 'Create a new organization-unit-type access group', which is a specific verb and resource. It distinguishes from sibling tools like list_access_groups or create_device_access_group. However, it omits the required orgUnitId parameter, slightly reducing 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 provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or scenarios where other tools (e.g., create_device_access_group) might be more appropriate.

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

create_customerB

Create a new customer under a service organization. Required: contactFirstName, contactLastName, customerName.

ParametersJSON Schema
NameRequiredDescriptionDefault
soIdYesThe service organization ID this customer belongs to
customerNameYesCustomer name
contactFirstNameYesPrimary contact first name
contactLastNameYesPrimary contact last name
licenseTypeNoLicense type
externalIdNoOptional external identifier
phoneNoMain phone number
contactTitleNoContact title
contactEmailNoContact email
contactPhoneNoContact phone
contactPhoneExtNoContact phone extension
contactDepartmentNoContact department
street1NoStreet address line 1
street2NoStreet address line 2
cityNoCity
stateProvNoState/Province
countryNoCountry (ISO 2-letter)
postalCodeNoPostal/ZIP code

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already convey it's a write operation (readOnlyHint=false) with potential side effects (openWorldHint=true). The description adds context about belonging to a service organization, but does not disclose additional behavioral traits such as return value or side effects 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.

Conciseness4/5

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

The description is concise with two sentences, but the list of required fields is incomplete (missing 'soId'), reducing accuracy slightly.

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 complexity (18 parameters, no output schema), the description lacks important contextual details such as what the tool returns (if anything) or prerequisites like ensuring the service organization exists. This leaves the agent underinformed.

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

Parameters3/5

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

Schema coverage is 100%, with all 18 parameters described in the schema. The description adds little parameter-specific value beyond repeating a subset of required fields, so it meets the baseline.

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

Purpose4/5

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

The description clearly states the verb 'Create' and the resource 'customer under a service organization', but it omits the required parameter 'soId' from the listed required fields, causing slight inaccuracy.

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, exclusions, or related tools among the many sibling tools.

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

create_custom_psa_ticketA

Create a new Custom PSA ticket. Custom PSA only — operations for managed PSA services are not supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesCustom PSA ticket payload — refer to N-central API docs for required fields

TDQS

A3.9/5.0
Behavior3/5

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

Annotations are present (readOnlyHint: false, destructiveHint: false, openWorldHint: true), which cover basic behavior. The description adds no additional behavioral context such as side effects, prerequisites, or validation. 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 two sentences, directly stating the action and scope. No redundant words, and the critical information 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 nested object parameter and lack of output schema, the description covers the core purpose and limitation but omits details on return values or error handling. It is minimally complete for a simple creation 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 description coverage is 100% with a clear description for the 'body' parameter pointing to external docs. The tool description does not add further parameter details, so it meets the baseline expectation.

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 creates a new Custom PSA ticket and distinguishes it from managed PSA services. It uses a specific verb-resource combination and leaves no ambiguity about the tool's function.

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 limits usage to Custom PSA and excludes managed PSA services, providing clear context for when this tool should be used. It does not name alternative tools but sets a boundary.

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

create_deviceA

Add a new device to N-central. Required body fields: customerId, networkAddress, longName, supportedOs, deviceClass. Optional: description, licenseMode, macAddress, username, password.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesDevice creation payload (DeviceAddRequest). Required: customerId, networkAddress, longName, supportedOs, deviceClass.

TDQS

A4/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (creation) and destructiveHint=false, which the description confirms as adding a device. However, it does not disclose potential side effects such as triggering provisioning or requiring admin permissions, offering only basic behavioral context 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?

The description is two sentences: first stating the action, then listing fields. It is concise and front-loaded with 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 no output schema, the description omits details on the response (e.g., created device ID). It also does not specify constraints on field values or preconditions. For a creation tool with nested parameters, this leaves gaps for the agent.

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?

The input schema only defines a generic 'body' object without internal properties, but the description adds significant meaning by enumerating required fields (customerId, networkAddress, longName, supportedOs, deviceClass) and optional ones, compensating for the schema's lack of detail.

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 'Add a new device to N-central,' using a specific verb and resource. It distinguishes itself from sibling tools like create_customer or add_device_note by focusing on device creation.

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 lists required and optional fields but does not provide guidance on when to use this tool versus alternatives, nor does it mention prerequisites like an existing customer or site. The context for selection among siblings is missing.

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

create_device_access_groupB

Create a new device-type access group. Required: groupName, groupDescription. Optional: deviceIds, userIds.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe parent organization unit ID
groupNameYesName of the access group
groupDescriptionYesDescription of the access group
deviceIdsNoDevice IDs to attach
userIdsNoUser IDs to associate

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate the tool is a write operation (readOnlyHint=false) and not destructive. The description adds no further behavioral context beyond stating it creates an access group.

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, efficiently stating purpose and listing parameters without waste.

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?

The description lacks details about return values or side effects, which is important for a creation tool with no output schema. The context of usage is not fully covered.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds minimal value by reiterating required vs. optional, but no deeper 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 ('device-type access group'), distinguishing it from the sibling tool 'create_access_group' which is more general.

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 lists required and optional parameters but provides no guidance on when to use this tool vs. alternatives, such as 'create_access_group'.

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

create_maintenance_windowsA

Add a set of patch maintenance windows to a list of devices. Body shape: { deviceIDs: number[], maintenanceWindows: [...] }. See N-central API docs for MaintenanceWindowRequest field details. Note: partial failures are surfaced as per-device statuses in the response body — inspect carefully.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIDsYesDevice IDs to apply maintenance windows to
maintenanceWindowsYesArray of MaintenanceWindowRequest objects

TDQS

A4.4/5.0
Behavior5/5

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

Annotations indicate non-readonly and non-destructive, and openWorldHint true. The description adds crucial behavioral context: partial failures possible and per-device statuses in response. 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?

Three concise sentences: purpose, body shape, and a warning about partial failures. No wasted words, 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?

Given no output schema, the description hints at response behavior (partial failures) and refers to external docs for complex field details. Adequately complete for a create tool, though could elaborate on expected response structure.

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

Parameters3/5

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

Schema coverage is 100% (both parameters described). The description restates the shape and directs to external docs for maintenanceWindows details, adding minimal extra semantics beyond the 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 uses specific verb 'Add' and clearly identifies the resources: patch maintenance windows and devices. It distinguishes from sibling tools like get_maintenance_windows (read) and update_maintenance_windows (update/overwrite) 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 context is clear: use this tool to assign new maintenance windows to devices. It does not explicitly exclude alternatives (e.g., update_maintenance_windows), but the verb 'Add' strongly implies creation, providing adequate contextual guidance.

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

create_service_orgB

Create a new service organization. Required: contactFirstName, contactLastName, soName.

ParametersJSON Schema
NameRequiredDescriptionDefault
soNameYesService organization name
contactFirstNameYesPrimary contact first name
contactLastNameYesPrimary contact last name
externalIdNoOptional external identifier
phoneNoMain phone number
contactTitleNoContact title
contactEmailNoContact email
contactPhoneNoContact phone
contactPhoneExtNoContact phone extension
contactDepartmentNoContact department
street1NoStreet address line 1
street2NoStreet address line 2
cityNoCity
stateProvNoState/Province
countryNoCountry (ISO 2-letter, e.g. "US")
postalCodeNoPostal/ZIP code

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description's mention of 'Create' adds no new behavioral insight. The description does not disclose side effects, permissions needed, or what the response contains (e.g., created object ID).

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 followed by a list of required parameters. It is extremely succinct with no unnecessary words or repetition, making it easy to scan and understand.

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 16 parameters and no output schema, the description omits crucial context such as what the tool returns after creation, whether the service org is immediately usable, or any prerequisites. The schema covers parameters well, but behavioral completeness is low.

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?

All 16 parameters have descriptions in the input schema (100% coverage), so the schema already explains each field. The description only names the required ones, providing no additional semantic meaning or usage context beyond what the schema offers.

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 'Create a new service organization' which is a clear verb-resource pair that precisely identifies the tool's function. The tool name 'create_service_org' distinguishes it from other creation tools like 'create_customer' by specifying the entity type.

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 lists the three required parameters (soName, contactFirstName, contactLastName) which implies these are mandatory for use. However, it provides no guidance on when to use this tool versus alternatives such as 'create_customer' or how to decide based on context.

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

create_siteB

Create a new site under a customer (PREVIEW endpoint — schema may change between N-central versions). Required: contactFirstName, contactLastName, siteName.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID this site belongs to
siteNameYesSite name
contactFirstNameYesPrimary contact first name
contactLastNameYesPrimary contact last name
licenseTypeNoLicense type
externalIdNoOptional external identifier
phoneNoMain phone number
contactTitleNoContact title
contactEmailNoContact email
contactPhoneNoContact phone
contactPhoneExtNoContact phone extension
contactDepartmentNoContact department
street1NoStreet address line 1
street2NoStreet address line 2
cityNoCity
stateProvNoState/Province
countryNoCountry (ISO 2-letter)
postalCodeNoPostal/ZIP code

TDQS

B3.1/5.0
Behavior3/5

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

Description adds the preview endpoint warning, providing useful behavioral context beyond annotations. However, it does not disclose error states, success response, or side effects beyond creation.

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 one sentence with a parenthetical, front-loading the purpose. However, missing customerId in required list slightly reduces clarity.

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 18 parameters and no output schema, description does not explain return value, prerequisites, or what happens on success/failure. Incomplete for a creation 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 100%, so description adds minimal value. It repeats some required fields but incorrectly omits customerId. Baseline is 3.

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 'create' and resource 'site under a customer'. It distinguishes from siblings like create_customer or create_device. However, it omits customerId from the listed required fields, which may cause minor confusion.

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. Does not mention when not to use it or provide any context about prerequisites or edge cases.

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

create_user_roleB

Create a new user role for an organization unit (PREVIEW endpoint). Required: roleName, description, permissionIds. Optional: userIds to assign the role to.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
roleNameYesThe name of the role
descriptionYesDescription of the role
permissionIdsYesPermission IDs to grant
userIdsNoOptional user IDs to assign the role to

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds minimal behavioral context beyond stating it creates a role. It does not disclose side effects, rate limits, or preview endpoint behavior.

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

Conciseness3/5

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

The description is concise but contains an inaccuracy in listing required parameters. It is front-loaded but not fully reliable due to the contradiction with the schema.

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?

The tool has 5 parameters and no output schema. The description covers basic creation but lacks details on return value, side effects, limitations of the preview endpoint, or how the optional userIds assignment works.

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?

While schema coverage is 100%, the description contradicts the schema by omitting orgUnitId from the listed required fields, stating only roleName, description, permissionIds as required. This misleads the agent about mandatory 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 action 'Create', the resource 'user role', and the scope 'for an organization unit'. It differentiates from sibling tools like get_user_role and list_user_roles by specifying creation.

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 lists required and optional parameters but provides no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. Usage is implied for role creation but could be clearer.

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

generate_patch_comparison_reportA

Submit a request to generate a patch comparison report. Required: startDate. Optional filters: installStatuses[], patchApprovals[], patchCategories[]. Returns a report ID (fetch via get_report).

ParametersJSON Schema
NameRequiredDescriptionDefault
startDateYesReport start date (ISO-8601)
installStatusesNoFilter by install statuses
patchApprovalsNoFilter by patch approval states
patchCategoriesNoFilter by patch categories

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses that this is a non-destructive submission (consistent with annotations: destructiveHint=false, readOnlyHint=false) and returns a report ID, implying an async operation. It adds value beyond annotations by explaining the request-response pattern and the retrieval step.

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 words. Critical information (required field, optional filters, return type) is front-loaded. Every word 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?

For a submission tool with no output schema, the description adequately covers the return value (report ID) and the necessary retrieval step. It does not mention error handling, but given the annotations (openWorldHint=true), the description is sufficient for an agent to use correctly.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for each parameter. The description groups parameters by required/optional and rephrases their purpose ('Filter by...'), but adds no new semantic details. Baseline is 3, and the slight grouping improvement does not warrant a higher score.

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 ('Submit a request to generate') and the resource ('patch comparison report'). It distinguishes from siblings like 'get_report' which fetches the result, and other report tools like 'report_all_users_by_so', ensuring the agent understands this is a submission 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 specifies required and optional parameters, and explicitly mentions the follow-up action ('fetch via get_report'). However, it does not explicitly state when not to use this tool or compare it to alternative ways to get patch data, but the context of sibling tools makes the usage clear.

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

get_access_groupA
Read-only

Retrieve detailed information for a specific access group by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
accessGroupIdYesThe access group ID

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false. The description adds 'detailed information' but does not elaborate on what that entails, so it adds minimal 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, front-loaded sentence with no redundant words. It efficiently conveys the tool's purpose.

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 one parameter and no output schema, the description is adequate but could be improved by hinting at what 'detailed information' includes, such as typical fields returned.

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

Parameters3/5

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

Schema coverage is 100% with a simple parameter description. The tool description adds no additional meaning beyond the schema, so baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('retrieve') and resource ('access group') and indicates the operation is by ID, clearly distinguishing it from list and create sibling tools.

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

Usage Guidelines3/5

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

The description implicitly suggests using the tool when you have an access group ID, but it does not explicitly state when to use it vs. alternatives like list_access_groups or create_access_group.

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

get_appliance_taskA
Read-only

Retrieve appliance-task information by task ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe appliance task ID

TDQS

A3.8/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 read-only behavior is clear. The description adds no additional behavioral context (e.g., error handling, permissions). Acceptable given 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?

One concise sentence that is front-loaded and contains no fluff. Every word is necessary and informative.

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 parameter and no output schema, the description is adequate. It could hint at what 'information' is returned, but it's not critical given the tool name and annotations.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter 'taskId' described as 'The appliance task ID'. The description redundantly says 'by task ID', adding no new 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 (Retrieve) and resource (appliance-task information) with the method (by task ID). It distinguishes itself from sibling tools like 'list_device_tasks' by focusing on a single task retrieval.

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 like 'list_device_tasks'. The use case is implied but not stated, missing context for preferring this tool.

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

get_current_userA
Read-only

Retrieve details for the currently authenticated user. Useful for "who am I" introspection.

ParametersJSON Schema
NameRequiredDescriptionDefault

No 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 destructiveHint=false, so the description does not need to reiterate safety. It adds the introspection use case but no further behavioral details, which is acceptable given the 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 immediately stating the primary function, followed by a helpful usage hint. Every word earns its place, 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?

For a tool with no parameters and no output schema, the description fully covers what it does and when to use it. No additional details are necessary for an agent to correctly invoke it.

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?

There are zero parameters, and the schema description coverage is 100%. Per the baseline rule, a score of 4 is appropriate since no parameter documentation is needed 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 (retrieve) and the resource (currently authenticated user), distinguishing it from sibling tools like list_all_users. It is specific and not a tautology.

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 'Useful for who am I introspection,' providing clear context for when to use this tool. No alternatives or when-not are mentioned, but the use case is unambiguous.

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

get_customerA
Read-only

Retrieve a specific customer by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

TDQS

A3.6/5.0
Behavior2/5

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

Description adds minimal behavioral context beyond the verb 'Retrieve'. Annotations already declare readOnlyHint=true, so the description provides no additional safety or side-effect details.

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, 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 single-ID retrieval tool with good annotations, the description adequately covers purpose and usage. No output schema, but the return type is implicitly a customer object.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds no further meaning beyond what the schema provides for the single 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?

Description clearly states verb (Retrieve), resource (customer), and identifier method (by ID). It distinguishes from sibling tools like list_customers and create_customer.

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. Usage is implied by name and description, but not guided.

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

get_custom_psa_ticket_detailB

Retrieve detailed information for a specific Custom PSA ticket. Uses POST because the endpoint requires PSA credentials in the body.

ParametersJSON Schema
NameRequiredDescriptionDefault
customPsaTicketIdYesThe Custom PSA ticket ID
usernameYesPSA username
passwordYesPSA password

TDQS

B3.1/5.0
Behavior2/5

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

Discloses use of POST due to credentials in body, but annotations indicate readOnlyHint=false, contradicting the apparent read-only intent of 'retrieve'. No disclosure of side effects 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.

Conciseness4/5

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

Single sentence with a brief technical note, concise and front-loaded, but could include structured use cases.

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?

Lacks description of output (what 'detailed information' includes), no mention of response format, and no guidance on handling credentials despite schema coverage.

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 covers all three parameters with descriptions, and the tool description adds no additional meaning beyond schema, yielding baseline 3.

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 specifies the action 'Retrieve detailed information' and the resource 'specific Custom PSA ticket', clearly distinguishing it from the sibling list_custom_psa_tickets which lists tickets.

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 when-not-to-use conditions mentioned. The note about POST method is technical, 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_deviceA
Read-only

Retrieve a specific device by its ID. Note: lastLoggedInUser and stillLoggedIn fields may be null (known issue) — use list_devices to get these values instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID

TDQS

A4.5/5.0
Behavior4/5

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

Discloses a known issue with null fields and suggests an alternative, adding context beyond the annotations (readOnlyHint, destructiveHint, openWorldHint). Could mention more about response behavior, but still strong.

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 purpose, critical caveat in second sentence. No wasted words, highly efficient.

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 simple retrieval tool with one parameter, no output schema, and full annotation coverage, the description provides essential context (purpose, limitation, alternative) and feels 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?

Only one parameter (deviceId) with schema description already covering semantics. The description adds no further meaning, so 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 'Retrieve a specific device by its ID,' using a specific verb and identifying the resource. It explicitly distinguishes itself from the sibling tool 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 Guidelines5/5

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

Provides explicit guidance on when to use this tool (for a specific device) and when to use list_devices instead (for complete values of lastLoggedInUser and stillLoggedIn). This helps the agent choose correctly.

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

get_device_activation_keyB
Read-only

Generate an activation key for a device by device ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID

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, and openWorldHint=true, providing safety profile. The description adds minimal behavioral context beyond the annotations, but the use of 'generate' may imply mutation, which is mitigated by 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 concise sentence with no unnecessary words. However, it could be more structured by front-loading the return value or 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?

The tool has low complexity but no output schema, so the description should explain what the tool returns. It does not mention the return value (e.g., an activation key string), leaving the agent uncertain about the outcome.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'deviceId', and the description does not add any additional meaning (e.g., format, constraints) beyond the schema. Baseline of 3 is appropriate given high 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 the verb 'generate' and the resource 'activation key' with the input 'by device ID'. It distinguishes from sibling tools as none of them mention activation keys. However, the verb 'generate' could be interpreted as a write operation, which slightly conflicts with the readOnlyHint annotation.

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, nor any prerequisites or exclusions. The context signals show many sibling tools, but the description does not clarify when this specific tool should be preferred.

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

get_device_assetsA
Read-only

Retrieve asset information for a device by ID. Note: Probes do not have assets and will return 404.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID

TDQS

A4.1/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 and non-destructive. The description adds value by disclosing the edge case that probes return 404, a behavioral trait 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 with no wasted words. The core purpose is front-loaded, and the warning is appended 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 retrieval tool with one parameter and no output schema, the description minimally covers what is needed. However, it does not describe the structure of the returned asset information, leaving some ambiguity.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter 'deviceId' described as 'The device ID'. The description does not add further parameter semantics, so 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 the verb 'retrieve' and the resource 'asset information for a device by ID'. It distinguishes from sibling tools like get_device or get_device_status, which deal with other aspects.

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 includes a specific when-not-to-use scenario (probes return 404) which is helpful. However, it does not explicitly compare to alternatives or provide general usage context.

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

get_device_custom_propertyA
Read-only

Retrieve a specific custom property for a device.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID
propertyIdYesThe custom property ID

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, so the agent knows it's a safe read operation. The description ('Retrieve') is consistent but adds no behavioral details beyond the annotations, such as what exactly is returned or if ownership affects access.

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 immediately conveys the tool's 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?

Given the low complexity (2 required params, no output schema), the description sufficiently covers the tool's function. Annotations provide safety context. However, it could briefly mention that the result is a custom property value or object, but the absence is not a critical gap.

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

Parameters3/5

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

Schema description coverage is 100%: deviceId (string) and propertyId (number) are both documented. The description does not add any extra meaning or examples beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'retrieve' and the resource 'a specific custom property for a device'. It distinguishes from siblings like list_device_custom_properties (lists all) and get_device_default_custom_property (gets default) by specifying 'specific'.

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 list_device_custom_properties or get_device_default_custom_property. There is no mention of context, prerequisites, or exclusions.

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

get_device_default_custom_propertyA
Read-only

Retrieve the default device custom property information by organization unit ID and property ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
propertyIdYesThe custom property ID

TDQS

A3.8/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 openWorldHint=true. The description adds that it retrieves information, which is consistent but does not disclose additional behavioral traits such as what the output contains or any edge cases.

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 (12 words) that immediately conveys the tool's purpose without unnecessary words or repetition. Every word 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?

For a simple retrieval tool with two parameters and no output schema, the description provides sufficient context. However, it could benefit from briefly contrasting with similar tools (get_device_custom_property) to aid selection.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter having a clear description in the schema. The tool description adds no new meaning beyond repeating the parameter roles, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'default device custom property information', and identifies the parameters (organization unit ID and property ID). This distinguishes it from sibling tools like get_device_custom_property and get_org_custom_property_default.

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 exclusion criteria. Usage is implied by the tool's specific purpose, but no direct guidance is given.

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

get_device_lifecycleA
Read-only

Retrieve asset lifecycle (warranty) information for a device by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID

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 destructiveHint=false. The description adds the specific info type ('warranty') but no 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, front-loaded sentence with no superfluous 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 read tool with one parameter and no output schema, the description is adequate but could specify return value content or fields.

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

Parameters3/5

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

Schema coverage is 100% and the description only mentions 'by ID', adding no semantic detail beyond the schema's 'The device ID'. Baseline score applies.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'asset lifecycle (warranty) information', and specifies the key input 'device by ID'. It distinguishes from siblings like update_device_lifecycle.

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 vs. alternatives (e.g., other get_* tools). It lacks context for appropriate usage scenarios.

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

get_device_statusA
Read-only

Retrieve the status of service monitoring tasks for a given device.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID

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, indicating a safe read operation. The description adds no further 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, efficient sentence with no redundant information. Every word contributes to clarity.

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 retrieval tool with one parameter and comprehensive annotations, the description is adequate. It could specify the nature of the output but is not required.

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

Parameters3/5

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

Schema coverage is 100% with one parameter 'deviceId' documented. The description does not add additional meaning or usage details 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 specifies the action (Retrieve), resource (status of service monitoring tasks), and scope (for a given device). It distinguishes this tool from siblings like 'get_device' which retrieves general device info.

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. Context signals and sibling list show many similar 'get_' tools, but the description lacks any usage context or exclusions.

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

get_maintenance_windowsB
Read-only

Retrieve all maintenance windows for a specific device.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID

TDQS

B3.3/5.0
Behavior2/5

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

The description adds no behavioral information beyond what annotations (readOnlyHint=true, destructiveHint=false) already provide. It does not disclose any additional traits like data completeness 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?

A single succinct sentence that conveys the essential information without any extraneous content. It is front-loaded with the 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 retrieval tool with good annotations and a single parameter, the description is minimally adequate. However, it could be enhanced by mentioning the return format (e.g., 'returns a list') or other contextual details.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'deviceId' with description 'The device ID'. The description merely restates this scope ('for a specific device') without adding new 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?

The description uses a specific verb ('Retrieve') and resource ('maintenance windows') with clear scope ('for a specific device'). It effectively distinguishes itself from sibling tools like create_maintenance_windows and update_maintenance_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 explicit guidance on when to use this tool versus alternatives. While it implies usage when needing maintenance windows for a specific device, it lacks any when-not or alternative suggestions.

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

get_org_custom_property_defaultB
Read-only

Retrieve the default value for an organization unit custom property.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
propertyIdYesThe custom property ID

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds no behavioral context beyond the basic intent, such as what happens if the property has no default (e.g., returns null) or any permission requirements.

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

Conciseness5/5

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

One short sentence, no redundant information. Efficiently conveys the tool's purpose without any 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?

Tool is simple, but with no output schema or return value description, the agent may not know what to expect (e.g., string, object). Otherwise adequate given the low complexity.

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

Parameters3/5

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

Schema covers both parameters with basic descriptions (organization unit ID, custom property ID). The description adds no extra meaning. Baseline 3 is appropriate since schema coverage is 100%.

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 'Retrieve' and the resource 'default value for an organization unit custom property,' distinguishing it from sibling tools like list_org_custom_properties (lists all) and get_org_unit_property (gets a property value).

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 (e.g., get_org_unit_property for current value, update_org_custom_property_default for setting defaults). No when-to-use or when-not-to-use information.

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

get_org_unitB
Read-only

Retrieve a specific organization unit by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds no further behavioral details (e.g., what happens if the ID is invalid, response format). It is minimally adequate but does not enhance transparency 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.

Conciseness4/5

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

The description is a single, front-loaded sentence that efficiently communicates the core purpose. It could be slightly more informative (e.g., mentioning the return object), but there is no wasted text.

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's simplicity (1 parameter, no output schema, clear annotations), the description covers the basic function. However, it lacks usage guidance and behavioral context, making it only minimally complete for an AI agent to use confidently.

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 100% schema description coverage, the schema already documents the single parameter orgUnitId. The description adds no additional meaning or usage hints for the parameter. 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 the verb 'Retrieve' and the resource 'organization unit' with the specific criterion 'by ID'. It distinguishes itself from sibling tools like list_org_units (which returns multiple) and list_org_unit_children (which returns hierarchy).

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 list_org_units, list_org_unit_children, or get_org_unit_property. The description lacks context on prerequisites 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.

get_org_unit_limitsA
Read-only

Retrieve licensing/usage limits for an organization unit. Useful for capacity planning.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations (readOnlyHint=true, destructiveHint=false) already declare the tool as safe and read-only. The description adds the resource detail (licensing/usage limits) without contradicting annotations, but does not provide additional behavioral context beyond what's inferred.

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 plus a usage hint, concise and front-loaded with the essential action. 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 read-only tool with one parameter, the description covers the core purpose and usage context. However, it lacks description of the output structure or return values, which is notable given no output schema.

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

Parameters3/5

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

Schema coverage is 100% with parameter description for 'orgUnitId'. The tool description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'licensing/usage limits' for an organization unit, distinguishing it from sibling tools like 'get_org_unit' and 'update_org_unit_limits'.

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 mentions 'Useful for capacity planning', providing context for usage. However, it lacks explicit when-not-to-use or alternative tool references, though the purpose is clear.

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

get_org_unit_propertyB
Read-only

Retrieve a specific custom property for an organization unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
propertyIdYesThe custom property ID

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 and destructiveHint=false, so description adds no extra behavioral context. No mention of permissions, result structure, or open world implications. Adequate given 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?

Single sentence, front-loaded, zero waste. Exactly as concise as needed for a simple retrieval operation.

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 description does not specify what the tool returns (e.g., property value or object). openWorldHint suggests extra fields but not mentioned. Incomplete for an agent to predict response format.

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 covers both parameters with descriptions. Description does not add additional meaning beyond schema, e.g., no explanation of how to find propertyId. Baseline 3 for 100% 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?

Description clearly states action 'retrieve' and target 'specific custom property for an organization unit'. It distinguishes from list tools like 'list_org_custom_properties' and 'get_org_custom_property_default', but does not explicitly differentiate from siblings.

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 such as 'get_org_custom_property_default' or 'list_org_custom_properties'. Missing prerequisites or context for when a specific property is needed.

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

get_psa_customer_mappingA
Read-only

Retrieve PSA (Professional Services Automation) customer mapping for a given customer ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readonly and non-destructive behavior. The description restates that it retrieves data, which is consistent but adds no further 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?

A single sentence that is concise and front-loaded with the verb and resource, containing 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?

For a simple retrieval tool with one parameter and annotations covering safety, the description is adequate. It could mention the output format, but the open world hint mitigates this 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 100% with a clear description for customerId. The tool description adds no additional semantic meaning beyond 'The customer ID' already in 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 a specific verb 'Retrieve' and identifies the resource 'PSA customer mapping' for a given customer ID, clearly distinguishing it from sibling tools like list_psa_customer_mappings or update_psa_customer_mappings.

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 a specific customer ID but provides no explicit guidance on when to use this tool versus alternatives like list_psa_customer_mappings 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.

get_registration_tokenA
Read-only

Retrieve the registration token for a site, organization unit, or customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityTypeYesThe type of entity to retrieve the token for
idYesThe entity ID (siteId, orgUnitId, or customerId)

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, so the description doesn't need to repeat that. However, it adds no extra behavioral traits (e.g., permission requirements, token format, or side effects). The description is consistent but doesn't extend 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?

The description is a single sentence of 12 words with zero wasted verbiage. It is front-loaded with the action 'retrieve' and immediately states the resource and scope.

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 token retrieval, the description and schema together provide sufficient information. The lack of output schema could be a minor gap, but the tool's simplicity and annotations compensate. No missing context is critical.

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 already fully documents both parameters with clear descriptions and enum values, covering 100% of parameters. The description adds no additional meaning beyond the schema, so baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb 'retrieve' and identifies the unique resource 'registration token', and clarifies the scope by listing the three entity types. This clearly distinguishes it from sibling tools like get_device or get_site.

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 describe any prerequisites or context. The agent is left to infer usage solely from the tool name and entity types.

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

get_reportA
Read-only

Retrieve an N-central report by its report ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
reportIdYesThe report ID

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 destructiveHint=false, so the agent knows it's a safe read. The description adds no further behavioral context (e.g., error handling, authentication requirements), but 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 sentence with no wasted words. It is 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 (one parameter, no output schema) and annotations are present. The description is minimally adequate but could be improved by noting the return format or that it retrieves the full report object.

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

Parameters3/5

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

Schema coverage is 100%, with reportId described in the schema. The description's phrase 'by its report ID' adds no new meaning beyond what the schema already provides, so baseline score of 3 applies.

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

Purpose5/5

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

The description is explicit: 'Retrieve an N-central report by its report ID.' It specifies a clear verb (Retrieve) and resource (report), and is distinct from sibling tools like generate_patch_comparison_report or report_* tools that either generate or list reports.

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 this tool is for retrieving a single report by ID, unlike report_* tools that may aggregate or list reports.

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

get_scheduled_taskA
Read-only

Retrieve general information for a given scheduled task by ID. Returns parent ID, name, type, customer ID, device IDs, and enabled status.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe scheduled task ID

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description confirms the retrieval nature and adds specific return fields. No additional behavioral traits (e.g., rate limits) are disclosed, but with annotations covering safety, the description adds value beyond them.

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 that front-loads the verb and resource, with no wasted words. Every part adds value.

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 simple tool with one parameter and no output schema, the description is complete: it explains what the tool does and what it returns. The annotations further confirm safety.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes taskId as 'The scheduled task ID'. The description does not add new meaning beyond that. 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 the tool retrieves general information for a given scheduled task by ID, listing specific return fields. This distinguishes it from sibling tools like list_scheduled_tasks (which lists all tasks) and get_scheduled_task_status (likely returns only 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 implies usage when you need a specific task's details by ID, but does not explicitly mention when to use alternatives like get_scheduled_task_status or list_scheduled_tasks. It is clear but lacks explicit exclusions or context.

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

get_scheduled_task_statusA
Read-only

Retrieve status for a given scheduled task. Returns aggregated status by default; set detailed=true to get per-device status breakdown. WARNING: detailed=true does NOT accept DEVICE-level task IDs — only SYSTEM and CUSTOMER level. Use the parent task ID instead. Task hierarchy levels can be navigated via parentId.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe scheduled task ID
detailedNoIf true, returns per-device status details instead of the aggregated summary

TDQS

A4.6/5.0
Behavior4/5

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

Annotations (readOnlyHint=true, destructiveHint=false) already indicate safe read operation. Description adds specific behavioral constraint that detailed=true only works for SYSTEM and CUSTOMER-level tasks, not DEVICE-level, and directs to parentId for navigation.

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 sentences, highly efficient: purpose, default vs. detailed mode, critical warning. No filler, front-loaded with primary function.

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?

No output schema, but description clearly indicates return is aggregated status or per-device breakdown. Mentions task hierarchy and parentId navigation, sufficient for agent to invoke correctly.

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

Parameters5/5

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

Schema coverage is 100%, but description enriches both parameters: 'detailed' explained as returning per-device breakdown, 'taskId' restricted to parent IDs for detailed mode. Adds meaning beyond 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?

Clear verb+resource: 'Retrieve status for a given scheduled task.' Distinguishes from sibling 'get_scheduled_task' by focusing on status, and further differentiates aggregated vs. per-device modes.

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 default behavior (aggregated) and option for detailed per-device status via 'detailed=true'. Provides critical warning about task ID level restrictions, guiding correct usage. Could mention alternatives but context is clear.

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

get_server_infoA
Read-only

Return N-central server information. Use level="health" for uptime/start time, level="extra" for system version details, or omit level (default) for API-service version info.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoInformation level: omit for basic API version info, "health" for uptime check, "extra" for system component versions

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 destructiveHint=false. Description adds no contradictory info but doesn't elaborate on rate limits or auth needs beyond what annotations imply.

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, well-structured sentence with no wasted words. Every part adds value.

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 simplicity (one optional parameter, no output schema), the description fully accounts for all needed information.

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

Parameters4/5

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

Schema coverage is 100% with enum descriptions. Description adds contextual meaning like 'uptime/start time' and 'system component versions', providing value beyond 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?

Clearly states the tool returns server information with three distinct levels (health, extra, default), distinguishing it from related tools like get_server_info_authenticated.

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 describes when to use each level parameter (health for uptime, extra for system version, omit for API version), providing clear context for selection.

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

get_server_info_authenticatedB

Retrieve extra server version information using supplied credentials (for third-party system versions).

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUsername for the target system
passwordYesPassword for the target system

TDQS

B3.2/5.0
Behavior1/5

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

The description states 'retrieve', suggesting a read-only operation, but annotations declare readOnlyHint=false, indicating the tool may not be read-only. This is a direct contradiction. The description does not disclose any behavioral traits beyond what the annotation already provides, and the contradiction undermines transparency.

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 filler, but it lacks structure such as bullet points or separate sentences for different aspects. It is efficient for its length, but could be more informative without added verbosity.

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 provides basic context (auth requirement for third-party versions) but omits details about what the 'extra server version information' includes, especially since there is no output schema. Adequate for a simple tool but incomplete given the lack of return value documentation.

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

Parameters3/5

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

Schema description coverage is 100% as both parameters have descriptions. The tool description adds no additional meaning beyond the schema, only mentioning 'using supplied credentials'. Baseline score of 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 the action 'Retrieve' and the resource 'extra server version information', with a specific qualifier 'using supplied credentials (for third-party system versions)'. This distinguishes it from the sibling tool get_server_info which likely does not require authentication.

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 authenticated credentials are needed for third-party system versions, but does not explicitly state when not to use it or contrast with get_server_info. The context is clear but lacks 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.

get_server_timeA
Read-only

Retrieve the N-central server's current time. Useful for detecting clock drift between client and server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/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, indicating a safe read. The description adds value by specifying exactly what is read (the server time), which is not captured by annotations alone.

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 wasted words. Every sentence serves a purpose: stating the function and a typical 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 tool with no parameters and no output schema, the description is complete. It explains what the tool does and why it might be useful, leaving no obvious gaps.

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

Parameters4/5

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

The tool has no parameters, so the baseline is 4. The description does not need to add parameter information and is adequate.

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 N-central server's current time. The verb 'Retrieve' and specific resource 'N-central server's current time' leave no ambiguity. No sibling tool deals with time, so it is well-distinguished.

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 a clear use case: 'detecting clock drift between client and server.' However, it does not explicitly mention when not to use or alternatives, though no alternative time tool exists among siblings.

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

get_service_orgA
Read-only

Retrieve a specific service organization by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
soIdYesThe service organization ID

TDQS

A3.9/5.0
Behavior3/5

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

Adds no behavioral context beyond annotations; readOnlyHint and destructiveHint already convey safety. 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 front-loaded sentence with zero waste.

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 simple read operation with one parameter and no output schema, the description is complete and sufficient.

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?

Parameter soId is fully described in schema (100% coverage); description adds no extra 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 uses clear verb 'Retrieve' and resource 'service organization by ID', distinguishing from list and create siblings.

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

Usage Guidelines3/5

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

Implies usage when you have a specific ID, but lacks explicit guidance on when to use vs alternatives like list_service_orgs.

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

get_siteA
Read-only

Retrieve a specific site by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteIdYesThe site ID

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. Description does not add behavioral context but does not contradict.

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 concise sentence, no verbosity. Front-loaded with essential 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?

Adequate for a simple retrieval tool with readOnly annotations. Could optionally mention return values since no output schema provided.

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

Parameters3/5

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

Schema coverage is 100% with description 'The site ID'. Description adds no new info beyond 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?

Description uses specific verb 'Retrieve' and resource 'site by ID', clearly distinguishing from sibling list_sites.

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 context on when to use or alternatives like list_sites. Lacks any usage guidance.

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

get_software_installersB
Read-only

Retrieve software installer download URLs for a specific customer. Supports filtering by software type and installer type.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID
softwareTypeNoSoftware type filter (e.g. "agent")
installerTypeNoInstaller type filter (e.g. "msi", "exe")

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds no new behavioral traits (e.g., authentication needs, rate limits, or return format). It is consistent but does not extend beyond what annotations imply.

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, and includes filtering details efficiently. No extraneous 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 no output schema, the description adequately states it returns download URLs. It does not specify the format (e.g., list, single URL) or pagination, but this is implied. The annotations cover safety, and the description is sufficient for a simple retrieval 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 description coverage is 100% with each parameter described. The description mentions filtering by software type and installer type, which mirrors the schema. No additional semantics like allowed values or defaults are provided.

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 ('Retrieve software installer download URLs') and the target ('for a specific customer'), with filtering options. It distinguishes from siblings like generate_software_download_link by emphasizing retrieval vs. generation, but does not explicitly compare.

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 (e.g., generate_software_download_link) or prerequisites beyond customerId. The description does not say when not to use it or list excluded scenarios.

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

get_user_roleA
Read-only

Retrieve a specific user role for a given organization unit and user role ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
userRoleIdYesThe user role ID

TDQS

A3.8/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 safety profile is clear. The description adds no new behavioral context 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?

Single sentence, directly states the purpose without any fluff or unnecessary details. Front-loaded and 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?

For a simple retrieval tool, the description is sufficient. It could mention the return type (user role object) but is otherwise complete given the annotations.

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

Parameters3/5

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

Schema covers 100% of parameters with descriptions. The description does not add additional 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?

Description clearly states the action ('Retrieve') and the resource ('a specific user role') along with required context ('for a given organization unit and user role ID'). It distinguishes from siblings like 'create_user_role' or 'list_user_roles'.

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 'list_user_roles'. The purpose is implied but not contrasted with siblings.

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

list_access_groupsA
Read-only

Retrieve access groups for a specific organization unit. Returns one page by default — set all: true to auto-paginate.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).

TDQS

A4/5.0
Behavior4/5

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

The description explains pagination behavior (returns one page by default, auto-paginate with 'all: true'), which goes beyond the annotations (readOnlyHint, destructiveHint, openWorldHint). It does not cover error cases or permissions, but for a read-only list tool, the disclosed behavior is 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?

The description is extremely concise: two sentences, with the first sentence stating the core purpose and the second adding a key behavioral note. No extraneous words, perfectly 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?

Given the schema richness (100% parameter coverage), annotations (read-only, safe), and lack of output schema, the description is nearly complete. It explains pagination, which is essential for understanding the tool's behavior. It could mention return format, but for a list tool the return is generally list of access groups, which is intuitive.

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 100% description coverage, with detailed explanations for each parameter (e.g., 'select' describes FIQL syntax). The tool description adds no additional parameter context beyond the schema, so a baseline score of 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 the action (Retrieve), the resource (access groups), and the scope (for a specific organization unit). It also highlights the critical pagination behavior, distinguishing it from sibling tools like 'get_access_group' which fetches a single group.

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 implicitly indicates use for listing access groups by org unit, but it does not explicitly compare to alternatives (e.g., 'get_access_group' for single items) or mention when not to use it (e.g., if the org unit is large and auto-pagination is costly). No 'when-to-use' or 'when-not-to-use' 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_active_issuesA
Read-only

List active issues for an organization unit. Returns CSV or JSON. KNOWN N-CENTRAL BUG: _extra.deviceClassValue and _extra.deviceClassLabel are always null. The underlying endpoint only supports customer/site org units, not service-orgs.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description adds value with the known N-CENTRAL BUG about null fields and the endpoint limitation. This provides context beyond the annotations without contradicting them.

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 two sentences, with the first sentence stating the core purpose and the second providing critical details about the bug and endpoint restrictions. Every sentence earns its place; no extraneous 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 simplicity (two parameters, no output schema, no nested objects), the description covers purpose, output formats, a known bug, and a usage constraint. It lacks a definition of 'active issues' but is otherwise sufficient for a read-only list 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 100% schema description coverage, the input schema already thoroughly describes both parameters. The description's note about 'Returns CSV or JSON' is redundant, and the bug information pertains to output fields rather than parameters. Thus, the description adds minimal 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 'List active issues for an organization unit,' specifying the verb and resource. It distinguishes from sibling tools which list other entities like devices or users, making the tool's purpose 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 Guidelines4/5

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

The description explicitly notes that 'the underlying endpoint only supports customer/site org units, not service-orgs,' providing a clear constraint on when to use the tool. However, it does not mention alternative tools or scenarios where this tool should not be used.

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

list_all_usersA
Read-only

Retrieve a global list of all users in N-central (not scoped by org unit). Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the tool as read-only and non-destructive. The description adds value by explaining auto-pagination behavior and output format options (csv/json). 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, front-loaded with purpose, followed by key usage details. No extraneous information; every sentence is necessary.

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 lacks details about the return structure (e.g., fields in the user objects or CSV columns). Although it mentions output formats, without an output schema, the description should outline what is returned. This is a gap for a list 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?

Input schema coverage is 100% with descriptive parameter details. The description adds minor context (e.g., 'use format csv for spreadsheet-ready output'), but does not significantly enhance meaning beyond what the schema already 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 identifies the tool's action ('Retrieve') and resource ('global list of all users') and specifies it is not scoped by org unit. This distinguishes it from siblings like list_users (likely scoped) and report_all_users_by_so (a report).

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 default behavior (one page) and how to change it (all: true for auto-pagination, format: 'csv'). It does not explicitly state when not to use this tool or name alternatives, but the advantage of pagination vs. full list is implied.

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

list_customersA
Read-only

Retrieve a list of customers. If soId is provided, returns only customers under that service organization; otherwise returns all customers. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
soIdNoOptional service organization ID to filter customers by SO
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.6/5.0
Behavior5/5

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

The description adds significant value beyond annotations (readOnlyHint=true, destructiveHint=false, openWorldHint=true) by explaining the default single-page behavior, auto-pagination trigger, and format options. It aligns with the read-only nature and provides actionable behavioral details.

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 concise sentences, each providing essential information without redundancy. The main purpose is front-loaded, and every sentence contributes to understanding the tool's behavior.

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 covers the key behavioral aspects: filtering, pagination, and output format. While it doesn't detail the return structure, the richness of the description compensates for the missing output schema, making it complete for common use cases.

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 schema already covers all parameters with descriptions. The description adds contextual meaning for 'soId' (filter vs all customers), 'all' (auto-paginate behavior), and 'format' (spreadsheet-ready output), which supplements the schema's technical 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 clearly states the tool retrieves a list of customers, with specific behavior for filtering by soId, default pagination, auto-pagination via 'all:true', and output format. This distinguishes it from sibling tools like list_devices or list_service_orgs.

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 'all:true' for complete results and when to omit for a single page (cheaper, safer). It provides clear context for pagination and filtering, but does not explicitly compare to sibling tools or mention when not to use this tool.

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

list_custom_psa_ticketsA
Read-only

List Custom PSA tickets. Custom PSA only — managed PSA services are not supported by this endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description adds value by clarifying the scope limitation (custom PSA only). No additional behavioral traits like pagination or prerequisites are disclosed, but the tool is simple with no parameters.

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 unnecessary words. The key information (action, resource, limitation) is front-loaded in the first sentence.

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 no parameters and no output schema, the description is sufficiently complete. It states what it does and its boundary. Could mention that results may be empty, but that is implied.

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 no parameters, so schema coverage is 100% by default. The description does not need to add parameter information. Baseline score of 4 is appropriate as the description adds no parameter detail but none is required.

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 'List' with resource 'Custom PSA tickets', and immediately distinguishes from managed PSA services. This clearly defines the tool's scope and differentiates it from potential siblings, though no sibling lists any PSA tickets.

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 the tool is for custom PSA only and excludes managed services, providing clear context. However, there is no sibling tool that lists PSA tickets, so no direct alternative is given. Still, the exclusion of managed PSA is helpful guidance.

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

list_device_custom_propertiesA
Read-only

Retrieve all custom properties for a specific device. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A3.8/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, covering safety. The description adds no extra behavioral context (e.g., response size, pagination). It is adequate but does not exceed the minimal bar set 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?

The description is extremely concise: two short sentences with no extraneous words. It front-loads the core purpose and adds only necessary detail. Perfectly structured for an AI agent.

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

Completeness4/5

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

For a simple read-only list tool with no output schema, the description covers the essential scope. It could mention response structure or limitations, but the current text is sufficient given the tool's straightforward nature.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for both parameters. The description adds a concrete example for csv usage, but this is marginal beyond the schema's enumeration and default explanation. 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 the action ('Retrieve all custom properties') and the target ('for a specific device'), distinguishing it from singular get_device_custom_property and listing tools. The format hint is an additional benefit.

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 provides a usage hint for the format parameter but does not explicitly guide when to use this tool versus alternatives like get_device_custom_property or list_org_custom_properties. The name and schema imply the distinction, but explicit guidance is missing.

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

list_device_filtersA
Read-only

Retrieve the list of device filters. Returns one page by default — set all: true to auto-paginate.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewScopeNoView scope for filters
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).

TDQS

A4/5.0
Behavior4/5

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

Annotations already signal readOnlyHint, destructiveHint, and openWorldHint. The description adds important behavioral details: default single-page output, auto-pagination with 'all: true', and the fact that 'select' filters rows (not fields). This goes beyond annotations and clarifies key behaviors.

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 that front-load the purpose and immediately follow with the most critical behavioral distinction (pagination). Every word earns its place 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 list tool with no output schema, the description covers the essential aspects: what it retrieves and how pagination works. It could mention the return format or that results are arrays of filter objects, but the close alignment with the schema and annotations makes it adequately 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 100% with detailed parameter descriptions. The tool description adds some context (pagination defaults, 'all' behavior) but largely repeats or summarizes what's already in the schema. It does not add significant new 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 verb 'Retrieve' and the resource 'list of device filters', with no ambiguity. It also adds key pagination behavior. The name and description together distinguish this tool from sibling list tools like list_devices or list_device_notes.

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 provides helpful usage guidance on pagination (default single page vs. auto-paginate with 'all: true'), but does not explicitly state when to use this tool over alternative siblings or when not to use it. The context is implied by the name and sibling list.

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

list_device_notesA
Read-only

Retrieve all notes attached to a specific device.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID

TDQS

A3.8/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, confirming safe read operation. Description adds no further behavioral details beyond those 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?

Single sentence of 8 words, front-loaded with verb and resource. 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?

Tool is simple with one parameter and no output schema. Description adequately conveys purpose, though it could mention return format (list of notes) for full completeness.

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

Parameters3/5

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

Schema description coverage is 100% (deviceId described as 'The device ID'). Description does not add any extra meaning beyond the schema, meriting baseline score.

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 'retrieve' and resource 'all notes attached to a specific device', clearly distinguishing from siblings like add_device_note and update_device_note.

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 or when-not-to-use guidance. The description is self-explanatory for a simple list operation, but it does not mention alternative tools 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.

list_devicesA
Read-only

Retrieve the list of all devices from N-central for the logged-in user. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterIdNoFilter ID to apply to device list
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds behavioral context: default single-page return, auto-pagination behavior, and format option. It does not contradict annotations and provides useful behavioral cues.

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 main purpose. Every sentence adds relevant information with no redundancy. Highly 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 tool has 8 optional parameters and no output schema, the description explains key behaviors (pagination, format) and the overall action. It could mention the return structure but is otherwise sufficient for the agent to select and use the tool.

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

Parameters4/5

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

Schema coverage is 100% with detailed descriptions for all 8 parameters. The description adds value by explaining the default behavior and suggesting when to use 'all' and 'format' parameters. Baseline is 3 due to high coverage, but the additional guidance raises it to 4.

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 'Retrieve' and resource 'list of all devices from N-central for the logged-in user'. It distinguishes from sibling list_* tools by specifying the device scope. The additional pagination and format guidance further clarify the purpose.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use pagination (all: true for full list vs. single page) and output format (csv for spreadsheet-ready). It does not mention exclusions or alternatives among siblings, but 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.

list_devices_by_org_unitA
Read-only

Retrieve the list of devices belonging to a specific organization unit. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. Description adds default pagination behavior (one page) and how all:true changes behavior (ignores pageNumber/pageSize), which is valuable 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: the first states purpose, the second gives two actionable tips. 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?

No output schema exists, but description covers pagination and format. Lacks details on returned fields, but tool is straightforward and annotations are sufficient.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds extra meaning: explains behavior of 'all' parameter, format defaults, and provides example for 'select'. This enhances 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?

Description clearly states 'Retrieve the list of devices belonging to a specific organization unit'. It distinguishes from siblings like list_devices (all devices) and list_org_unit_children (org units).

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 (one page vs all:true) and format (csv for spreadsheet-ready). Does not explicitly mention alternatives but implies usage context.

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

list_device_tasksA
Read-only

Retrieve scheduled tasks for a specific device. Returns task ID, task name, and status. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only and non-destructive behavior; description adds useful behavioral details about return fields (ID, name, status) and 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?

Three concise sentences, front-loaded with purpose, no superfluous content.

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?

No output schema exists but description adequately conveys return fields and key behavioral aspects (pagination, format), making it complete for a list 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 covers 100% of parameters; description adds context for 'all' and 'format' parameters but does not significantly surpass schema documentation.

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

Purpose5/5

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

Description clearly uses verb 'Retrieve' and resource 'scheduled tasks for a specific device', and distinguishes from sibling tools like 'list_scheduled_tasks' by specifying device-specific scope.

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 on pagination (all: true) and output format (format: csv), but lacks direct comparison to alternative tools or scenarios 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.

list_job_statusesA
Read-only

List job statuses for an organization unit. Returns CSV or JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate read-only and non-destructive. The description adds that output can be CSV or JSON, but does not explain pagination, rate limits, or output structure. It provides minimal extra context beyond annotations and schema.

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, front-loaded sentence with no extraneous words. It conveys the core functionality efficiently.

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 two parameters and no output schema, the description covers the essential purpose and format options. It lacks details on the output structure, which is a minor gap.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The tool description adds no parameter-specific information beyond what the schema already 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 explicitly states the tool lists job statuses for an organization unit. 'List job statuses' is a specific verb+resource, and it distinguishes from sibling list tools by its unique resource.

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, exclusions, or comparison to other tools.

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

list_org_custom_propertiesA
Read-only

Retrieve the list of custom properties for an organization unit. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

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 and destructiveHint=false, confirming safety. The description adds behavioral context about pagination (default vs auto-paginate) and format options, which are beyond the annotations. 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 two sentences long, front-loaded with the core purpose, and no redundant or unnecessary words. It is an example of 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?

Given 8 parameters and no output schema, the description introduces pagination and format but omits any detail about the return structure or the nature of custom properties. It is adequate but not thorough, leaving gaps for a 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?

With 100% schema description coverage, the schema already documents all parameters thoroughly. The description briefly re-mentions 'all' and 'format' with usage tips, but adds minimal new semantic value beyond what is in the schema.

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

Purpose4/5

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

The description clearly states the tool retrieves custom properties for an organization unit, using a specific verb (Retrieve) and resource. It is unambiguous but does not explicitly differentiate from sibling tools like list_device_custom_properties, though the resource scope (org unit) provides implicit 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?

The description provides guidance on pagination (default one page, use 'all' for auto-paginate) and output format (csv option). However, it lacks explicit when-to-use or when-not-to-use guidance relative to alternatives, leaving tool selection to the agent.

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

list_org_unit_childrenA
Read-only

Retrieve a list of all child organization units for a given org unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe parent organization unit ID

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 destructiveHint=false, so the description's 'retrieve a list' is consistent but adds no extra behavioral traits beyond scope clarification. Missing details like handling of invalid orgUnitId 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 a single 12-word sentence that precisely conveys the tool's function with no unnecessary words 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 tool is simple (1 param, read-only, no output schema), but the description omits details about the response structure (e.g., whether it returns full org unit objects or just IDs), and does not mention pagination or error cases. Adequate but minimal.

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 already provides a clear description for the only parameter ('The parent organization unit ID'), and the tool description repeats this idea. With 100% schema coverage, the description adds no additional meaning beyond what the schema provides, meeting the baseline for this dimension.

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 'retrieve', the resource 'child organization units', and the condition 'for a given org unit', distinguishing it from siblings like get_org_unit and list_org_units.

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_org_units or get_org_unit. The description only states what it does without usage context or exclusions.

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

list_org_unitsA
Read-only

Retrieve a list of all organization units. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false, so the description's 'Retrieve' aligns. It adds important behavioral details beyond annotations: default single-page return, auto-pagination with all:true, and format options. 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 concise at three sentences, with the main purpose front-loaded. Every sentence adds essential information (default behavior, auto-pagination, format option), and there is no wasted text.

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 7 parameters and no output schema, the description covers key usage points: pagination control, filtering via select, and output format. It lacks detail on sortBy/sortOrder and the exact return structure, but these are adequately described in the schema. Overall, it provides sufficient context for correct invocation.

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

Parameters4/5

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

Schema description coverage is 100%, baseline 3. The description adds value by explaining the all parameter's effect on pagination, the format parameter's CSV use case, and the select parameter's filtering behavior with an example. This enhances understanding 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 a list of all organization units. It distinguishes from sibling tools like list_org_unit_children by focusing on the full list, and the parameter details further clarify its 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 provides guidance on pagination and output format (csv vs json), which helps in parameter selection. However, it does not explicitly state when to use this tool over other list tools (e.g., list_org_unit_children), leaving the agent to infer based on the tool name.

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

list_psa_companiesB
Read-only

List Standard PSA companies associated with a customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

TDQS

B3.3/5.0
Behavior2/5

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

The description adds no behavioral context beyond what annotations already provide. Annotations indicate readOnlyHint=true and destructiveHint=false, but the description does not disclose any additional traits like pagination, sorting, or data currency.

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 unnecessary words, making it 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?

Given the tool's simplicity (one parameter, no output schema, annotations present), the description is minimally adequate. However, it lacks details about return structure or any limitations, leaving room for improvement.

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

Parameters3/5

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

Schema coverage is 100% with the parameter customerId already described as 'The customer ID'. The description does not add further meaning, so baseline score of 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 the action ('List'), the resource ('Standard PSA companies'), and the association ('associated with a customer'). It effectively distinguishes from sibling tools like list_psa_company_contacts and list_psa_company_sites by specifying 'Standard PSA companies'.

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 list_psa_customer_mappings or other list tools. There is no mention of prerequisites, contexts, or exclusions.

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

list_psa_company_contactsB
Read-only

List PSA company contacts for a customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID
psaCompanyIdYesThe PSA company ID

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds no extra behavioral context beyond stating it lists contacts. No details on return format, pagination, or edge cases are provided.

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, front-loading the key action. However, it could be slightly more informative without losing 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?

Given the absence of output schema, the description should clarify what is returned (e.g., list of contact objects) and the relationship between customerId and psaCompanyId. It lacks these details, making it incomplete for agent invocation.

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

Parameters3/5

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

Schema descriptions cover both parameters (customerId and psaCompanyId) at 100% coverage, so the description does not need to add meaning. It adds no additional insight 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 action (List), the resource (PSA company contacts), and the scope (for a customer). It distinguishes from sibling tools like list_psa_companies and list_psa_company_sites.

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 list_psa_company_sites or list_psa_companies. There are no when-to-use or when-not-to-use instructions.

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

list_psa_company_sitesA
Read-only

List PSA company sites for a customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID
psaCompanyIdYesThe PSA company ID

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, making the tool's safety profile clear. The description adds no extra behavioral context beyond the purpose, so it adds value but not significantly.

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 unnecessary words, perfectly sized for the tool's simplicity.

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 (2 params, no nested objects) and annotations, the description covers basic usage but omits return type information, which is lacking since there is no output schema.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters have descriptions. The description adds minimal additional meaning ('for a customer' aligns with customerId), but baseline 3 is appropriate since schema does the heavy lifting.

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 ('List') and resource ('PSA company sites'), clearly distinguishing from siblings like list_psa_companies (lists companies) and list_psa_company_contacts (lists contacts).

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 sites for a customer but provides no explicit when-to-use or when-not-to-use guidance, nor does it reference alternatives despite sibling tools being available.

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

list_psa_customer_mappingsA
Read-only

List all Standard PSA mappings for a customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

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, so the description adds no new behavioral information. It correctly implies a read operation but does not disclose any additional traits (e.g., pagination, 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, clear sentence with no extraneous words. It is appropriately front-loaded and concise.

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 no output schema, the description should explain what is returned (e.g., fields of a mapping). It only says 'list all Standard PSA mappings' without describing the output structure or any pagination, leaving the agent without sufficient context.

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

Parameters3/5

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

The input schema has 100% description coverage for the single parameter 'customerId' with a basic description. The tool description does not add any extra semantic meaning, such as format or example, so it meets the baseline.

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 'List', the resource 'Standard PSA mappings', and the scope 'for a customer'. It distinguishes from sibling tool 'get_psa_customer_mapping' by using 'all' and 'list'.

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

Usage Guidelines3/5

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

The description implies use when listing all mappings for a customer, but does not explicitly differentiate from 'get_psa_customer_mapping' (singular) or 'update_psa_customer_mappings'. No when-not-to-use 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_scheduled_tasksA
Read-only

List all scheduled tasks across the N-central environment. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already indicate read-only and non-destructive behavior. Description adds key behavioral details: default pagination behavior and how to auto-paginate or switch output format. 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?

Three sentences with no fluff. Opens with purpose, then proceeds to pagination and format tips. 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?

For a list tool with no output schema, the description explains pagination defaults and output options adequately. Could mention default output format (JSON) or sorting, but schema covers those. Annotations supply safety context. Sufficient for effective 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?

Schema covers all parameters with descriptions (100% coverage). Description enhances understanding of key parameters like 'all' (auto-paginate) and 'format' (spreadsheet-ready), adding value beyond the raw 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?

Description clearly states verb 'list' and resource 'scheduled tasks' with scope 'across the N-central environment'. It is specific and distinguishes from sibling tools like list_devices or list_customers by targeting a unique resource.

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 actionable tips on pagination (default one page, use all:true for full results) and format (use format:csv for spreadsheet output). Does not explicitly state when to use this tool over alternatives, but given it's the only scheduled task list, 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.

list_service_orgsA
Read-only

Retrieve a list of all service organizations. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint. The description adds useful behavioral details: default single page, auto-pagination behavior, format support, and nuanced explanation of the select parameter (filters rows, not fields) with syntax and error handling. 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: one sentence for purpose, then two actionable tips. Every sentence earns its place with no filler. Front-loaded with the core verb 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?

For a list tool with 7 optional parameters and no output schema, the description covers the key behaviors (pagination, format, select semantics) adequately. However, it omits the structure of the return value (e.g., JSON array), which could be helpful for an agent.

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

Parameters5/5

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

Schema coverage is 100%, providing baseline 3. The description adds significant value by clarifying the misleading 'select' parameter (filtering rows, not picking fields), giving syntax examples, warning about unsupported fields, and explaining that all=true overrides pageNumber/pageSize. This goes well 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 'Retrieve a list of all service organizations' with a specific verb and resource. Among sibling tools like list_customers and list_devices, it uniquely identifies the target as service organizations.

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 context for using parameters like all and format, indicating when to auto-paginate or get CSV output. However, it does not explicitly differentiate from get_service_org or state when not to use this tool.

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

list_sitesA
Read-only

Retrieve a list of sites. If customerId is provided, returns only sites under that customer; otherwise returns all sites. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdNoOptional customer ID to filter sites by customer
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.4/5.0
Behavior5/5

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

Discloses key behaviors beyond annotations: pagination defaults, auto-pagination behavior, that select filters rows despite its name, and format defaults. Annotations already indicate read-only, no destruction, and open-world, making the description additive and consistent.

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 sentences, each providing essential information without redundancy. Front-loaded with main purpose, then details. No wasted words.

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?

Despite no output schema, the description covers all necessary context: pagination, filtering, format options, and customer scope. For a straightforward list tool, this is complete.

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

Parameters4/5

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

Schema descriptions cover 100% of parameters; the description adds extra context by clarifying that select filters rows (not picks fields) and explaining auto-pagination behavior. This adds value beyond the schema.

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

Purpose4/5

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

The description clearly states the tool retrieves a list of sites with optional customer filtering. While it is specific to sites, it does not explicitly distinguish from sibling list tools (e.g., list_customers, list_devices), which slightly reduces clarity.

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 on when to use all:true for complete results versus a single page for cheaper/safer queries, and mentions format options. Lacks explicit when-not-to-use 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.

list_user_rolesA
Read-only

Retrieve a list of user roles for a given organization unit. Returns one page by default — set all: true to auto-paginate.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, destructiveHint=false, which are consistent. Description adds useful behavioral detail about default single-page return and auto-pagination via 'all' parameter, justifying a score above baseline.

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 purpose, then key behavioral note. No wasted words, structure is optimal.

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?

Adequate for a read-only list retrieval tool with good annotations and schema coverage. Lacks a note on return structure, but not critical given the tool's simplicity and sibling context.

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

Parameters3/5

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

Schema description coverage is 100% (all parameters have descriptions). The tool description repeats the pagination note but adds no new meaning beyond what's already in the schema. Baseline of 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?

Description clearly states the action ('Retrieve a list of user roles') and the target resource ('for a given organization unit'). This distinguishes it from sibling tools like 'get_user_role' (singular) and 'create_user_role'.

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 clear guidance on pagination: returns one page by default, and 'all: true' for complete results. Implicitly differentiates from 'get_user_role' but does not explicitly mention when not to use this tool.

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

list_usersA
Read-only

Retrieve the list of users for a specific organization unit. Returns one page by default — set all: true to auto-paginate. Use format: "csv" for spreadsheet-ready output.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
pageNumberNoPage number (starts at 1)
pageSizeNoNumber of items per page (max 200)
selectNoFilter expression (FIQL/RSQL predicate) — despite the "select" name, this filters rows, it does NOT pick fields. Syntax: `field==value`, join predicates with `;` for AND. Example: `soId==50` returns only the SO with that ID. Not all fields are queryable; unsupported ones error with "Field not found: X".
sortByNoField to sort results by
sortOrderNoSort order: ASC, asc, ascending, natural, desc, descending, reverse
allNoAuto-paginate: fetch every page and return the combined list. Ignores pageNumber/pageSize. Use for complete results; omit to return a single page (cheaper, safer for large environments).
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readonly and non-destructive behavior. Description adds pagination behavior and format options, which are valuable 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.

Conciseness5/5

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

Two sentences, front-loaded with core purpose, no wasted words. Every sentence provides actionable guidance.

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

Completeness4/5

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

No output schema, but tool is simple. Covers key usage aspects (pagination, format, required org unit). Lacks explicit mention of returned fields, but sufficient for a list tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by specifying default pagination (one page) and format relevance, which are not in schema. Reinforces usage of 'all' and 'format' 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 the list of users for a specific organization unit' with a specific verb and resource. It doesn't explicitly distinguish from sibling list_all_users, but the purpose is well-defined.

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 (default one page vs auto-paginate with all: true) and output format (csv for spreadsheet), but doesn't discuss when to use list_users vs list_all_users.

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

logoutA

Log out the current N-central API session, invalidating the access and refresh tokens. The next tool call will trigger a fresh JWT exchange.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Description explicitly states that tokens are invalidated and the next call triggers a fresh JWT exchange, providing behavioral context beyond the annotations (which only hint via openWorldHint). 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 efficient sentences with key information front-loaded. No wasted words.

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?

The description explains the effect and what happens next, which is complete for a logout tool with no output schema. No missing information.

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, schema coverage is 100%, so the description adds nothing about parameters but also doesn't need to. Baseline 4 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?

Clearly states the action (log out), the resource (current N-central API session), and the effect (invalidating tokens). Distinguishes from sibling tools which are all other API operations.

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?

Implicitly clear when to use (when ending a session). No explicit when-not or alternatives, but the context is straightforward and the tool name plus description suffice for an AI agent.

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

patch_device_lifecycleA

Partially update asset lifecycle/warranty information for a device (PATCH — only provided fields are modified).

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID
warrantyExpiryDateNoWarranty expiry date
leaseExpiryDateNoLease expiry date
expectedReplacementDateNoExpected replacement date
purchaseDateNoPurchase date
costNoAsset cost
locationNoAsset location
assetTagNoAsset tag
descriptionNoAsset description

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false. Description adds partial update behavior, which is consistent and adds marginal value. No contradictions, but minimal extra 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?

Single, well-structured sentence that front-loads verb and resource. 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?

Covers purpose and partial update behavior. With 9 parameters and no output schema, description could mention return value or success indicator, but overall it's adequate given annotations and schema coverage.

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

Parameters4/5

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

Schema covers all 9 parameters (100% coverage). Description adds crucial semantic: 'only provided fields are modified', clarifying partial update behavior which the schema alone doesn't convey.

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 'Partially update' and resource 'asset lifecycle/warranty information for a device'. It distinguishes from full update by mentioning PATCH and partial modification. No ambiguity.

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 provides clear context for partial updates but does not explicitly contrast with sibling tools like update_device_lifecycle or get_device_lifecycle. The PATCH mention implies when to use, but explicit alternatives would improve.

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

report_all_users_by_soA
Read-only

Generate a complete deduplicated user report for all customers under a service org. Fetches users from the SO itself and each customer concurrently, then deduplicates by userId. Returns CSV or JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
soIdYesThe service organization ID
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.
concurrencyNoConcurrent API calls (1-10, default 5)

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral details: concurrent fetching from SO and customers, deduplication by userId, and return format (CSV/JSON). 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 key information (deduplicated, concurrent, return format). Every sentence is necessary and contributes to understanding. 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 the tool's complexity (3 parameters, no output schema, annotations covering safety), the description covers purpose, behavior, and return format. It lacks details about the output structure (e.g., field names) which is acceptable without output schema. The description is sufficiently complete for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described in the input schema. The description does not add additional meaning beyond what the schema already provides, so the baseline score of 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 it generates a deduplicated user report for all customers under a service org, specifying concurrent fetching and deduplication by userId. It distinguishes from sibling tools like list_all_users and list_users by focusing on deduplication and SO-wide 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 use when a comprehensive deduplicated report across an SO is needed, but it does not explicitly state when to use this tool versus alternatives or provide when-not-to-use guidance. Sibling tools like list_all_users might serve simpler needs, but this is not clarified.

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

report_customer_site_summaryA
Read-only

Generate a summary report: all customers with their sites, device counts. Correlates data across customers, sites, and devices into one table. Returns CSV or JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, and the description adds that the tool correlates data across entities and returns CSV or JSON. No contradiction; the description enriches the safety profile with behavioral details about data correlation and output 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?

Two sentences, front-loaded with the action and scope. Every sentence adds value: purpose, correlation detail, output options. No redundancy or filler.

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 one optional parameter, no output schema, and annotations covering safety, the description fully explains what the tool does, the data it correlates, and its output formats. It is complete for this simple report 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?

The single 'format' parameter has a full schema description (100% coverage). The tool description echoes 'Returns CSV or JSON' but does not add new parameter-specific details beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Generate', the resource 'summary report', and the specific scope: 'all customers with their sites, device counts'. It distinguishes from sibling report tools like report_devices_bulk or report_org_hierarchy by focusing on customer-site-device correlation.

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 generating a cross-data summary but does not explicitly state when to use this tool versus alternatives (e.g., report_org_hierarchy for org structure). No when-not-to-use guidance is provided.

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

report_devices_bulkA
Read-only

Fan out a per-device API call across all devices in an org unit. dataType selects which endpoint to call: "custom-properties", "assets" (probes return 404 and are skipped), or "monitor-status". Concurrency defaults are per-endpoint safe (3-5); override with concurrency. Returns CSV by default (set format: "json" to override).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID to scan all devices from
dataTypeYesWhich per-device endpoint to call
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.
concurrencyNoConcurrent API calls (1-10). Default varies by dataType.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds behavioral details: for 'assets,' probes return 404 and are skipped; concurrency defaults are per-endpoint safe (3-5); returns CSV by default. These go beyond annotations without contradicting them.

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 sentences, each serving a clear purpose: purpose, parameter behavior, and output/concurrency. No fluff, 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?

Given no output schema, the description explains the default return format (CSV). It covers all parameters with relevant context. Missing details like error handling or empty results, but still adequately complete for the tool's complexity.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the meaning of dataType enum values (e.g., 'probes return 404 and are skipped' for assets) and that concurrency defaults vary by dataType, which is not in 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 'Fan out a per-device API call across all devices in an org unit,' specifying the verb and resource. This distinguishes it from sibling tools like report_devices_by_so, which is for listing devices, not per-device bulk operations.

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: for a per-device call across an org unit. It provides context on dataType choices and default behavior (e.g., probes skipped for assets). However, it does not explicitly mention when not to use it or contrast with alternatives like report_devices_by_so.

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

report_devices_by_soA
Read-only

Generate a full device report for all devices under a specific service org. Fetches all devices and filters by soId field. Returns CSV or JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
soIdYesThe service organization ID
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

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 destructiveHint=false, so the description adds limited behavioral context. It mentions fetching all devices and filtering by soId, but does not disclose pagination, performance implications, or what 'full device report' entails. With annotations covering safety, a score of 3 is appropriate.

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

Conciseness5/5

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

Two sentences, no wasted words. Front-loaded with main purpose and includes key details about filtering and output format.

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?

Without an output schema, the description should clarify what 'full device report' includes. It is vague and does not differentiate from list_devices or other report tools. Given low complexity, missing details about the report content reduce completeness to adequate but not excellent.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds that the tool 'filters by soId field' and 'returns CSV or JSON', which aligns with schema but does not add deeper semantic meaning beyond what is already in parameter 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 tool generates a full device report for all devices under a specific service org, using verb 'Generate' and resource 'device report'. It distinguishes from siblings like list_devices by specifying 'full device report' and output formats.

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 such as list_devices, list_devices_by_org_unit, or report_devices_bulk. The description does not mention when not to use it or provide context for selection.

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

report_org_hierarchyA
Read-only

Generate a flat CSV/JSON of the full Service Org → Customer → Site hierarchy with IDs, names, contacts, and addresses. Returns CSV or JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: "csv" or "json". Default varies by tool — list_* default to json; report_* default to csv.

TDQS

A3.8/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's job is to add behavioral context. It adds that the output is flat CSV/JSON with specific fields, but does not disclose potential pagination, result size limits, or scope implications beyond the openWorldHint.

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 action and outcome. Every word adds value with no redundancy or filler.

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

Completeness4/5

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

Given the low complexity (one optional parameter, no output schema, annotations covering safety), the description is largely complete. It specifies the hierarchy levels and data fields, though it could mention the flat structure's column names or results limits. It is almost fully 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?

Schema coverage is 100% (one parameter with enum and description). The tool description merely repeats 'Returns CSV or JSON' without adding new information beyond the schema's parameter description. 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 the action ('Generate'), the resource ('full Service Org → Customer → Site hierarchy'), and the data included (IDs, names, contacts, addresses). This distinguishes it from sibling report tools like 'report_customer_site_summary' and 'report_devices_by_so'.

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 say when to use this tool versus alternatives, such as list_* tools for partial data. The context of returning a flat hierarchy is implicit, but no exclusions or alternative recommendations are provided.

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

update_device_custom_propertyA

Update a custom property value on a specific device. The N-central PUT endpoint requires propertyName and propertyType — pass the existing values (use get_device_custom_property if unsure). propertyType must match the property definition (HTML_LINK, TEXT, DATE, ENUMERATED, or PASSWORD).

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID
propertyIdYesThe custom property ID
propertyNameYesThe property name (must match the existing property definition)
propertyTypeYesProperty type
valueYesThe property value to set
enumeratedValueListNoAllowed values if propertyType is ENUMERATED

TDQS

A4.6/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it notes the requirement for propertyType to match the definition and lists valid types, which aids correct invocation. Annotations already indicate non-read-only, non-destructive, open-world behavior, so 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 sentences, no fluff. First sentence states purpose; second provides critical usage details. Perfectly 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?

The description adequately covers the tool's purpose and requirements. No output schema exists, but the simplicity of the operation and the availability of 'get_device_custom_property' as a companion tool make the description sufficient for an agent.

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 100% schema coverage, baseline is 3. The description adds practical guidance: emphasizing that propertyName and propertyType must match existing definitions, and hints at enumeratedValueList for ENUMERATED type, providing extra 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 states 'Update a custom property value on a specific device.' This is a specific verb+resource, clearly distinguishing it from siblings like 'get_device_custom_property'.

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 advises to use 'get_device_custom_property' if unsure about existing values, providing an alternative tool and 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.

update_device_lifecycleA

Replace the asset lifecycle/warranty information for a device (PUT — all required fields must be provided).

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID
warrantyExpiryDateYesWarranty expiry date (ISO-8601 or YYYY-MM-DD)
leaseExpiryDateYesLease expiry date
expectedReplacementDateYesExpected replacement date
purchaseDateYesPurchase date
costYesAsset cost
locationYesAsset location
assetTagYesAsset tag
descriptionYesAsset description

TDQS

A3.9/5.0
Behavior3/5

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

The description adds the PUT method and the requirement for all fields, but annotations already indicate readOnlyHint=false and destructiveHint=false. The 'replace' wording could imply data overwrite, but annotations say non-destructive. No additional behavior (e.g., auth, limits) disclosed.

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 that efficiently conveys the core operation and constraints. It is front-loaded with the verb 'Replace' and clearly states the method and requirement.

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 operation type and field requirements, it lacks information about return values, error behavior, or prerequisites. Since there is no output schema, return details would be beneficial.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema sufficiently documents each parameter. The description adds no new parameter details beyond the existing schema descriptions, such as format or constraints.

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 replaces asset lifecycle/warranty information, specifying it's a PUT operation that requires all fields. This distinguishes it from sibling 'patch_device_lifecycle' which does partial updates, and from 'get_device_lifecycle' which retrieves data.

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 indicates it's a full replacement (PUT) and that all required fields must be provided, which implies it should be used when a complete update is needed. However, it does not explicitly contrast with the patch alternative or mention 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_device_noteA

Update an existing note on a device by note ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID
noteIdYesThe note ID to update
textYesNew note content

TDQS

A3.8/5.0
Behavior3/5

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

Annotations indicate a write operation (readOnlyHint=false) with no destruction, and the description confirms mutation. However, no additional behavioral details (e.g., whether text is replaced or appended, required permissions) are given beyond what annotations already 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, clear sentence that directly states the function. No unnecessary words, and the essential information is 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?

For a simple update operation with three required parameters and no output schema, the description adequately covers the main purpose. It could optionally mention that the note must exist or that only the text field is updated, but these are minor 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?

Input schema has full coverage (100%) for all three parameters, each with a meaningful description. The tool description adds no extra semantic value beyond what the schema already conveys.

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 identifies the action ('Update') and the specific resource ('existing note on a device by note ID'), making it distinct from sibling tools like add_device_note.

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 add_device_note or add_notes_bulk. The purpose implies usage for updating, but no context about prerequisites or conditions is provided.

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

update_maintenance_windowsA

Modify existing device patch maintenance windows by their ScheduleId (included in each window object).

ParametersJSON Schema
NameRequiredDescriptionDefault
maintenanceWindowsYesArray of MaintenanceWindowRequest objects (must include scheduleId)

TDQS

A4/5.0
Behavior3/5

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

Annotations indicate a write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds 'modify' but does not explain update behavior (e.g., overwrite vs. partial update) or side effects. With annotations present, the bar is lower, but additional behavioral context is missing.

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 that is concise, front-loaded with the action, and contains no superfluous 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 simple tool with one required parameter and no output schema, the description covers the essential purpose and a key requirement. However, it does not detail the structure of MaintenanceWindowRequest, which may be needed for correct invocation.

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 schema describes the parameter as 'Array of MaintenanceWindowRequest objects (must include scheduleId)'. The description reinforces this requirement, adding meaning beyond the basic schema structure.

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 'modify' and the resource 'existing device patch maintenance windows', specifying the identifier 'ScheduleId'. This distinguishes it from sibling tools like 'create_maintenance_windows' and 'get_maintenance_windows'.

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 over alternatives. It implies that one must first obtain existing window ScheduleIds (e.g., via get_maintenance_windows), but provides no direct guidance or when-not-to-use conditions.

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

update_org_custom_property_defaultA

Update the default value of an org-unit custom property and optionally propagate the change down the org hierarchy. propagationType controls which levels receive the update.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID that owns the property
propertyIdNoThe custom property ID
propertyNameNoThe property name
defaultValueNoThe new default value
propagateNoWhether to propagate changes to children org units
propagationTypeNoPropagation strategy
selectedOrgUnitIdsNoSpecific org unit IDs the property applies to
enumeratedValueListNoAllowed values if the property type is ENUMERATED

TDQS

A3.9/5.0
Behavior3/5

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

The description adds behavioral context about propagation, but does not disclose side effects (e.g., whether existing child property values are overwritten), permission requirements, or the nature of the update (e.g., synchronous vs. async). Annotations only indicate it is not read-only and not destructive.

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 that first state the core purpose and optional propagation, then clarify the role of propagationType. No unnecessary words 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?

Given the complexity (8 parameters, no output schema), the description covers the basic operation but lacks details on return value, error scenarios, or what happens to existing default values in child org units. The agent might need more context to handle responses.

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

Parameters4/5

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

Schema coverage is 100% with detailed parameter descriptions. The description adds value by explaining that propagationType controls which hierarchy levels receive the update, tying the parameter to the overall operation. This supplements the schema's enum 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 (update) and the specific resource (default value of an org-unit custom property), and distinguishes from sibling tools like 'update_org_unit_custom_property' and 'get_org_custom_property_default' by mentioning propagation.

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 updating default values with optional propagation, but lacks explicit guidance on when to use this tool versus alternatives like 'update_org_unit_custom_property' or when not to use it (e.g., for read-only queries).

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

update_org_unit_custom_propertyB

Update a custom property value on an organization unit (SO, customer, or site). propertyType must match the property definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
propertyIdYesThe custom property ID
propertyNameNoThe property name
propertyTypeNoProperty type
valueNoThe property value to set
enumeratedValueListNoAllowed values if propertyType is ENUMERATED

TDQS

B3.3/5.0
Behavior2/5

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

The description adds minimal behavioral context beyond annotations. It states it is an update operation and a constraint on propertyType, but does not disclose side effects, validation behavior, or any error conditions. With destructiveness false and openWorldHint true, more detail on permissible mutations would be helpful.

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 clearly states purpose, second adds critical constraint. No unnecessary words. Well-structured for quick comprehension.

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 straightforward update operation. However, since there is no output schema, the description could mention what the response contains. Also lacks details on validation of propertyType or enumerated values. Sufficient but not rich.

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

Parameters3/5

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

The input schema has 100% coverage, so each parameter is already described. The description adds the constraint that propertyType must match the property definition, which is useful but not critical. No additional explanation for relationship between parameters or handling of enumeratedValueList.

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) and the resource (custom property on organization unit), and specifies the types of org units (SO, customer, site). This distinguishes it from sibling tools like 'get_org_unit_property' or 'list_org_custom_properties'.

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 'update_org_custom_property_default' or 'update_device_custom_property'. The only usage hint is the requirement that propertyType must match the property definition, but no context for selection.

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

update_org_unit_limitsA

Update licensing/usage limits for an organization unit (PATCH — only provided fields modified).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgUnitIdYesThe organization unit ID
bodyYesLimits payload — refer to N-central API docs for field shape

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate write (readOnlyHint=false) and non-destructive (destructiveHint=false) behavior. The description adds detail about the partial update (PATCH) and the resource type, which is useful behavioral context beyond the structured fields.

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?

A single sentence that is front-loaded with the action and resource, and includes critical behavioral information (PATCH). No extraneous 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 mutation tool with annotations and a clear purpose, the description is mostly complete. It could mention return value or side effects, but the lack is not critical given the tool's simplicity.

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 covers both parameters but the body parameter's description is vague ('refer to N-central API docs for field shape'), offering minimal guidance. The tool description does not add further meaning to the parameters beyond the schema, leaving uncertainty about the payload structure.

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) and the resource (licensing/usage limits for an organization unit). It also specifies the HTTP method (PATCH) and partial update behavior, distinguishing it from read-only siblings like get_org_unit_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 use for updating limits but does not explicitly state when to use this tool versus alternatives (e.g., update_org_unit_custom_property). No exclusion criteria or when-not-to-use guidance is provided.

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

update_psa_customer_mappingsC

Update Standard PSA mappings for a customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID
bodyYesPSA mappings payload

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already indicate a write operation (readOnlyHint=false) and non-destructive nature (destructiveHint=false). The description merely states 'Update' which aligns, but adds no additional behavioral context such as required permissions or 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.

Conciseness3/5

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

Single sentence, concise but too minimal. Lacks crucial details. Not front-loaded with additional context beyond the explicit description.

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 (update with nested body, no output schema), the description is incomplete. Does not explain what mappings are, response format, error handling, or link to related tools like 'list_psa_customer_mappings'.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. However, the 'body' parameter description is vague ('PSA mappings payload') and the description does not clarify expected structure. Baseline 3 is appropriate as schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb 'Update' and resource 'Standard PSA mappings for a customer'. It distinguishes from sibling tools like 'get_psa_customer_mapping' and 'list_psa_customer_mappings', though not explicitly. However, it is specific enough.

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 context for usage. The description does not provide when-not-to-use or mention related tools.

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

validate_psa_credentialA

Validate Standard PSA credentials for a given PSA type. Transmits credentials in the request body — use with care over untrusted transports. WARNING: per N-central documentation, this endpoint currently works only with TigerPaw 3.0, not other PSA integrations — calls for other PSAs will fail.

ParametersJSON Schema
NameRequiredDescriptionDefault
psaTypeYesThe PSA type
usernameYesPSA username
passwordYesPSA password

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations, highlighting that credentials are sent in the request body and that the endpoint works only with TigerPaw 3.0. Annotations indicate readOnlyHint: false and destructiveHint: false, and the description's warnings align with this. 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?

Three sentences with no waste: first states purpose, second warns about security, third gives critical limitation. 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.

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 (3 params, no output schema), the description covers purpose, security, and a known limitation. Missing details about the response format, but for credential validation, a binary success/failure is implied. Overall 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?

Schema coverage is 100%, so parameters are well-documented structurally. The description adds minor context about credentials being transmitted but does not elaborate on meaning or usage beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action 'validate' and the resource 'Standard PSA credentials', and specifies the scope 'for a given PSA type'. It distinguishes the tool from siblings as there are no other validation tools in the list. However, it could be more precise about what validation entails (e.g., returns success/failure).

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 transmitting credentials over untrusted transports and explicitly states the limitation to TigerPaw 3.0 only, indicating when not to use the tool. It does not mention alternatives, but the warning is clear and actionable.

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. 82 tool updatesv2.1.0
    • First observedadd_device_note
    • First observedadd_notes_bulk
    • First observedcreate_access_group
    • First observedcreate_custom_psa_ticket
    • First observedcreate_customer
    • First observedcreate_device
    • First observedcreate_device_access_group
    • First observedcreate_maintenance_windows
    • First observedcreate_service_org
    • First observedcreate_site
    • First observedcreate_user_role
    • First observedgenerate_patch_comparison_report
    • First observedgenerate_software_download_link
    • First observedget_access_group
    • First observedget_appliance_task
    • First observedget_current_user
    • First observedget_custom_psa_ticket_detail
    • First observedget_customer
    • First observedget_device
    • First observedget_device_activation_key
    • First observedget_device_assets
    • First observedget_device_custom_property
    • First observedget_device_default_custom_property
    • First observedget_device_lifecycle
    • First observedget_device_status
    • First observedget_maintenance_windows
    • First observedget_org_custom_property_default
    • First observedget_org_unit
    • First observedget_org_unit_limits
    • First observedget_org_unit_property
    • First observedget_psa_customer_mapping
    • First observedget_registration_token
    • First observedget_report
    • First observedget_scheduled_task
    • First observedget_scheduled_task_status
    • First observedget_server_info
    • First observedget_server_info_authenticated
    • First observedget_server_time
    • First observedget_service_org
    • First observedget_site
    • First observedget_software_installers
    • First observedget_user_role
    • First observedlist_access_groups
    • First observedlist_active_issues
    • First observedlist_all_users
    • First observedlist_custom_psa_tickets
    • First observedlist_customers
    • First observedlist_device_custom_properties
    • First observedlist_device_filters
    • First observedlist_device_notes
    • First observedlist_device_tasks
    • First observedlist_devices
    • First observedlist_devices_by_org_unit
    • First observedlist_job_statuses
    • First observedlist_org_custom_properties
    • First observedlist_org_unit_children
    • First observedlist_org_units
    • First observedlist_psa_companies
    • First observedlist_psa_company_contacts
    • First observedlist_psa_company_sites
    • First observedlist_psa_customer_mappings
    • First observedlist_scheduled_tasks
    • First observedlist_service_orgs
    • First observedlist_sites
    • First observedlist_user_roles
    • First observedlist_users
    • First observedlogout
    • First observedpatch_device_lifecycle
    • First observedreport_all_users_by_so
    • First observedreport_customer_site_summary
    • First observedreport_devices_bulk
    • First observedreport_devices_by_so
    • First observedreport_org_hierarchy
    • First observedupdate_device_custom_property
    • First observedupdate_device_lifecycle
    • First observedupdate_device_note
    • First observedupdate_maintenance_windows
    • First observedupdate_org_custom_property_default
    • First observedupdate_org_unit_custom_property
    • First observedupdate_org_unit_limits
    • First observedupdate_psa_customer_mappings
    • First observedvalidate_psa_credential

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes, but some pairs like list_devices vs list_devices_by_org_unit or get_server_info vs get_server_info_authenticated could cause minor confusion. Overall, the descriptions aid disambiguation.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern. Verbs are well-chosen (create, get, list, update, etc.) and no mixing of conventions is observed.

Tool Count2/5

At 82 tools, the count is very high for a typical MCP server. While the domain is broad, this number may overwhelm agents and suggests insufficient scoping or consolidation.

Completeness2/5

The tool set covers many operations but lacks deletion tools (e.g., delete_device, delete_customer, delete_note) and update tools for some entities (e.g., PSA tickets). These gaps create dead ends for common workflows.

Maintenance

ActivitySlowing
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

  • A
    license
    Not graded
    quality
    B
    maintenance
    Exposes Zerobyte backup platform's REST API as MCP tools, enabling read-only queries on repositories, backups, snapshots, volumes, and system info.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables interaction with N-able RMM (N-sight) API to manage clients, sites, devices, and retrieve monitoring data such as checks, patches, and performance history.
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    Exposes the CloudRadial REST API (client portal / PSA-adjacent MSP platform) as MCP tools, enabling operations on companies, articles, feedback, archives, flexible assets, and more via 34 tools with HTTP Basic Auth.
    -

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/theonlytruebigmac/n-central-rest-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server