Skip to main content
Glama

TacticalRMM MCP server

Lets an AI assistant read everything in your TacticalRMM install, and — when you explicitly switch it on — run commands on your managed machines.

Ask "which machines are offline and why", "what's eating memory on the front desk PC", "show me every failed check this week", and get answers from live fleet data. Turn on elevate mode and the assistant can also fix things, but only after you approve each action yourself.

Why I built it

I manage machines for a number of clients, and TacticalRMM already collects far more about each one than anyone has time to sit and read. I wanted to actually use that data: run deeper diagnostics than the dashboard puts in front of you, produce per-client reports covering every device, and find the things worth fixing before someone rings up to report them.

It does grow billable work, and I think that is fine as long as the work is real. A disk throwing early SMART errors, a server quietly filling up, patches that stopped applying three months ago and nobody noticed — catching those is worth paying for. Billing for busywork is not. The test I hold this to is whether every item on a report is something the client can see the sense in fixing once it has been explained to them.

Related MCP server: kaseya-vsa-mcp

What you get

28 tools. 20 read-only ones covering agents, checks, alerts, services, processes, event logs, software inventory, patches, scripts and audit history; 8 execution tools for running commands and scripts, rebooting, controlling services, killing processes, and waking machines.

A full audit trail of everything. Every inbound request, every tool call with its arguments, every result, every TRMM API call, every approval decision and every refusal is written to a structured JSONL log with credential redaction and rotation. For a bridge that can run commands as SYSTEM across a fleet, knowing exactly who asked for what and when is not optional — so it is on by default and cannot be silently skipped. Details in Audit logging.

An approval gate the model cannot reach. In elevate mode an execution is refused until you approve that exact call in a browser (password + TOTP) or from a shell on the server. Approvals are bound to a fingerprint of the arguments, are single-use, and expire. No tool exists that grants elevation.

Read-only that actually holds. Three independent layers: the execution tools are never registered, the HTTP client refuses non-read requests, and the API key itself is bound to a TRMM role with no execution permissions.

Built for real fleets. TRMM has no pagination and returns whole tables — one agent detail call measured 192 KB here. Responses are projected, capped and truncated with an explicit notice, so a single call cannot swallow the model's context.

HTTPS with bearer auth, a self-signed certificate carrying an IP SAN, and a hardened systemd unit. Clients trust that one certificate rather than skipping verification.

Works with Claude Code, Claude Desktop and LM Studio on macOS, Windows and Linux. Built and verified against TRMM 1.5.1. The TRMM API itself is documented independently in docs/trmm-api.md.


Three modes

readonly (default)

elevate

command

Tools exposed

20 read tools

28

28

Reads

yes

yes

yes

Executions

never

only what you approve, one call at a time

always

TRMM key for reads

mcp-readonly

mcp-readonly

mcp-command

TRMM key for executions

mcp-command, only after approval

mcp-command

Good for

pure Q&A

day-to-day chat

unattended automation

elevate is the one to use for interactive work: Claude can look at anything, but the moment it wants to do something it stops and waits for you.

Security

