OpsChugex LocalOps MCP
Provides read-only inspection and inventory of Linux systems, including host and OS discovery, system health, CPU/memory/disk status, network interfaces, processes, systemd services, installed software, local users/groups, startup programs, scheduled tasks, certificates, SSH key metadata, and environment variable names.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpsChugex LocalOps MCPcheck my local system health, CPU, memory and disk usage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OpsChugex LocalOps MCP
Local Infrastructure, Endpoint & Systems Intelligence
OpsChugex LocalOps MCP is a cross-platform Model Context Protocol server for safely inspecting local Windows and Linux systems. It is designed as the local/private-infrastructure counterpart to the Cloud DevOps MCP Server.
Version 0.2.0 remains intentionally read-only. In addition to system discovery, it adds endpoint inventory for installed software, local identities, startup registrations, scheduled tasks, certificates, SSH key metadata and environment-variable names. It does not provide arbitrary shell execution, process termination, service mutation, file deletion, credential reads, secret values, private-key contents, or remediation.
Why this exists
Cloud operations tools can see cloud resources, deployments and managed services. They often cannot explain what is happening inside a workstation, private server or endpoint.
LocalOps starts at the operating-system layer:
host and operating-system discovery
CPU, memory and disk pressure
network interface inventory
bounded process inspection
Windows service and systemd service inspection
installed software and version inventory
local users, groups and administrator membership
startup program and scheduled-task metadata
certificate and certificate-expiry inventory
SSH key metadata without key contents
environment-variable names without values
normalized Windows/Linux outputs
read-only MCP access with explicit safety boundaries
The long-term goal is evidence correlation across endpoints, private infrastructure, networking, storage and virtualization while keeping advanced OpsChugex intelligence proprietary.
Related MCP server: mcp-vpsobs
v0.2 tools
Tool | Purpose |
| Host, OS, architecture, CPU count and uptime |
| CPU, memory and disk pressure summary |
| Sample CPU utilization and processor metadata |
| Physical memory usage |
| Fixed-disk capacity and utilization |
| Local adapters and assigned addresses |
| Bounded process inventory without command lines |
| Inspect one process by PID |
| Windows services or systemd units |
| Inspect one validated service name |
| System uptime in seconds, hours and days |
| Bounded installed-software inventory with versions |
| Look up versions for requested installed software |
| Compare current software with a caller-supplied baseline |
| Local account metadata without credentials |
| Local group metadata and Linux group membership |
| Built-in Windows administrators or common Linux admin groups |
| Startup registration metadata without command lines |
| Scheduled-task/timer metadata without action commands |
| Certificate metadata without private key material |
| Expired or soon-to-expire certificate evidence |
| SSH-directory file metadata without key contents |
| Environment-variable names and sensitivity flags without values |
Architecture
flowchart TD
Client["MCP Client"] --> Server["OpsChugex LocalOps MCP"]
Server --> Safe["Read-only tool boundary"]
Safe --> Node["Node.js system APIs"]
Safe --> Win["Windows adapter"]
Safe --> Linux["Linux adapter"]
Win --> PS["Fixed PowerShell/CIM reads"]
Linux --> Proc["Fixed ps/df/systemctl reads"]
Server -. future opt-in .-> Core["Private OpsChugex LocalOps Intelligence Core"]The public MCP owns protocol handling, safe collectors, normalization and community-visible integrations. Proprietary correlation, root-cause, risk and remediation decision logic belongs in the private OpsChugex intelligence core.
Quickstart
Requirements:
Node.js 20 or newer
Windows 10/11 or a modern Linux distribution
PowerShell on Windows
ps,dfand systemd tools for the relevant Linux collectors
Clone and run:
git clone https://github.com/alexcgodwin/localops-mcp.git
cd localops-mcp
npm install
npm run build
npm test
npm startFor development:
npm run devSafety model
v0.2 follows a narrow read-only model:
READ allowed
ANALYZE allowed
PLAN future
EXECUTE not exposed in v0.2
DESTRUCTIVE EXECUTION not exposed in v0.2Important controls:
no arbitrary command tool
no arbitrary PowerShell or shell input
no environment-variable values
no SSH key contents or private-key reads
no scheduled-task action commands
no startup command lines
no process command-line collection
bounded list sizes
strict PID validation
strict service-name validation
fixed executable/argument paths
token/password/secret redaction in command errors and output
no administrator/root requirement for normal Node.js collectors
Some platform collectors may require local permission to inspect specific processes or services. Permission failures are returned as errors rather than bypassed.
Public/private boundary
This repository is the public implementation and portfolio-facing gateway.
The separate private OpsChugex LocalOps Intelligence Core is reserved for future proprietary capabilities such as:
evidence correlation
incident timelines
root-cause ranking
confidence models
anomaly detection
risk evaluation
remediation decision logic
fleet-level intelligence
Those algorithms are not included in this MIT repository.
Roadmap
Version | Focus |
0.1 | System discovery, completed |
0.2 | Endpoint inventory, completed |
0.3 | Network intelligence |
0.4 | Event and security evidence |
0.5 | Approval-gated controlled execution |
0.6 | Evidence correlation |
0.7 | Root-cause intelligence |
0.8 | Fleet intelligence |
0.9 | Private infrastructure and virtualization |
1.0 | Production LocalOps platform |
Development principles
Prefer native OS APIs and fixed commands over generic shell execution.
Treat missing evidence as unknown, not as proof of safety or failure.
Keep collection separate from intelligence and remediation.
Normalize Windows and Linux responses into stable MCP schemas.
Require explicit policy and approval gates before future mutation features.
Keep proprietary intelligence outside the public repository.
Relationship to Cloud DevOps MCP
Cloud DevOps MCP Server focuses on cloud infrastructure, Kubernetes, Terraform, CI/CD, observability and cloud operations.
OpsChugex LocalOps MCP focuses on the operating systems, endpoints, local servers and private infrastructure underneath them.
Together they form two separate operational planes rather than overlapping wrappers around the same services.
Author
Built and maintained by Alex C. Godwin under the OpsChugex product brand.
License
MIT. See LICENSE.
Available Tools
23 toolscertificate_expiryCertificate ExpiryBRead-onlyIdempotent
Return certificates already expired or expiring within the requested window.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| withinDays | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| certificates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation, so the safety profile is covered. The description adds useful behavioral scope by clarifying that only expired/expiring certificates are returned. It does not mention default behavior when `withinDays` is omitted or that `limit` caps results, so it adds moderate context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the operation and its filter condition with no wasted words. It is appropriately sized for a simple query tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover the safety profile. However, with zero schema description coverage, the description leaves `limit` undefined and does not specify a default or behavior when `withinDays` is omitted, leaving a notable gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and only one parameter is loosely reflected in the description via 'requested window' (withinDays). The `limit` parameter is not addressed at all, and no defaults, units, or caps are explained. With low schema coverage, the description should compensate more fully but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource ('certificates') with a clear scope: expired or expiring within a window. It distinguishes the filtering behavior from a generic inventory, but does not name the sibling tool `certificate_inventory`, so sibling differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description: use this to find certificates needing attention based on expiration. However, there is no explicit when-to-use or when-not-to-use guidance, and no mention of the related `certificate_inventory` sibling, leaving the agent to infer the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
certificate_inventoryCertificate InventoryARead-onlyIdempotent
Inventory bounded certificate metadata and expiry dates. Private key material is never read or returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| certificates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds genuinely new context by guaranteeing that private key material is never read or returned, which is a substantive security disclosure beyond annotations, plus the 'bounded' hint that results are capped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no waste, with the core purpose front-loaded and the security caveat immediately after. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the read-only nature is well covered by annotations plus the key-material guarantee. The only real gap is failing to clarify the limit parameter's bounds and the distinction from 'certificate_expiry'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter (limit) exists with 0% schema description coverage, and the description only gestures at it with the word 'bounded' without stating the default or the 300 maximum. It adds some meaning but leaves the parameter's behavior underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Inventory') and resource ('certificate metadata and expiry dates'), so the agent knows exactly what is returned. It does not, however, explicitly differentiate itself from the sibling 'certificate_expiry', which overlaps on the expiry-date concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the closely related 'certificate_expiry' or 'ssh_key_inventory' siblings. The agent must infer the distinction between a full inventory and an expiry-focused view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_statusCPU StatusCRead-onlyIdempotent
Sample CPU utilization and return processor metadata and load averages.
| Name | Required | Description | Default |
|---|---|---|---|
| sampleMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| model | Yes | |
| speedMHz | Yes | |
| loadAverage | Yes | |
| logicalCores | Yes | |
| usagePercent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds that the tool samples utilization and returns metadata and load averages, but does not explain sampling duration, blocking behavior, or any auth/rate-limit 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is appropriately sized for a simple status tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with rich annotations and an output schema, the description covers the basic purpose adequately. However, it omits usage guidance and parameter semantics, leaving meaningful gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (sampleMs) with 0% schema description coverage, and the description never mentions it or explains its effect on the sampling window. The description therefore fails to compensate for the schema coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb + resource (sample CPU utilization) and enumerates return content (processor metadata, load averages). It is clearly distinct from siblings like memory_status and disk_status, though it does not explicitly differentiate itself from broader tools such as system_info or system_health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. It implies a CPU-specific inspection context but gives no conditions, exclusions, or routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disk_statusDisk StatusARead-onlyIdempotent
Inspect fixed local disk capacity and utilization using a bounded platform-specific command.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| disks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, non-open-world behavior, so the safety profile is fully covered. The phrase 'bounded platform-specific command' adds a little context (it won't run unbounded, and results are platform-dependent) but says nothing about permissions, output variability across OSes, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource defined before the implementation note. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and no parameters exist to document. The remaining gap is routing: the description does not say how this differs from system_info or system_health, which may also surface disk data, so an agent could still pick the wrong tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case under the rubric. There is nothing for the description to disambiguate, and the empty schema is consistent with a parameterless inspection call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (inspect) and a well-scoped resource: fixed local disk capacity and utilization. 'Fixed local disk' cleanly separates it from siblings like memory_status, cpu_status, and network_interfaces, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent can infer this is the tool for disk capacity, and the 'fixed local' qualifier hints that removable/network volumes are out of scope. There is no explicit when-to-use, when-not, or routing versus system_info/system_health, which plausibly overlap on disk data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
environment_variables_summaryEnvironment Variables SummaryBRead-onlyIdempotent
Return environment-variable names and a sensitive-name flag only. Values are never exposed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| variables | Yes | |
| returnedCount | Yes | |
| valuesExposed | Yes | |
| variableCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a full safe-read profile (readOnlyHint, idempotentHint, non-destructive), so the bar is lower. The description adds genuinely valuable context beyond them: only names plus a sensitive-name flag are returned and values are never exposed, which is a meaningful privacy/security guarantee. It does not cover pagination or how 'limit' truncates results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler. The most important constraint — names only, values never exposed — is front-loaded and unmistakable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be re-explained, and the description correctly summarizes what is returned. However, the tool's only parameter is undocumented in both schema and prose, leaving a real gap for a low-complexity read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single 'limit' parameter with 0% schema description coverage, and the description never mentions it — no default, no max, no explanation of what gets limited. The schema alone would not tell an agent how to use it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Return environment-variable names') and precisely bounds the scope with 'and a sensitive-name flag only. Values are never exposed.' This clearly separates it from siblings like system_info or installed_software, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives for inspecting environment data, and no stated prerequisites. Usage is only loosely implied by the returned content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_processInspect ProcessARead-onlyIdempotent
Inspect one local process by numeric PID without returning its environment or command-line arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| process | Yes |
TDQS
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. The description adds a genuinely useful negative guarantee, that environment and command-line arguments are NOT returned, plus a local-only scope. It stops short of describing what data is returned or any auth requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence front-loading the action and resource, with the output exclusion clause following. Every phrase earns its place; nothing is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. The negative output guarantee and local-only scope fill the remaining gaps for a single-param read tool; only the PID validity/error behavior is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter at 0% schema description coverage, the description must carry the load and it does: 'by numeric PID' clarifies the identifier type (a number, not a process name). It omits valid range or lookup-failure behavior, but adds the essential semantic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (inspect) and resource (one local process) bounded by a numeric PID, which implicitly separates it from the plural list_processes sibling. It does not name the sibling explicitly, but the singular/targeted scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is for drilling into a single known PID rather than enumerating processes. There is no explicit when-to-use/when-not statement or named alternative such as list_processes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
installed_softwareInstalled SoftwareARead-onlyIdempotent
Return a bounded installed-software inventory with versions and publisher metadata. Windows reads uninstall registry metadata; Linux uses the available package database.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| packages | Yes | |
| packageManager | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the platform-dependent data sources (Windows uninstall registry vs Linux package database), which tells an agent why results may differ across hosts and why some software may be missed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the core purpose and the platform data sources are front-loaded in that order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the description covers the key cross-platform behavioral caveat. The remaining gap is the limit parameter's default/capping behavior, which matters for an agent deciding whether results are complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter (limit) with 0% schema description coverage, so the schema carries no meaning. The description's word 'bounded' implies the inventory is capped by that limit, but it does not state the default value, the 500 maximum, or pagination/truncation behavior, leaving most of the parameter's semantics undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — returning an installed-software inventory — and adds that it includes versions and publisher metadata, which distinguishes it from the bare 'software_changes' sibling. It does not explicitly contrast with 'software_versions', so the boundary between those two inventory-style siblings is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this tool instead of software_versions or software_changes, nor any precondition (e.g., permissions, platform requirements beyond the OS data sources). Usage must be inferred entirely from the one-line scope statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_processesList ProcessesARead-onlyIdempotent
List a bounded number of local processes with basic resource metadata. Command lines and environment variables are not returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| processes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior, so the bar is lower. The description adds genuinely useful non-annotated detail: results are bounded and command lines/environment variables are deliberately excluded, which matters for both volume and sensitivity expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, and the exclusion statement earns its place by preventing a common misuse. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be explained, and annotations cover the safety profile. The description supplies the key scoping facts (bounded, no command lines/env vars). Only the parameter's default/meaning is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'limit' parameter has no description beyond a 1-200 integer range. The word 'bounded' gestures at the cap but does not explain what limit controls (count of processes returned, default value, or behavior when omitted). Marginal value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List ... local processes') plus the scope qualifier 'bounded number' and the metadata class ('basic resource metadata'). It does not explicitly name or contrast with the sibling inspect_process, which is the natural alternative for detailed process data, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the note that command lines and environment variables are not returned hints that inspect_process is the tool for that detail, but neither that sibling nor any when-to-use/when-not condition is named. An agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesList ServicesARead-onlyIdempotent
List a bounded number of Windows services or systemd services and their states.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| services | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds useful context that the result is bounded and includes states, but does not disclose the default bound, pagination, or truncation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key scoping adjectives ('bounded', 'their states') front-loaded. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the cross-platform (Windows/systemd) scope is stated. The only real gap is the undocumented default for the limit parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage, so the description must carry it. 'Bounded number' loosely maps to the 'limit' parameter (schema constrains it to 1-300) but no default value or practical cap guidance is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('List') and resource ('Windows services or systemd services and their states'), making the platform scope clear. It distinguishes itself from 'service_status' only implicitly (plural listing vs. single-service inspection), so sibling differentiation is not explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a bulk-enumeration use case but never states when to call this versus 'service_status' for a single service, nor any prerequisites. Usage is left to be inferred from the plural phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
local_adminsLocal AdministratorsARead-onlyIdempotent
Identify members of the built-in Windows Administrators group or common Linux administrative groups without modifying membership.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| administrators | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered; the description's 'without modifying membership' largely restates this. It does add useful context that results span built-in Windows and common Linux admin groups, which the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and resource and ends with the read-only scope constraint. Nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, rich annotations, and an output schema present, the description does not need to explain return values. It supplies the cross-platform scope, though it could say more about which groups qualify on Linux.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the description has no parameter semantics to explain and the schema is fully covering. Baseline 4 for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (identify) and resource (members of Windows Administrators group / Linux admin groups) with cross-platform scope. It does not explicitly differentiate itself from close siblings like local_groups and local_users, so an agent must infer the distinction, but the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance or mention of alternatives, despite siblings (local_groups, local_users) that overlap in domain. The 'without modifying membership' clause is a scope constraint, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
local_groupsLocal GroupsBRead-onlyIdempotent
Return bounded local group metadata and Linux group membership where available.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| groups | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the 'bounded' qualifier and the 'where available' platform caveat, but says nothing about permissions required to enumerate groups or how suppression/truncation behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler and the resource front-loaded. It is efficient, though it spends words on the 'where available' hedge rather than on the parameter it leaves unexplained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover the read-only nature. However, for a tool with an undocumented limit parameter and no usage routing among the many sibling inventory tools, the description is only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single 'limit' parameter (1-300) is undocumented in both schema and description. 'Bounded' loosely alludes to a size cap but gives no default, no maximum, and no statement of what happens when results exceed the limit; the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it returns local group metadata and Linux group membership. This clearly distinguishes it from most siblings, though it never names the closest sibling (local_users) or explicitly contrasts group vs user data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of when to prefer local_groups over local_users or local_admins. The only usable context is the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
local_usersLocal UsersBRead-onlyIdempotent
Return bounded local account metadata. Passwords, password hashes and credential material are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| users | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description does add real value beyond them by stating output is 'bounded' and that passwords/hashes/credentials are never returned, which is a security-relevant guarantee the annotations do not express. It still says nothing about ordering, pagination, or count of accounts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the credential-exclusion guarantee is stated immediately after the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and the credential exclusion is a useful addition. However, for a tool with a zero-documented, unbounded-looking parameter and no usage routing vs three neighbouring account tools, the description leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'limit' parameter (max 300) is only obliquely implied by the word 'bounded'. The description does not state the bound or the default, so the schema's maximum/minimum constraints carry the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return bounded local account metadata'), which is clear enough to distinguish from local_groups and local_admins. It does not, however, explicitly name those siblings or say how the accounts differ (local vs domain, admin vs all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all: nothing tells the agent when to pick this over local_admins or local_groups, nor any prerequisites. Usage must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_statusMemory StatusARead-onlyIdempotent
Return total, used and available physical memory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| freeBytes | Yes | |
| usedBytes | Yes | |
| totalBytes | Yes | |
| usagePercent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds only return fields, which the output schema likely covers, and discloses no additional behavioral context such as permissions or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words, front-loading the resource and returned metrics. It is appropriately sized for a simple status tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description is nearly sufficient for a zero-parameter read-only tool. It is clear enough to invoke correctly, though it could mention sibling alternatives like system_info for better routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, and it correctly adds no misleading input information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: return total, used and available physical memory. Clear what it does. Does not explicitly differentiate from siblings like system_info, which may also expose memory details, so not a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource and sibling naming, but no when-to-use, when-not-to-use, or alternative guidance is provided. An agent can infer it for memory status, but must decide on its own versus system_info or system_health.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_interfacesNetwork InterfacesARead-onlyIdempotent
List local network interfaces and assigned addresses. No network probing is performed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| interfaces | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing that 'No network probing is performed' – an important scope guarantee that the tool only reads local configuration rather than scanning the network.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the resource is front-loaded and the scope caveat follows immediately. No filler and nothing that fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be documented, and annotations plus the description cover safety and scope. For a zero-parameter read tool this is nearly complete; only an explicit note on when to prefer it over system_info would add value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly avoids inventing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('local network interfaces and assigned addresses'), which is clear and distinct from generic siblings like system_info or system_health. It does not explicitly name a sibling it differs from, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context of use (inspecting local host configuration) is implied by the description but never stated, and no alternatives or exclusions are named among the many sibling system-inspection tools. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scheduled_tasksScheduled TasksARead-onlyIdempotent
Inventory Windows scheduled tasks or Linux systemd timers and cron directory entries without returning task action commands.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description adds a genuinely useful behavioral detail beyond the annotations: task action commands are deliberately omitted from the results, which matters for both security sensitivity and what the agent can expect back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resources, followed by the redaction qualifier. Every clause earns its place with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description needn't explain return values, and the annotations cover the safety profile. It covers platforms, scope and the redaction caveat; only the limit parameter is unaddressed, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions the single 'limit' parameter. However, the parameter is a trivial optional integer constrained by min/max, so it is largely self-explanatory from the schema alone; this lands at the baseline rather than below it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (inventory) and the exact resources covered (Windows scheduled tasks, systemd timers, cron directory entries). It is clearly distinguishable from siblings like startup_programs and list_services, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope — an agent can infer this is the tool for scheduled task/timer enumeration — but there is no explicit when-to-use or when-not-to-use guidance versus startup_programs or list_services.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_statusService StatusARead-onlyIdempotent
Inspect one Windows or systemd service. Service names are strictly validated before use.
| Name | Required | Description | Default |
|---|---|---|---|
| serviceName | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| service | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds the validation constraint ('service names are strictly validated before use'), which is genuinely new context, but says nothing about permissions, failure modes, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource; both sentences carry weight with no filler. Slightly terse rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. For a single-parameter read tool the description is nearly complete; only the accepted name format and the validation rules remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage, so the schema supplies only minLength/maxLength with no semantics. The description adds that the name is strictly validated, which is useful, but never states the expected format (e.g. 'nginx' vs 'nginx.service') or what makes a name valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (inspect) and resource (a single Windows or systemd service), and the word 'one' implicitly contrasts with the sibling list_services. It stops short of naming that sibling, so it is clear but not fully disambiguated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The singular scope implies use when a specific service name is already known, versus listing all services, but no alternative is named and no conditions or prerequisites are stated. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
software_changesSoftware ChangesARead-onlyIdempotent
Compare the current bounded installed-software inventory with a caller-supplied baseline. The server does not persist a baseline or write to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| previousInventory | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| added | Yes | |
| removed | Yes | |
| limitation | Yes | |
| currentCount | Yes | |
| baselineCount | Yes | |
| versionChanged | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new behavior beyond that: no baseline persistence and no disk writes, which tells the agent the comparison is stateless and repeatable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding, with the core comparison stated first and the stateless caveat second. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the stateless behavior is disclosed. The gaps are the undocumented input shape (no schema descriptions) and thin guidance on matching semantics (name vs name+version) and behavior at the 500-item limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only labels the input as a 'caller-supplied baseline'. It omits the array-of-objects structure, the name/version fields, and the 500-item cap that the schema enforces, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (compare) plus resource (current installed-software inventory against a caller-supplied baseline), which is meaningfully distinct from the sibling inventory tools like installed_software and software_versions. It does not name those siblings explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The statement that the server does not persist a baseline implies the caller must retain and supply their own, which is implied usage guidance. However, there is no explicit when-to-use, when-not-to-use, or routing advice versus installed_software / software_versions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
software_versionsSoftware VersionsARead-onlyIdempotent
Look up installed versions for up to 50 requested software names without launching or modifying the software.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | Yes | |
| requested | Yes | |
| packageManager | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds useful behavioral context beyond those hints by stating it will not launch or modify the software, which clarifies that version detection is passive rather than execution-based.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. The core action, scope, and non-invasive behavior are all delivered immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be described, and the annotations carry the safety profile. However, for correct invocation, the description should clarify how software names are matched and how this differs from installed_software, both of which are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter 'names'. The description only restates that these are software names and repeats the 50-item limit already present in the schema; it does not explain matching rules, expected name format, case sensitivity, or how partial or unknown names are handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('look up'), resource ('installed versions'), and scope ('up to 50 requested software names'). It implies a focused query rather than a full inventory, but does not explicitly name the sibling tool installed_software, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for using the tool with a bounded list of requested software names, but it does not say when to choose this over installed_software or software_changes. Usage is implied rather than explicitly framed with when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_key_inventorySSH Key InventoryARead-onlyIdempotent
List metadata for files in the current user's SSH directory. Key contents, private key material and authorized key contents are never read or returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| keys | Yes | |
| directory | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world. The description adds genuinely valuable behavioral context beyond that: key contents, private key material and authorized_keys contents are never read or returned. It does not cover pagination behavior, but the privacy guarantee is a meaningful addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, and the scope statement is front-loaded before the negative guarantee. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so field-level return detail is unnecessary, and the description correctly focuses on scope and privacy constraints. Only the undocumented 'limit' parameter leaves a small completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single 'limit' parameter with 0% schema description coverage, and the description never mentions it, so it fails to compensate for the documentation gap. An agent gets no hint about what limit controls or its bounds from prose. The name is fairly self-explanatory, which keeps this from the bottom of the scale.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List metadata') and resource ('files in the current user's SSH directory'), with the scope ('current user's') explicitly bounded. It is unambiguous what this tool returns and how it differs from system/certificate inventory siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description's scope (listing SSH directory file metadata), but there is no explicit when/when-not guidance or named alternative. With no competing SSH-key sibling, the absence of routing is tolerable but still leaves guidance at an implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startup_programsStartup ProgramsARead-onlyIdempotent
Inventory Windows startup registrations or enabled Linux systemd/XDG startup entries. Startup command lines are intentionally not returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| startupPrograms | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds a genuinely non-obvious behavioral disclosure: startup command lines are intentionally omitted, which tells the agent what data will be missing from the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, scope front-loaded and the data-omission caveat placed second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return shapes need not be explained, and annotations cover safety. Scope and the command-line omission are stated; the only real gap is that the limit parameter and its effect are left entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter (limit, max 300) has 0% schema description coverage and is not mentioned at all in the description. With low coverage the description should compensate, but it says nothing about pagination or result-size control.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (inventory) and resource (Windows startup registrations, Linux systemd/XDG startup entries), and disambiguates by platform. Clearly distinguishable from siblings like scheduled_tasks, list_services, and installed_software.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the platform-scoped resource but no explicit when-to-use or when-not-to-use guidance is given, and no alternative sibling is named for overlapping cases such as scheduled_tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_healthSystem HealthARead-onlyIdempotent
Summarize CPU, memory and fixed-disk pressure without changing the host.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| health | Yes | |
| reasons | Yes | |
| hostname | Yes | |
| uptimeSeconds | Yes | |
| cpuUsagePercent | Yes | |
| memoryUsagePercent | Yes | |
| maxDiskUsagePercent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and 'without changing the host' essentially restates that safety profile rather than extending it. The description adds no new behavioral context such as sampling window, refresh cost, or what the summary aggregates across. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the verb, the three measured resources, and the non-mutating guarantee. No filler, no restatement of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be described, and there are no parameters to document. The description usefully scopes 'fixed-disk' (excluding network/removable volumes) against a large sibling set, though it could say more about what the aggregate summary contains given how many granular siblings exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. The schema is empty and fully covered, leaving no parameter semantics gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (summarize) and explicit resource scope (CPU, memory, fixed-disk pressure), so an agent knows it is an aggregate read rather than a single-subsystem query. It does not explicitly name cpu_status/memory_status/disk_status as the granular alternatives, so sibling differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: reach for this when a consolidated health snapshot is wanted rather than per-subsystem detail. There is no explicit statement of when to prefer this over cpu_status, memory_status, or disk_status, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_infoSystem InformationBRead-onlyIdempotent
Return bounded operating-system and host metadata using Node.js system APIs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| machine | Yes | |
| release | Yes | |
| version | Yes | |
| hostname | Yes | |
| platform | Yes | |
| architecture | Yes | |
| uptimeSeconds | Yes | |
| logicalCpuCount | Yes | |
| operatingSystem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds only the word 'bounded', hinting at a truncated/limited payload, but says nothing about what is truncated or how.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity comes at the cost of scope detail rather than being a model of informative concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile for this zero-param read. The remaining gap is scope definition relative to the dense set of more specific sibling diagnostics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. Nothing about parameters needs documenting and the description does not need to compensate for any schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (operating-system and host metadata), which is clear on its own. However, with 22 siblings including uptime, cpu_status, memory_status, disk_status and network_interfaces, it does not say how it differs from those narrower tools or what 'bounded' scope actually covers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no mention of any alternative among the many overlapping diagnostic siblings. The agent must guess whether to call this or the specific cpu/memory/disk tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptimeSystem UptimeARead-onlyIdempotent
Return system uptime in seconds, hours and days.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uptimeDays | Yes | |
| uptimeHours | Yes | |
| uptimeSeconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety and side-effect profile is fully covered by structured data. The description's only addition is the format of the returned value (seconds, hours, days), which is minor 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the resource and the unit of the result with no waste. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with complete annotations and an output schema, the description is adequate; the return format is already covered by the output schema, so the brief description loses little. It could name its sibling boundary (e.g. vs system_info) but is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate; per the rubric, a parameter-free tool has a baseline of 4. The description correctly implies the tool is argument-free.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (system uptime) and even specifies the units returned (seconds, hours, days). It does not explicitly differentiate itself from the sibling system_info, which could plausibly include uptime, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative routing guidance. The tool's purpose is fairly self-evident from the name, but the description provides no explicit context for selecting it over system_info or system_health.
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.
23 tool updates
v0.2.0- First observed
certificate_expiry - First observed
certificate_inventory - First observed
cpu_status - First observed
disk_status - First observed
environment_variables_summary - First observed
inspect_process - First observed
installed_software - First observed
list_processes - First observed
list_services - First observed
local_admins - First observed
local_groups - First observed
local_users - First observed
memory_status - First observed
network_interfaces - First observed
scheduled_tasks - First observed
service_status - First observed
software_changes - First observed
software_versions - First observed
ssh_key_inventory - First observed
startup_programs - First observed
system_health - First observed
system_info - First observed
uptime
TDQS
Scored across 23 tools
Most tools target distinct resources or actions, but the system health area has some overlap: system_health summarizes CPU, memory, and disk while cpu_status, memory_status, and disk_status provide detailed views of the same domains. Descriptions help distinguish them, but an agent could still hesitate between a summary tool and a detail tool.
All names use snake_case, which is consistent, but the conventions vary between noun phrases (system_info, cpu_status, network_interfaces) and verb-led names (list_processes, inspect_process, list_services). The pattern is readable but not uniform verb_noun throughout.
23 tools sits in the 16-25 range that the rubric calls borderline heavy for a server's scope. While many tools serve distinct read-only inspection needs, several could be consolidated with the summary tools, making the surface feel somewhat expansive.
Coverage is broad for local read-only system inspection: hardware, OS, processes, services, software, users, security artifacts, startup, and scheduled tasks are all represented. Minor gaps exist, such as network connection/port inspection and event log access, but agents can work around most of these.
Maintenance
Related MCP Connectors
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Official-source US business, permit, and WHOIS evidence via read-only MCP tools.
Remote MCP for Android CLI agent build gate, structured receipts, audit logs, and reviewer-ready evi
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Related MCP Servers
- FlicenseAqualityCmaintenanceA secure, read-only MCP server for AI-powered system monitoring. It provides real-time OS metrics, config discovery, and safe log tailing to enable autonomous infrastructure audits without shell access risks.41-
- AlicenseNot gradedqualityCmaintenanceEnables read-only observability of a Linux host via MCP, exposing allowlisted systemd, docker, nginx, logs, disk, and cert info without shell access.MIT
- AlicenseNot gradedqualityBmaintenanceRead-only MCP server for observing Linux hosts (systemd, ZFS, Docker, VMs, network, hardware, NixOS) as a graph of objects with provenance. Provides seven tools to list hosts, get status, collections, objects, evidence, lookup, and changes.1GPL 3.0
- FlicenseAqualityCmaintenanceEnables observation-only system inspection through MCP, exposing system identity, resources, process summary, and network summary without any mutation or command execution.4-