The short version:

  • The approval gate is out of band. In elevate mode an execution is refused until you approve that exact call in a browser (password + TOTP) or from a shell on the server. Approvals are bound to a fingerprint of the arguments, are single-use, and expire. No tool exists that grants elevation, so the model has no route to its own approval.

  • Read-only holds at three independent layers. The execution tools are never registered, the HTTP client refuses non-read requests, and the API key itself is bound to a TRMM role with no execution permissions.

  • Destructive patterns are refused client-side in command mode — rm -rf /, mkfs, dd of=/dev/*, format c: and the rest — with an optional agent allowlist to hard-scope what can be touched at all.

  • HTTPS with bearer auth, a self-signed certificate carrying an IP SAN, and a hardened systemd unit. Clients trust that one certificate rather than skipping verification.

There is one honest caveat about the third read-only layer, because TRMM has no view-only permission for services, processes or Windows updates. That, the approval page's own password + TOTP gate, and why MCP elicitation is not used as the approval channel, are all written up in docs/security.md.

Setup

Already done on this box:

  • venv at venv/ with mcp 2.0 and httpx

  • TRMM roles MCP Read Only and MCP Command, users mcp-readonly and mcp-command (both blocked from UI login, unusable passwords)

  • API keys written to .env (mode 600)

To re-provision or rotate keys:

/rmm/api/env/bin/python /opt/trmm-mcp/provision_trmm_accounts.py --rotate

Running the server

To reach it from other machines, first tell it which address to serve on. These go in .env, not in the unit file — the unit is in git, and an address baked in there would follow every copy of it onto the wrong machine:

cat >> /opt/trmm-mcp/.env <<'EOF'
TRMM_MCP_HTTP_HOST=10.0.0.5
TRMM_MCP_PUBLIC_URL=https://10.0.0.5:8770
EOF

Substitute your own address. TRMM_MCP_PUBLIC_URL is what the assistant tells you to open when something needs approving, so it has to be a URL your browser can actually reach. Skip this step and the server binds 127.0.0.1, which is fine if the client runs on the same box.

Then install the unit and start it:

sudo cp /opt/trmm-mcp/trmm-mcp.service /etc/systemd/system/ && sudo systemctl daemon-reload && sudo systemctl enable --now trmm-mcp

Check what it came up on — the startup line names the address, the mode and whether TLS is on:

journalctl -u trmm-mcp -n 5 --no-pager | grep listening

It serves HTTPS on port 8770 by default and requires the bearer token from .env. To run it in the foreground instead, for a quick test:

/opt/trmm-mcp/run.sh readonly http

The listener runs stateless (TRMM_MCP_STATELESS_HTTP=true, the default). This matters: with stateful streamable HTTP the server hands out a session id that dies with the process, so restarting the service leaves any connected client replaying a session the server has forgotten. Through mcp-remote that shows up as tool calls hanging for minutes and then failing, while tools/list still answers, with Rejected request with unknown or expired session ID in logs/server.log. Stateless removes the failure mode; we use no server-initiated requests, so it costs nothing. restart_test.py proves both behaviours.

The bearer token is the only authentication on that port, so anything that can reach it inherits this server's TRMM permissions. Keep it on the LAN or behind a tunnel rather than binding a public interface.

Connecting a client

You need two things from the server: the bearer token from .env, and a copy of certs/cert.pem so the client can verify the TLS certificate.

Claude Code speaks HTTP directly and needs no bridge:

claude mcp add --transport http trmm https://192.0.2.10:8770/mcp \
  --header "Authorization: Bearer <TRMM_MCP_AUTH_TOKEN>" --scope user

On the server itself you can skip the network entirely and run it over stdio:

claude mcp add trmm -- /opt/trmm-mcp/run.sh readonly

Swap readonly for elevate to get the approval gate, or command for unattended execution.

Claude Desktop needs the mcp-remote bridge, LM Studio speaks remote HTTP natively, and either can instead be run across SSH with nothing listening on the network at all. Working configs for all three on macOS, Windows and Linux — plus installing the certificate into the system trust store — are in docs/clients.md.

Tools

28 tools: 20 read-only, 8 execution. Anywhere a tool takes an agent you can pass the hostname or the agent_id — hostnames are resolved automatically, and an ambiguous one is rejected rather than guessed.

  • Start heretrmm_fleet_overview: counts, plus the offline, needs-reboot, failing-check and pending-patch lists.

  • Fleet — agents with status and filters, clients and sites, alerts, pending actions, server info and the active mode.

  • Diagnostics — services, processes, event log, configured checks, installed software, patch status, automated tasks, and past command and script runs with their output.

  • Audit and scripts — the TRMM audit log, the server debug log, the script library and full script source.

  • Escape hatchtrmm_api_get: a raw GET against any API path.

  • Execution (elevate and command only) — run a command, run a saved script, reboot, start/stop/restart a service, kill a process, wake-on-LAN, force checks to run, run an automated task.

Bulk fleet-wide execution, server-side scripts and all config mutation are deliberately not exposed. The full 28-row table, the reasoning behind the omissions, the MCP safety annotations and the context-size handling are in docs/tools.md.

Documentation

Security

The approval gate, the three read-only layers, TLS, and the honest caveats

Installation

pip versus a clone, where it keeps its files, rebuilding the venv

Connecting a client

Claude Code, Claude Desktop, LM Studio, SSH, and the certificate

Tools

All 28 tools, what is not exposed, annotations, context-size handling

Operations

Audit logging, the browser log pages, backups, testing, troubleshooting

Configuration

Every environment variable, and what each file in the repo does

TRMM API

Independent documentation of the TacticalRMM API itself

Changelog

See CHANGELOG.md.

License

AGPL-3.0-or-later (LICENSE), with per-file SPDX headers. The copyleft terms mean anyone who runs a modified copy as a network service must publish their changes — deliberate, to keep execution-capable forks open.

Available Tools

20 tools
trmm_agent_checksB
Read-onlyIdempotent

Checks configured on an agent, with their current status.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
failing_onlyNo

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that statuses are included in the result, which is useful but minimal 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 a single compact sentence with no filler or redundancy. It front-loads the resource and adds the key output dimension without wasting 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 low-complexity read-only tool with strong annotations, this is minimally viable. However, there is no output schema and the description does not explain what a 'check' looks like or how statuses are represented, so the agent must infer some important details.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the agent identifier format or the meaning of failing_only beyond what the parameter names imply. The 'agent' parameter is somewhat self-explanatory from the description, but 'failing_only' semantics are left to inference.

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 identifies the resource ('checks configured on an agent') and indicates that current status is included. It lacks an explicit verb like 'list' or 'get', but the meaning is unmistakable and it is distinct from sibling tools such as agent_services or agent_processes.

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, no prerequisites, and no exclusions. It relies entirely on the tool name and sibling context to imply its role.

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

trmm_agent_event_logB
Read-onlyIdempotent

Windows event log entries from an agent. log_type is Application, System or Security. Filter by level (error/warning/information) and an optional message substring.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
agentYes
levelNo
limitNo
searchNo
log_typeNoApplication

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds log type and filter context but does not disclose output shape, pagination behavior, or event-source caveats, leaving some behavioral detail undisclosed.

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

Conciseness4/5

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

The description is two short sentences with no filler and front-loads the core resource. It could be improved with a clearer verb, but it is efficient and every sentence contributes useful 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?

For a read-only, six-parameter tool with no output schema, the description covers the core object and main filters but omits return-value shape and full parameter semantics for days and limit. It is adequate for basic calls but leaves gaps an agent may need to infer.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden for parameter meaning. It explains log_type values, level values, and the search substring, but it does not clarify the meaning of days, limit, or how the agent identifier should be provided, though schema defaults partially mitigate days and limit.

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 identifies the resource as Windows event log entries from an agent and names the log types (Application, System, Security). This is clear enough to distinguish it from sibling agent inspection tools like services, processes, or software, though it lacks an explicit verb such as 'Retrieves'.

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 when to use the tool: to inspect Windows event log entries for an agent, with optional filtering by level and message substring. It does not explicitly state when not to use it or how it compares to related tools like trmm_agent_history or trmm_audit_log, so the usage context is only implicit.

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

trmm_agent_historyA
Read-onlyIdempotent

Recent command and script runs on an agent, including their captured output. Use this to see what was already tried, or to retrieve output from an asynchronous script run.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
limitNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful behavioral context by stating that results include captured output and that async script output can be retrieved through history.

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 filler. The core purpose is front-loaded and the usage guidance follows immediately.

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 history tool with two params, the description covers the resource, the returned content, and the main use cases. The main omissions are the behavior and formatting of the limit parameter and any ordering, but the definition is sufficient for selecting and making an initial invocation.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate, but it only clarifies that the data is scoped to an agent. The limit parameter's meaning and behavior are not described at all.

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 identifies exactly what the tool exposes: recent command and script runs for a given agent, including captured output. This distinguishes it from sibling tools focused on services, processes, events, software, or updates, so an agent can tell them apart.

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

Usage Guidelines4/5

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

It states explicit use cases: see what was already attempted or retrieve output from an asynchronous script run. It does not spell out when not to use it or name alternatives, but the intended context is clear.

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

trmm_agent_processesA
Read-onlyIdempotent

Live process list from an agent, sorted by memory or CPU. Requires the agent to be online.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
limitNo
sort_byNomemory

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark the operation as read-only, idempotent, and non-destructive. The description adds operational context beyond those hints by stating the data is live and that the target agent must be online, which is useful when invoking the tool.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler: it states what the tool returns, the sorting options, and the online prerequisite. Every clause pulls its weight.

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

Completeness3/5

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

For a simple read-only list tool the description gives the essential: scope to an agent, live nature, sorting, and online requirement. However, there is no output schema and no mention of return fields or behavior when the agent is offline, so the agent must infer some 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 description coverage is 0%, so the description must compensate. It clarifies sort_by values ('memory or CPU') and implies the agent scope, but does not document the limit parameter or the exact accepted sort_by string values. Parameter names are mostly self-explanatory.

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 names a specific resource and action: a live process list scoped to an agent, with explicit sorting by memory or CPU. The term 'process' distinguishes it from sibling agent tools like trmm_agent_services and trmm_agent_checks, so an agent can tell them apart.

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 the tool is for inspecting an agent's current processes and states a prerequisite (the agent must be online). It does not explicitly say when to choose this over alternatives such as trmm_agent_services, so usage guidance is present but only implied.

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

trmm_agent_servicesA
Read-onlyIdempotent

Windows services on an agent. Filter by name substring or state (running/stopped) to avoid pulling the whole list, which is large.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
limitNo
stateNo
searchNo

TDQS

A3.8/5.0
Behavior4/5

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

The description adds useful behavioral context beyond the annotations by explaining that the response can be large and that filtering is encouraged to avoid pulling the entire list. This helps the agent anticipate cost/scale and choose appropriate parameters. The read-only and non-destructive annotations are consistent with the description.

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 convey the resource, scope, filtering options, and an important performance consideration with no wasted words. The key subject is front-loaded and the guidance is immediately actionable.

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, the description covers the essential context: what is being queried, how to filter, and why filtering matters. The lack of an output schema is mitigated by the tool's straightforward nature, though the 'limit' parameter semantics would add 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?

With 0% schema description coverage, the description carries the burden of explaining parameters. It usefully maps 'search' to name substring and 'state' to running/stopped. However, it does not explain the 'limit' parameter or clarify 'agent' beyond the phrase 'on an agent', so coverage is only partial.

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 identifies the resource as 'Windows services on an agent' and distinguishes it from sibling agent-focused tools like processes, event log, and software. It lacks an explicit verb like 'List' or 'Get', but the filtering guidance makes the retrieval intent clear.

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 gives practical guidance on using filters ('Filter by name substring or state') and warns that the full list is large. However, it does not explicitly state when to prefer this tool over alternatives or when not to use it, leaving sibling differentiation mostly implicit.

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

trmm_agent_softwareC
Read-onlyIdempotent

Installed software inventory for an agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
searchNo

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral detail beyond the resource category itself—no mention of filtering, result shape, pagination, or edge cases. Its marginal contribution to behavioral transparency is minimal.

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 noun phrase with no filler or redundant wording. It is appropriately short for a simple read-only tool, though the brevity leaves useful details about search and output unstated.

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, annotations supply the read-only and idempotent profile, and the core return concept ('installed software inventory') is present. However, with no output schema and no explanation of the optional search parameter, an agent must infer part of the calling behavior.

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

Parameters2/5

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

Schema property descriptions are completely absent, so the description needed to clarify both the required 'agent' parameter and the optional 'search' parameter. It only restates that the inventory is for an agent and says nothing about the search parameter's meaning, format, or filtering behavior.

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 indicates the tool returns the installed software inventory for a specified agent. The resource type, 'installed software', is distinct from sibling tools like services, processes, or event logs. It could be improved by using an explicit verb like 'lists', but the intent is unambiguous.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as trmm_agent_services, trmm_agent_processes, or trmm_agent_windows_updates. It also provides no exclusions, preconditions, or context that would help an agent choose among the many agent-specific inventory tools.

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

trmm_agent_tasksC
Read-onlyIdempotent

Automated tasks configured on an agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the safety profile is covered. But the description adds no behavioral detail about what the tool returns or how it behaves, only a noun phrase describing the resource.

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 short phrase with no filler and the core concept is front-loaded. It is arguably too terse, but every word contributes meaning.

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?

This is a simple read-only tool with one parameter, but there is no output schema and the description does not state what the tool returns. It also lacks guidance relative to the many sibling agent-specific tools, leaving the agent to infer whether this lists tasks, checks their status, or something else.

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

Parameters2/5

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

Schema description coverage is 0% and the sole 'agent' parameter has no schema description. The phrase 'configured on an agent' only hints at the parameter's purpose but does not specify whether it expects an ID, name, or how to source it, so the description fails to compensate for the empty schema.

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

Purpose3/5

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

The description identifies the resource as 'automated tasks configured on an agent,' which helps distinguish it from sibling agent subresources like services or processes. However, it lacks an explicit action verb such as 'list' or 'retrieve,' leaving the operation to be inferred from the tool name and annotations.

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 instead of alternatives. Among siblings like trmm_agent_services, trmm_agent_checks, and trmm_list_scripts, there is no stated selection criterion or exclusion.

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

trmm_agent_windows_updatesC
Read-onlyIdempotent

Windows update status for an agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
pending_onlyNo

TDQS

C2.7/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, and the description's 'status' phrasing is consistent with those. However, the description adds no behavioral context beyond the annotations, such as what the status includes, whether it returns only pending updates, or what the response shape is.

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 very short and contains no filler words. It is front-loaded with the core subject, though its brevity leaves out meaningful detail that is penalized in other dimensions.

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 two-parameter tool with no output schema, this terse description leaves important context undefined: what counts as 'status', how pending_only affects results, and what the return value contains. The annotations cover safety but not the domain behavior an agent needs to invoke the tool correctly.

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

Parameters2/5

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

The description only indicates that the tool targets an agent, which lightly maps to the required 'agent' parameter. It does not mention 'pending_only' or its default true behavior, and with 0% schema description coverage the description does not compensate for the lack of parameter documentation.

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 names a clear resource (Windows updates) and scope (an agent) and implies a read action via 'status'. It differentiates from sibling tools like services, processes, event log, and software, though it lacks an explicit verb such as 'get' or 'list'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention sibling tools, preconditions, or conditions that would favor one tool over another.

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

trmm_api_getA
Read-onlyIdempotent

Escape hatch: issue a raw GET against any TRMM API path and return the JSON, for data with no dedicated tool. Example paths: /clients/, /checks/, /automation/policies/, /core/customfields/, /accounts/. Always permitted, in both modes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
paramsNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context: the operation is a raw GET, returns JSON, and is always permitted. The phrase 'in both modes' is ambiguous but not contradictory.

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 compact and front-loaded with the key concept 'Escape hatch.' Every sentence contributes useful information, though the unexplained 'in both modes' is slightly cryptic and could be clarified.

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 an open-world generic GET tool, the description covers the main purpose, gives concrete path examples, states the return format, and signals permissibility. It does not document query params or elaborate on 'both modes,' but the core invocation context is sufficiently clear.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It gives strong semantics for the required path parameter through examples and the notion of 'any TRMM API path.' However, the optional params parameter is not described at all beyond its schema title, leaving a gap for the agent.

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 names a specific verb and resource: issuing a raw GET against any TRMM API path and returning JSON. It clearly positions itself as an escape hatch for data with no dedicated tool, which distinguishes it from the many sibling tools that cover specific endpoints.

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 states when to use it: 'for data with no dedicated tool.' It also provides concrete example paths and notes that it is 'always permitted, in both modes,' giving the agent clear guidance on availability and scope.

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

trmm_audit_logA
Read-onlyIdempotent

Audit log: who did what in TRMM. Filter by days, agent, or username. Useful for correlating a change with when a problem started.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
fullNo
pageNo
agentNo
usernameNo
rows_per_pageNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already cover the read-only, idempotent, and non-destructive nature of the tool. The description adds useful scoping context ('filter by days, agent, or username') and its investigative purpose, but it does not disclose pagination behavior, what the 'full' flag does, or the shape of the returned log entries.

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

Conciseness5/5

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

Two concise sentences front-load the core purpose, then list the key filters and a practical use case. There is no redundant or irrelevant wording.

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

Completeness4/5

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

For a read-only audit log tool, the description gives enough to understand what it does and when to use it. The main gap is the absence of any explanation of the 'full' parameter and the return payload, especially because no output schema is 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 description coverage is 0%, so the description must compensate. It adds meaning for days, agent, and username by framing them as filters. However, 'full', 'page', and 'rows_per_page' are left unexplained, with only their titles/defaults hinting at their role.

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 resource as the TRMM audit log and defines its content: 'who did what in TRMM.' It also mentions the available filter dimensions, making it easy to distinguish from sibling tools like trmm_debug_log or trmm_agent_event_log.

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 a concrete use case: 'correlating a change with when a problem started.' This gives an agent a clear sense of when to invoke the tool. It does not explicitly name alternatives or state when not to use it, so it stops short of full routing guidance.

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

trmm_debug_logC
Read-onlyIdempotent

TRMM server debug log entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
log_levelNoerror

TDQS

C2/5.0
Behavior2/5

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

Annotations already disclose readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds only the resource context 'server debug log entries' and no additional behavioral detail such as output format, ordering, filtering defaults, or scope. There is no contradiction with the annotations, but the description contributes little 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.

Conciseness3/5

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

The description is short and front-loaded, with no wasted words. However, it is too terse to be functional, reading more like a label than an instructional description. It is concise but under-specified.

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, no parameter documentation, and no usage context, the description is incomplete for a tool with two configurable parameters. The annotations cover the safety profile, but an agent still cannot determine what the tool returns, how the parameters behave, or when it is appropriate to invoke.

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

Parameters1/5

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

Schema description coverage is 0%, so the description carries the full burden of explaining the parameters. It does not mention 'days' or 'log_level' at all, leaving agents to guess their meaning, valid values, or effects on the returned debug log entries.

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

Purpose2/5

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

The description, 'TRMM server debug log entries,' is a noun phrase that essentially restates the tool name and does not state a clear action such as 'retrieve,' 'list,' or 'search.' It identifies the resource but leaves the operation ambiguous, and it does not differentiate itself from sibling tools like trmm_audit_log or trmm_agent_event_log.

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 that this is for server-side debug logs, how it differs from audit or agent event logs, or any conditions that would make it the appropriate choice.

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

trmm_fleet_overviewA
Read-onlyIdempotent

Fleet health summary: agent counts by status, plus the machines that are offline, need a reboot, have failing checks, or have pending patches. The best first call when hunting for problems.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful behavioral context by specifying exactly what the summary covers and positioning it as a problem-hunting entry point, without contradicting the annotations.

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

Conciseness5/5

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

Two compact sentences that front-load the core purpose ('Fleet health summary') before listing contents and usage. Every phrase earns its place, with no filler or redundancy.

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

Completeness4/5

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

For a zero-parameter, read-only overview tool, the description provides enough detail about what is returned and when to use it. It does not enumerate every possible status, but that level of detail is unnecessary for a first-call triage tool and would reduce conciseness.

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

Parameters4/5

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

The tool has zero parameters and 100% schema coverage, so the schema carries no burden. With no parameters to explain, the description's focus on output contents is sufficient.

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 identifies the resource (fleet) and the kind of information returned (agent counts by status, offline machines, reboot needs, failing checks, pending patches). It stops short of an explicit verb like 'returns' or 'gets', but the meaning is unambiguous and it is clearly distinct from the per-agent 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 Guidelines4/5

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

The description explicitly frames this as 'the best first call when hunting for problems', which gives strong usage context for triage. It does not name specific alternatives for follow-up detail, but the sibling names imply that per-agent tools are used after this overview.

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

trmm_get_agentA
Read-onlyIdempotent

Full detail for one agent: hardware, OS, disks, uptime, checks and policies. Heavy sections (services, wmi_detail, graphics, timezone list) are omitted unless named in include, since they can be >100KB.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
includeNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish this as read-only, idempotent, and non-destructive. The description adds valuable non-obvious behavior: heavy sections such as services, wmi_detail, graphics, and timezone list are omitted unless named in include, because they can exceed 100KB. This goes beyond what the annotations provide.

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

Conciseness5/5

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

Two sentences with no filler. The purpose is front-loaded, and the caveat about heavy sections is presented efficiently.

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 two-parameter read-only tool, the description is complete: it states what is returned, what is excluded by default, and how to include heavy sections. Annotations cover the safety profile, so no additional behavioral context is required.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains the include parameter with concrete section names and a size rationale, and identifies agent as the target of 'one agent' detail. The exact format of agent is not specified, but the two parameters are meaningfully described.

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 a specific resource ('one agent') and enumerates the returned detail sections: hardware, OS, disks, uptime, checks and policies. This distinguishes it from sibling list/overview tools like trmm_list_agents and trmm_fleet_overview.

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

Usage Guidelines4/5

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

It gives clear context: use this tool when full detail for a single agent is needed, as opposed to fleet or list overviews. It does not explicitly name alternative tools or state when not to use it, but the 'one agent' framing makes the primary use case obvious.

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

trmm_get_scriptA
Read-onlyIdempotent

Full detail for one script including its source code. Read this before running an unfamiliar script on a machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
script_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish that this is read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond that: the response includes full source code, and the tool is the intended pre-flight check before executing an unfamiliar script. It does not detail response structure or pagination, but the annotations carry the safety profile.

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

Conciseness5/5

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

Two short, purposeful sentences. The first states what the tool returns, and the second gives actionable usage context. There is no padding or repetition of schema data.

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

Completeness4/5

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

For a one-parameter, read-only tool with rich annotations, the description covers the purpose, the key return content, and the right moment to use it. It omits details like where to obtain a script_id or the exact response shape, but those are not critical given the simple interface and the existing hint annotations.

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

Parameters2/5

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

The input schema has 0% description coverage, so the description must compensate by explaining the script_id parameter. It does not: it only says 'one script' without clarifying where the ID comes from, how it maps to a script, or any constraints. The parameter name is self-evident, but the description adds little beyond the schema's own 'Script Id' title.

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 clear verb-resource structure: 'full detail for one script' tells the agent this is a single-item retrieval operation, not a list. 'Including its source code' makes the scope concrete and distinguishes it from sibling tools like trmm_list_scripts or trmm_get_agent.

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 second sentence provides a strong usage cue: 'Read this before running an unfamiliar script on a machine.' This explains when the tool is valuable, though it does not explicitly name alternatives or say 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.

trmm_list_agentsA
Read-onlyIdempotent

List agents with their status. Filter by client/site id, monitoring type (server/workstation), online state, or a hostname substring.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
fieldsNo
searchNo
site_idNo
client_idNo
offline_onlyNo
monitoring_typeNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare the operation read-only, idempotent, and non-destructive, so the description does not need to repeat safety traits. It does add useful behavioral context by naming filter capabilities and the 'status' aspect of the output, but it does not disclose pagination, default limit behavior, or result shape. The extra context is moderate rather than rich.

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

Conciseness5/5

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

The description is a single efficient sentence that front-loads the primary purpose and then enumerates filter options. Every word earns its place, with no filler, repetition, or unnecessary detail.

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

Completeness4/5

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

For a read-only list tool with no required parameters and a clear filter surface, the description covers the essential calling context: what is returned conceptually (agents with status) and how to narrow results. It does not describe the response structure, but no output schema exists and the operation is simple enough that the main gap is the lack of sibling routing rather than missing invocation details.

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

Parameters4/5

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

With 0% schema description coverage, the description carries the burden of explaining parameters, and it does well for most of them: 'client/site id' maps to client_id and site_id, 'monitoring type (server/workstation)' clarifies monitoring_type, 'online state' explains offline_only, and 'hostname substring' gives meaning to search. Limit and fields are not explained, but they are conventional and self-explanatory, so this is a strong partial compensation.

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

Purpose5/5

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

The description clearly states the verb and resource: 'List agents with their status.' It also distinguishes itself from sibling tools like trmm_get_agent (single agent) and trmm_fleet_overview by focusing on the list/filter behavior. The filter axes are named specifically, making the tool's 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 usage for listing and filtering agents, but it never explicitly says when to prefer this over siblings like trmm_fleet_overview or trmm_get_agent. It provides clear context ('List agents with their status') but no exclusions or alternative routing, leaving some ambiguity for an agent choosing among many similar trmm_* tools.

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

trmm_list_alertsB
Read-onlyIdempotent

Current alerts. By default returns the newest unresolved ones. severity may include 'error', 'warning', 'info'.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
daysNo
severityNo
include_resolvedNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds default filtering behavior and acceptable severity values. However, it does not describe response shape, ordering guarantees beyond 'newest', or pagination, so the behavioral context is moderate but not rich.

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

Conciseness5/5

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

The description is two short sentences with no filler, front-loading the core purpose ('Current alerts') before adding the default behavior and severity values. Every sentence earns its place.

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

Completeness3/5

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

For a simple read-only list tool, the description is minimally sufficient: an agent can call it with no arguments or with a severity filter. However, there is no output schema and the description does not characterize the returned alert fields or fully clarify top and days semantics.

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

Parameters2/5

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

With 0% schema description coverage, the description was expected to clarify parameter semantics, but it only explains severity values. The top, days, and include_resolved parameters are left to inference from their names and defaults; days in particular lacks a time-window unit or precise meaning.

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 identifies a resource and action: it returns current alerts, defaulting to the newest unresolved ones. It does not explicitly differentiate itself from sibling tools like trmm_pending_actions or trmm_audit_log, so it is clear but not fully distinctive.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus related tools such as trmm_pending_actions, trmm_audit_log, or trmm_debug_log. There are no selection criteria, exclusions, or alternative routing hints.

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

trmm_list_clients_sitesA
Read-onlyIdempotent

All clients and their sites, with ids for filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds minor context by indicating the returned data includes IDs intended for filtering, but it does not disclose other behavioral traits such as pagination, nesting, or completeness beyond the word 'All.'

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, tightly scoped sentence with no filler. The core information is front-loaded, and the filtering purpose is appended 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 zero-parameter, read-only list tool, the description covers what is returned and why the results matter. It does not explicitly describe the return shape beyond 'clients and their sites,' and there is no output schema to fill that gap, but the tool is simple enough that this is nearly 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?

This tool has zero parameters and the schema is trivially complete, so there are no parameter semantics to explain. The baseline for a no-parameter tool is 4, and the description's mention of IDs for filtering refers to output rather than input, which is acceptable in this case.

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 the exact resource ('clients and their sites') and the key selling point (ids for filtering). It is clearly distinct from siblings like trmm_list_agents, trmm_list_alerts, and trmm_list_scripts because it names a different entity. The verb is implied by the tool name and the noun-phrase description, but the meaning is unambiguous.

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

Usage Guidelines3/5

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

The phrase 'with ids for filtering' implies this tool should be used to retrieve client/site IDs for use as filters in other endpoints. However, the description does not explicitly say when to choose this tool over alternatives, nor does it name any sibling tools or exclusions.

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

trmm_list_scriptsA
Read-onlyIdempotent

List scripts available in TRMM. Returns each script's id, which is what trmm_run_script needs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful context that the tool returns script ids needed by trmm_run_script, but does not disclose other behavior like pagination, output shape beyond ids, or how search/limit affect results.

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

Conciseness5/5

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

The description is two short sentences with no wasted words. The primary purpose is stated first, followed by the most important output detail. It is appropriately sized for a simple list tool.

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

Completeness3/5

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

The description covers the core purpose and the key output needed for trmm_run_script, but there is no output schema and no explanation of limit/search semantics or whether additional script fields are returned. For a simple optional-parameter list tool this is acceptable but not fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention the 'limit' or 'search' parameters at all. Although the parameter names are relatively self-explanatory and optional, the description provides no added meaning to help an agent understand how search filtering or result limiting behaves.

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 a specific action and resource: listing scripts available in TRMM. It also explains the key output value — each script's id — and connects it to the downstream trmm_run_script tool, which differentiates it from sibling list tools like trmm_list_agents and trmm_list_alerts.

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 clear context for when this tool is useful: when you need the script id required by trmm_run_script. It does not explicitly contrast this with alternative tools or specify when not to use it, but the purpose is clear enough to guide selection.

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

trmm_pending_actionsA
Read-onlyIdempotent

Pending actions (queued agent work such as reboots or patch installs). Omit agent for the whole fleet.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds contextual meaning about queued work and fleet-vs-agent scope, but does not disclose return shape, ordering, or empty/default behavior. 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 definition is one compact sentence with a parenthetical clarification and a usage instruction. Every word earns its place and the scoping rule is isolated at the end.

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

Completeness4/5

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

For a one-optional-parameter, read-only, idempotent tool, the description is nearly sufficient: it names the resource, gives examples, and explains the only parameter's fleet/agent behavior. It does not describe the result payload, but there is no output schema and the tool's purpose is simple enough that this 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 0% and the schema only shows `agent` as an optional string/null with default null. The description adds the crucial fleet-vs-agent semantics, but does not specify the expected value format (ID, name, etc.), leaving part of the burden on the agent.

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 identifies the resource ('pending actions') and gives concrete examples ('queued agent work such as reboots or patch installs'), so an agent can tell it is a read/list tool for agent work. It lacks an explicit verb and does not contrast with sibling agent tools such as trmm_agent_tasks, so it stays below a 5.

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

Usage Guidelines4/5

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

It gives concrete scoping guidance: omit `agent` for the whole fleet, which implies the agent parameter scopes to a single agent. This is clear operational context, though it does not explicitly name alternatives or exclusion conditions.

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

trmm_server_infoA
Read-onlyIdempotent

TRMM server version, settings and this MCP server's current mode.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds that the tool returns server version, settings, and current mode, but does not explain the output shape or what 'settings' encompasses. This is acceptable for a zero-parameter info tool but not especially rich.

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 short line with no filler words. It front-loads the most useful identifying details—server version, settings, and mode—without redundant phrasing.

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

Completeness4/5

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

For a read-only, zero-parameter tool with no output schema, the description provides a reasonable summary of the return content. It could be more explicit about the exact structure of the response, but given the rich annotations and low complexity, little is missing for an agent to invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics to document. The baseline of 4 applies, and the description creates no parameter-related ambiguity.

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 identifies the resource (TRMM server) and the specific information returned (version, settings, current mode), which distinguishes it from sibling tools focused on agents, clients, alerts, etc. However, it lacks an explicit verb like 'get' or 'return', so it reads more like a label than a full action statement.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as trmm_fleet_overview or trmm_api_get. No conditions, exclusions, or decision criteria are provided, leaving the agent to infer applicability from the tool name alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 20 tool updatesv1.1.0
    • First observedtrmm_agent_checks
    • First observedtrmm_agent_event_log
    • First observedtrmm_agent_history
    • First observedtrmm_agent_processes
    • First observedtrmm_agent_services
    • First observedtrmm_agent_software
    • First observedtrmm_agent_tasks
    • First observedtrmm_agent_windows_updates
    • First observedtrmm_api_get
    • First observedtrmm_audit_log
    • First observedtrmm_debug_log
    • First observedtrmm_fleet_overview
    • First observedtrmm_get_agent
    • First observedtrmm_get_script
    • First observedtrmm_list_agents
    • First observedtrmm_list_alerts
    • First observedtrmm_list_clients_sites
    • First observedtrmm_list_scripts
    • First observedtrmm_pending_actions
    • First observedtrmm_server_info

TDQS

B3.1/5.0
Disambiguation5/5

Each tool targets a clearly distinct resource or action: fleet overview, agent list, agent detail, services, processes, event log, checks, history, software, updates, tasks, clients/sites, alerts, scripts, pending actions, logs, and server info. Even the status-related tools (fleet_overview, list_alerts, pending_actions) are separated by scope and description.

Naming Consistency3/5

All tools share the trmm_ prefix, but the convention after that is inconsistent: some use list_/get_ verbs, others use bare agent_* resource names, and trmm_api_get puts the verb at the end. The names are still readable and grouped by resource, but the pattern is not uniform.

Tool Count3/5

At 20 tools this sits in the heavy range, though the RMM domain is broad and most tools cover a distinct resource type. Some agent read tools could potentially be consolidated, but the count is not unreasonable for the breadth of data exposed.

Completeness3/5

The read/diagnostic side is well covered: fleet health, agent inventory, processes, event logs, software, updates, scripts, alerts, and logs. However, the script lifecycle is incomplete because trmm_list_scripts explicitly references trmm_run_script, yet no run/create/update/delete script tool exists, and the management/action side of an RMM is largely absent aside from a GET-only API escape hatch.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

  • F
    license
    A
    quality
    C
    maintenance
    An MCP server that connects AI assistants to the NinjaOne remote monitoring and management platform via the REST API v2. It provides tools for device inventory, organization management, alert handling, maintenance scheduling, and automated job execution.
    22
    1
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for Kaseya VSA — endpoints, patches, procedures, alarms, and tickets. Enables AI assistants to manage and monitor devices via the Kaseya VSA RMM platform.
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for interacting with the ThreatLocker Portal API, enabling querying of computers, applications, policies, audit logs, and more through AI assistants.
    18
    1
    GPL 3.0

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/shin2344234/trmm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server