vela-mcp
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., "@vela-mcpwhat's the current CPU usage on the remote host?"
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.
Vela MCP Server
MCP (Model Context Protocol) server that exposes Vela RemotePC endpoints as tools, so AI clients (Claude Desktop, Cline, Cursor, Gemini, etc.) can control remote systems.
Architecture
The server supports two transport modes that share the same 150+ tool definitions (tools.py):
1. STDIO (single-tenant, per-process)
Each process is bound to one agent via environment variables. Run multiple agents by defining multiple entries in mcp_settings.json, each with its own env block.
MCP client config (cline_mcp_settings.json or claude_desktop_config.json):
{
"mcpServers": {
"vela-home": {
"command": "/path/to/.venv/bin/mcp",
"args": ["run", "vela_mcp/tools.py:mcp"],
"cwd": "/path/to/vela-mcp",
"env": {
"VELA_API_URL": "https://vela.mikesplore.tech",
"VELA_TOKEN": "<relay_secret>",
"AGENT_ID": "agt_123"
}
},
"vela-work": {
"command": "/path/to/.venv/bin/mcp",
"args": ["run", "vela_mcp/tools.py:mcp"],
"cwd": "/path/to/vela-mcp",
"env": {
"VELA_API_URL": "https://vela.mikesplore.tech",
"VELA_TOKEN": "<relay_secret>",
"AGENT_ID": "agt_456"
}
}
}
}2. HTTP (multi-tenant, shared server)
A single server instance handles any number of agents. Create a scoped MCP connection with vela --mcp; it returns an opaque URL and a dedicated bearer credential:
MCP URL: https://mcp.mikesplore.tech/mcp/c_8f4a...
Authentication: Bearer <mcp-credential>The MCP credential is stored as a hash and can expire or be revoked independently of the Vela relay secret. The gateway resolves the connection to its agent and uses the relay secret internally. Neither agent_id nor relay_secret is accepted in the MCP URL.
Claude connectors select OAuth during setup. The gateway provides OAuth discovery, dynamic client registration, PKCE authorization, short-lived bearer access tokens, and rotating refresh tokens. During authorization, enter the MCP credential printed once by vela --mcp; supported clients can then renew access without asking for that credential again.
MCP tool safety
The gateway applies the same risk categories used by Vela’s assistant. Read-only tools execute immediately. Medium- and high-risk tools return a short-lived, single-use approval link and request_id instead of executing. Open the returned approval_url, approve once, then let the MCP client continue the exact pending request. The server claims and completes that request atomically, so duplicate continuations cannot execute the action twice. High-risk approvals also require the Vela ASSISTANT_ACTION_PIN when one was configured during connection creation.
Each MCP connection has a user-selected tool policy: strict (default) requires approval for medium/high-risk tools, read_only exposes only read-only tools, and open executes all exposed tools without MCP approval. Set MCP_TOOL_POLICY in the agent .env, or override one connection with vela --mcp --mcp-policy read_only.
Stdio mode also supports strict approvals. The first gated call starts a
loopback-only approval page on 127.0.0.1, returns a one-time local link, and
waits for the client to continue the request. The server never opens the
browser automatically and the page is not reachable from the network. Set
ASSISTANT_ACTION_PIN in the MCP environment if high-risk local approvals
should require a PIN.
How multi-tenancy works
vela-mcp stores scoped MCP connection records. It extracts only an opaque connection ID and a dedicated MCP credential from each request, then resolves the agent server-side.
velavps (the relay server) enforces isolation:
_verify_agent_access(agent_id, secret)rejects requests where the secret doesn't match the agent's registered secret, or where the agent belongs to another user.150+ tools are untouched — they call
vela_client.get/post/…which resolves to either the per-request or per-process client automatically.
Related MCP server: allcanuse-mcp
Quick Start
python -m vela_mcp.serverServer starts on http://0.0.0.0:8002 with the MCP endpoint at /mcp/{connection_id}.
Setup
Copy
.env.exampleto.envSet
VELA_API_URL— your Vela relay VPS host (e.g.https://vela.mikesplore.tech)For stdio mode: also set
VELA_TOKEN(relay secret) andAGENT_IDFor HTTP mode: you only need
VELA_API_URLandPORT; credentials come from the client
Run Script
./run.sh # start the MCP server (HTTP/streamable transport)
./run.sh dev # start the MCP Inspector (dev/testing UI)Project Layout
vela_mcp/
__init__.py
config.py # Settings (VELA_API_URL, VELA_TOKEN, AGENT_ID, PORT)
client.py # RelayConnection, VelaClient, per-request contextvar proxy
server.py # FastAPI app with scoped middleware at /mcp/{connection_id}
tools.py # 150+ MCP tool definitions (unchanged)Development
.venv/bin/mcp dev vela_mcp/tools.py:mcpRequirements
Python >= 3.10
mcp >= 1.0.0fastapi >= 0.110.0httpx >= 0.27.0pydantic-settings >= 2.0.0uvicorn >= 0.30.0
Available Tools
183 toolsactive_windowARead-onlyIdempotent
Get the currently focused window title and app path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the output data points (title and app path) but does not disclose potential edge cases such as empty titles, permission failures, or platform-specific behavior. This is acceptable but not richly transparent.
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 exactly what the tool returns with no filler or repetition. Every word contributes useful 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, the description is complete: it names the resource ('focused window') and the output fields ('title and app path'). No output schema exists, but the description adequately covers what an agent will receive.
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 has zero parameters, so there are no parameter semantics to explain. The description correctly requires no arguments, and the baseline for zero-parameter tools is appropriate here.
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 uses a specific verb ('Get') with a precise resource ('currently focused window') and names the returned data ('title and app path'). It is clearly distinct from sibling tools like minimize_window or close_window, which perform actions rather than report state.
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 clearly implies when to use it: when the currently focused window's title or app path is needed. It doesn't explicitly name alternatives or exclusions, but for a simple read-only status tool, the intended usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_devicesARead-onlyIdempotent
List available audio sinks and sources.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the description does not need to restate safety. It adds the 'available' qualifier, but does not mention what the returned list contains (e.g., names, IDs, default device) or whether it includes both sinks and sources in a single merged list or separate structures. This leaves some behavioral ambiguity 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?
The entire description is a single compact sentence that front-loads the action ('List') and the object ('available audio sinks and sources'). There is no filler, repetition, or extraneous 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 list tool, the description states enough to invoke the tool correctly. However, since there is no output schema, the lack of any detail about the returned structure (field names, whether it's a combined list, how to identify devices) is a small gap. The openWorldHint suggests the output may vary, but the description adds no guidance there.
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 input schema has zero propertieston, so there are no parameter semantics to clarify. The description's brevity is appropriate; no parameter information could add value here, and the baseline of 4 is justified.
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 uses a specific verb ('List') and a precise resource ('available audio sinks and sources'), making it clear what the tool does. It naturally distinguishes itself from siblings like get_volume, set_output_device, and mute_audio by referring to the enumeration of sink/source endpoints rather than volume or device selection.
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 use case (listing devices before selecting an output with set_output_device) but does not explicitly state when to use it versus alternatives, and it offers no exclusion criteria. For a simple list operation, the usage context is reasonably obvious, but the description itself provides no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beep_audioA
Play a simple notification beep sound.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the context that this is a 'simple notification beep' rather than media playback, which is useful beyond the raw annotations. However, it does not disclose details like volume dependence, return behavior, or what happens if no audio device is available. Annotations already indicate side effects (readOnlyHint=false), so the bar is lower.
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?
The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's 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?
For a zero-parameter utility that plays a beep, the description is essentially complete. It does not describe the return value or failure modes, but given the trivial nature of the tool and the annotations covering side-effect behavior, no critical information is 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?
With zero parameters and a fully covered empty schema, the description does not need to explain parameter meanings. The baseline for no parameters is 4, and the description adds no unnecessary param details.
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 clearly states the action ('play') and resource ('a simple notification beep sound'), which is specific enough to distinguish it from audio-related siblings like set_volume, mute_audio, and search_and_play. It conveys exactly what the tool does without ambiguity.
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 such as send_notification or audio playback tools. The description implies basic usage but does not state any context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_jobA
Cancel a scheduled task.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey the mutation profile (readOnlyHint=false, idempotentHint=false), so the description carries a lighter burden. It adds the scheduled-task scope but does not explain effects on a running task, whether the schedule entry is removed, or error 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. Every word 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?
For a simple one-parameter cancellation tool, the core call is clear, and annotations cover the safety profile. However, the description omits expected behavior after cancellation and source of task_id, leaving minor but real gaps for an agent.
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 0% schema description coverage, the description must compensate. It does tie the single task_id parameter to 'a scheduled task,' but it does not say where the ID comes from or what format it uses. The parameter name itself is self-explanatory enough to make this minimally viable.
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 uses a specific verb ('Cancel') and resource ('a scheduled task'), making the operation immediately clear. It is semantically distinct from sibling tools like schedule_job, list_jobs, and run_job_now without needing to inspect their schemas.
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 a task being scheduled implies when to use the tool, but the description gives no explicit guidance on prerequisites or alternatives. It does not tell an agent to use list_jobs to find the task_id or mention differences from run_job_now, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_alert_statusARead-onlyIdempotent
Check the monitoring system status: whether spike alerts and daily summaries are scheduled, alerts today, and recipient email from .env. No email input needed — reads RECIPIENT_EMAIL from .env.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, the description adds valuable behavioral context: it reads configuration from .env and requires no caller-supplied email. This external dependency and the absence of parameters go beyond what annotations alone 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?
Two tightly written sentences deliver all essential information: what is checked, the source of the email, and the absence of required input. There is no filler, and the most actionable detail (no email input needed) is front-loaded.
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 status tool with no output schema, the description is complete. It enumerates the status components returned and removes ambiguity about input and configuration source, so an agent can call it correctly without further investigation.
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 zero parameters, the baseline is already 4, and the description exceeds it by explicitly addressing why no email parameter exists and where the recipient email comes from (RECIPIENT_EMAIL in .env). This prevents an agent from inventing or expecting an email parameter.
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 names a specific verb ('Check'), a clear resource ('the monitoring system status'), and the concrete facts it returns: spike alert and daily summary scheduling, today's alerts, and the configured recipient email. This is more specific than any sibling tool and establishes a distinct identity.
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 clearly states that no email input is needed because RECIPIENT_EMAIL is read from .env, which is useful usage context. However, it does not explicitly say when to prefer this tool over related tools like send_test_spike_alert, send_daily_summary_now, or check_vnstat_status; usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_package_installedBRead-onlyIdempotent
Check whether a package is installed (apt/dnf/pacman).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
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 well covered. The description adds supported package managers but does not disclose the result format, behavior for unknown packages, or how the manager is selected. 'Check whether' implies a boolean result but it is not explicit.
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?
The description is a single short sentence with a helpful parenthetical listing supported package managers. It is front-loaded with the action and target, and contains no filler or redundant 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?
For a simple, single-parameter, read-only check with strong annotations the description is mostly sufficient, and naming supported managers adds useful context. However, with no output schema it does not explicitly state the return type or behavior when the package is not installed, leaving some ambiguity. A brief note on the expected result would make it fully 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?
The schema has 0% description coverage and only a required string 'name'. The description implies that 'name' is a package name and hints at package managers, which partially compensates for the missing schema description. It does not specify format, case sensitivity, or which package manager is used for a given system.
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 clearly states the action ('Check whether') and target resource ('a package is installed'), and lists supported package managers (apt/dnf/pacman), making the purpose unambiguous. It does not explicitly differentiate from siblings like list_installed_applications or check_updates, though the intent is distinct.
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 explicit guidance is provided on when to use this tool versus alternatives. Siblings such as list_installed_applications and check_updates exist, but the description does not mention them or state when this tool is preferred. Usage is only implied by the name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_portARead-onlyIdempotent
Find what process is listening on a TCP port on this machine. Use when the user asks what service/app uses a port, what's on port X, or if a port is open (e.g. 8765 for the local Vela API). Returns PID, process name, and command line.
| Name | Required | Description | Default |
|---|---|---|---|
| port | 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 bar is lower. The description adds value by stating the output: 'Returns PID, process name, and command line.' It does not cover edge cases like an unoccupied port or permission restrictions, but the safety profile is fully covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, usage trigger, and return value. The example is embedded efficiently. No fluff or repetition.
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 read-only tool with strong annotations, the description covers what it does, when to use it, and what it returns. The main missing piece is behavior when nothing is listening on the port, but this is a minor gap and likely inferable from the operation.
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 description must compensate. It clarifies that the port is a TCP port and gives a concrete example (8765). For a single integer parameter, this is sufficient practical guidance, though it does not specify valid ranges or behavior on invalid input.
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?
Description opens with 'Find what process is listening on a TCP port on this machine,' naming a specific verb, resource, and scope. It clearly distinguishes itself from network connectivity tools like ping_host and process tools like list_processes, and includes a concrete example (Vela API port 8765).
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 provides explicit usage triggers: 'when the user asks what service/app uses a port, what's on port X, or if a port is open.' It stops short of naming alternative tools or exclusion criteria, but the use cases are concrete enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_updatesARead-onlyIdempotent
Check for available system updates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds no further behavioral context (e.g., network dependence, return format), relying entirely on annotations. Since annotations carry the burden, the description meets the baseline but adds nothing extra.
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 redundancy. It communicates the core purpose efficiently without extra words.
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 no-parameter, read-only tool with robust annotations, the description covers the essential purpose. The only gap is the unspecified return format (e.g., boolean, list), but this is minor for such a simple check operation.
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 are zero parameters, so the description has nothing to explain beyond the tool's purpose. The schema is empty and the description correctly states the operation without needing parameter details.
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 ('Check') and resource ('system updates'), clearly distinguishing it from the sibling tool 'run_update' which applies updates. The name reinforces the action, making the tool's intent 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 context is implied by the name and the presence of 'run_update' as a sibling, but the description does not explicitly state when to check vs. apply updates. An agent could infer it, but no direct guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_vnstat_statusARead-onlyIdempotent
Check if vnstat is installed, its version, and which network interfaces it's monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 covered. The description adds useful detail about what the tool checks (installation, version, interfaces) but does not describe output format or behavior when vnstat is absent. This is consistent with annotations, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear, front-loaded sentence conveys the full purpose and output scope with no filler or repetition. Every element 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?
For a zero-parameter, read-only status check with no output schema, the description is sufficiently complete: it names all three pieces of information the agent can expect. Annotations cover side-effect safety, and no further prerequisites or return-value details are necessary 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?
The tool has zero parameters, so the description does not need to explain argument semantics. Baseline for 0 parameters is 4, and there is no missing parameter-level 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?
The description uses a specific verb ('Check') and clearly identifies the resource (vnstat) plus the exact information returned: installation status, version, and monitored network interfaces. This distinguishes it from related tools like get_vnstat_data, which would focus on traffic data rather than status.
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 use when you need vnstat installation/version/interface status, but it provides no explicit guidance about when to prefer this tool over alternatives such as check_package_installed or get_vnstat_data. There are no exclusions or conditions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_cacheA
Clear /tmp and user cache directories.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is not read-only and not idempotent; the description adds the concrete target directories, which is useful. However, it does not disclose whether the directories are emptied recursively, whether running applications are affected, or what the result looks like, leaving some behavioral ambiguity.
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?
The description is a single short sentence with no filler. It is front-loaded with the action and immediately identifies the affected paths.
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-argument maintenance operation with annotations covering the safety profile, the description covers the essential information: what is cleared. It does not specify current-user vs. all-user cache scope or the return value, but those are minor gaps for this simple 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 has zero parameters and schema coverage is 100%, so there is no parameter documentation burden. The description adds no parameter-level detail, but none is needed; the baseline for a no-parameter tool is a 4.
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 names a specific verb ('Clear') and specific resources ('/tmp and user cache directories'), so an agent can tell what the tool targets. It is slightly less crisp than a full sentence with intended effect, but it is not a tautology and does not overlap ambiguously with delete_path in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to call clear_cache instead of related tools such as delete_path or clear_clipboard. The description implies the use case for freeing temporary storage but never states it, and no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_clipboardA
Clear the clipboard contents.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, indicating a mutation, so the description adds no new behavioral information beyond what the name implies. It does not disclose whether clearing is irreversible, whether it affects clipboard history, or any side effects. Since the description adds no context beyond the structured fields, it scores low.
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?
The description is a single, direct sentence with no wasted words. It is front-loaded and appropriately sized for a zero-parameter tool that performs one simple action.
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?
Given the tool's simplicity (no parameters, no output schema) and the annotations covering safety, the description is largely sufficient. It doesn't explain return values or side effects, but for a straightforward clipboard clear operation, nothing else an agent needs to call it correctly is 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?
The tool has zero parameters and the schema fully covers this (100% coverage). The baseline of 4 applies because there are no parameters to document; the description appropriately has nothing to add.
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 uses a specific verb ('clear') and resource ('clipboard contents'), and clearly distinguishes itself from sibling tools like read_clipboard and write_clipboard by indicating a mutating action that empties the clipboard. Even without referring to alternatives, the purpose is unambiguous and differentiated.
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 no guidance on when to use this tool versus alternatives. It does not mention that read_clipboard is for retrieving contents or write_clipboard for setting them, nor does it state any prerequisites or conditions. The agent must infer usage solely 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.
clear_notificationsA
Clear all desktop notifications.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a mutating, non-idempotent operation, so the description's main added value is the scope: all desktop notifications are affected. This tells the agent the blast radius. It does not disclose whether the clear is permanent, whether it clears only the current user's session, or what happens if there are no notifications, but the annotations lower the bar for additional behavioral disclosure.
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?
The description is a single focused sentence with no filler or repetition. It is front-loaded with the verb and resource and every word earns its place. It is an exemplary model of concise tool description.
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 tool with no output schema, the core operation is sufficiently stated. Minor ambiguities remain, such as whether 'desktop notifications' means all operating-system notifications or only notifications from this app, and what the tool returns on success. These are small gaps for such a simple mutation, so the description is nearly 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 are zero parameters and schema coverage is 100%, so the schema already fully defines the input surface. The description adds no parameter-level detail, but none is needed. The baseline of 4 applies.
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 uses a specific verb, 'Clear,' with a clear resource, 'all desktop notifications.' It unambiguously distinguishes this tool from siblings like send_notification, read_notifications, and list_notifications, which create, read, or list rather than clear. The intent is immediately obvious.
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 no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It does not mention that read_notifications or list_notifications would be better for inspecting notifications first, nor whether clearing only affects this app's notifications or all system notifications. Usage context is only implied by the name and phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_applicationA
Close a desktop/GUI application. Accepts the same friendly names and .desktop resolution as open_application (e.g. 'Chrome', 'firefox'). Matches running processes by exec binary and process name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate non-read-only and non-destructive, and the description adds context about how the application is identified (by exec binary and process name) and that it uses friendly names. It doesn't disclose potential side effects like unsaved data loss, but given annotations, the extra detail is adequate.
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, front-loaded with the core action, and no filler. The naming resolution reference is efficient and relevant.
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 no output schema, the description covers identification and matching. It could mention behavior when the app isn't running or multiple instances, but that's 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?
With 0% schema coverage, the description fully explains the 'name' parameter by stating it accepts friendly names and .desktop resolution, with examples 'Chrome' and 'firefox', and clarifies the matching logic. This compensates for the missing schema documentation.
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 clearly states it closes a desktop/GUI application, distinguishing it from process-killing tools by specifying its scope and naming resolution. It also mentions matching by exec binary and process name, making its purpose 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?
It references open_application for name resolution, implying a similar usage pattern, but it does not explicitly compare to alternatives like kill_process or close_window, nor does it state when to prefer this over them. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_windowB
Close a window by window ID.
| Name | Required | Description | Default |
|---|---|---|---|
| window_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral context beyond the annotations already declaring this is not read-only and not idempotent. It does not disclose whether closing is graceful or forced, whether unsaved changes are at risk, or whether the action is reversible. No annotation contradiction exists.
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. Every word contributes to the tool's purpose and required parameter.
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, the description is minimally viable: it names the action and the required input. However, with no output schema, it does not explain what the tool returns or how success/failure is reported, and it leaves the agent to infer prerequisites like how to obtain a valid window ID.
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 description must compensate. Saying 'by window ID' confirms that window_id selects the target window, but it repeats essentially what the parameter title already implies and offers no format, source, or acquisition guidance.
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?
Description states a specific verb ('Close'), a specific resource ('a window'), and the key identifier ('by window ID'). This clearly distinguishes it from sibling tools like close_application, minimize_window, and active_window.
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 given on when to use this tool vs alternatives, nor does it mention that a window ID must already be known or obtained (e.g., via active_window). The description implies the need for a window ID but provides no routing or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_statusBRead-onlyIdempotent
List services from a Docker Compose project.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | ||
| project_directory | No |
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 description need not re-state the safety profile. It adds the Docker Compose project scope, but it does not disclose whether the result includes service statuses, how the project is resolved, or any other behavioral details beyond the structured 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?
The description is a single, front-loaded sentence with no filler: the verb, object, and scope appear immediately. It is easy to scan and every word earns its place, even though other dimensions penalize the omitted details.
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 simple read-only tool with rich safety annotations, the one-line description is minimally viable, but it leaves out how the two optional parameters map to a specific compose project and what the returned list contains. Without an output schema, the description should at least clarify the return shape or parameter selection to be fully 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?
Schema description coverage is 0%, and the description does not explain the difference between `project` and `project_directory` or what values they accept. The property names are somewhat self-explanatory, but the description fails to compensate for the complete lack of schema-level guidance.
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 uses the specific verb 'List' and identifies the resource as 'services from a Docker Compose project,' so an agent knows exactly what the tool acts on. It is clear and distinct enough by resource type, though it does not explicitly differentiate itself from sibling tools like list_services or get_service_status.
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 provides no guidance on when to prefer compose_status over sibling tools such as list_services, get_service_status, or list_docker_containers. The 'Docker Compose project' qualifier implies a use case, but there are no explicit exclusions or alternative routing cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_wifiC
Connect to a WiFi network.
| Name | Required | Description | Default |
|---|---|---|---|
| ssid | Yes | ||
| password | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the operation is not read-only and not destructive, but the description adds no behavioral context beyond the action itself. It does not mention side effects such as disconnecting from an existing network, whether the connection persists, or what happens on failure. The description neither contradicts nor meaningfully extends the annotation information.
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?
The description is concise and front-loaded, with no wasted words. However, it is under-specified relative to the tool's needs; brevity here comes at the cost of omitting parameter and usage guidance. It is not excessively verbose, but it is not appropriately sized for a tool with behavioral and parameter complexities.
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?
Given the lack of output schema, 0% parameter coverage, and the presence of WiFi-related siblings, the description is incomplete. An agent knows this tool connects to WiFi but lacks the context needed to invoke it correctly, such as required versus optional parameters and how the operation interacts with the current network state. The description is minimally viable but leaves meaningful 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?
With 0% schema description coverage, the description needed to explain parameter behavior, but it says nothing about ssid or password. The schema only provides names and types, leaving critical semantics undocumented, such as whether password is required for secured networks, whether null is acceptable for open networks, or what values ssid should take. This is a significant gap for a tool that is unusable without understanding these parameters.
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 and resource: 'Connect to a WiFi network.' This clearly identifies the primary action and is immediately distinguishable from sibling commands like list_wifi_networks, disconnect_wifi, and get_wifi_status. It lacks detail about scope or behavior, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as toggle_wifi or list_wifi_networks. It does not mention prerequisites like WiFi being enabled, how to discover SSIDs, or when disconnect_wifi would be more appropriate. Usage context is entirely left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
count_toolsARead-onlyIdempotent
Count how many assistant tools are available on this host. Use when the user asks how many tools/capabilities/commands you have, or how many things you can do.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 well covered. The description adds the contextual notion that the count reflects tools 'available on this host,' which is useful but not deeply behavioral. No contradictions exist.
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 with no filler. The core action is stated first, and the usage trigger follows immediately. Every word 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?
For a zero-parameter, simple counting tool with rich annotations, the description is fully complete. The absence of an output schema does not hurt because the expected return is naturally a count, and no additional context is required 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?
The tool has zero parameters, so there is nothing for the description to add about parameter meaning. The schema coverage is effectively total, and the description's framing of counting available tools is sufficient for invocation.
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 uses a specific verb ('Count') with a clear resource ('assistant tools available on this host'), making its function immediately obvious. It also differentiates itself from sibling tools like list_tools by focusing on the count rather than enumeration.
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 explicitly states when to use the tool: 'Use when the user asks how many tools/capabilities/commands you have, or how many things you can do.' It does not mention alternatives or exclusions, but for this simple counting use case, the guidance is clear and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pathBDestructive
Delete a file or directory.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description adds no behavioral context beyond what is structured. It does not mention irreversibility, recursive deletion of directories, or potential side effects, which would be valuable for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loaded with the core action. Every word earns its place, and the description is appropriately sized for the tool's simplicity.
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 destructive filesystem operation with no output schema and one parameter, the description omits important operational details such as whether directory deletion is recursive, whether files are permanently deleted or moved to trash, and any permission requirements. The annotations cover only the destructive flag, leaving the description incomplete for safe 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?
With schema description coverage at 0%, the description must compensate for the undocumented 'path' parameter. It only clarifies that path refers to a file or directory, which is minimal and does not explain path format, wildcards, or scope. The added meaning is thin.
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 ('Delete') and resource ('file or directory'), making the tool's purpose immediately clear. It is distinguishable from sibling tools like rename_path, open_path, and make_directory without needing to inspect schemas.
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, nor any exclusions or warnings. The description only states what it does, leaving the agent to infer usage context from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_micA
Mute the default microphone source.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating readOnlyHint=false, non-idempotent, non-destructive operation, so the description does not need to restate those. It adds the specific target ('default microphone source') but does not disclose side effects, persistence, permissions, or failure behavior beyond the bare action.
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 conveys the action and target with no filler. Every word earns its place, and the description is appropriately sized for the tool's trivial parameter surface.
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?
Given the tool has no parameters, a simple action, and annotations covering mutation and destructiveness, the description is nearly complete for calling the tool correctly. It lacks explicit return-value or unmount/mute-undo guidance, and the absence of usage alternatives is a minor gap, but nothing essential for invoking a parameterless mute action is 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?
The tool has zero parameters, so the description cannot add parameter meaning and the schema needs no supplementation. This is the baseline case where no parameter documentation is required.
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 uses a specific verb ('Mute') and resource ('default microphone source'), making the tool's core function clear. It is distinct from broad audio tools like 'mute_audio' because it explicitly targets the microphone, though it does not explicitly contrast itself with that sibling.
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 no guidance on when to use this tool versus alternatives such as 'mute_audio' or how to undo the action via 'enable_mic'. It states only the action itself, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_webcamA
Disable the webcam by unloading the kernel module.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a non-read-only, non-idempotent, open-world operation. The description adds meaningful context by explaining the mechanism—unloading the kernel module—which implies a system-wide hardware disable rather than a user-level software toggle. It does not mention privilege requirements or re-enablement, but this is not contradicted by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys both the action and mechanism with no redundant words or 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?
For a parameterless mutation with no output schema, the description provides the core behavior and mechanism. It could note expected output or prerequisites such as root privileges, but the low complexity and clear sibling context make that 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?
The tool has zero parameters and the schema coverage is 100%, so there is nothing for the description to add about parameter meaning. The mechanism statement helps explain why no parameters are needed: the action applies to the whole device webcam.
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 names a specific action ('Disable'), a clear resource ('the webcam'), and the mechanism ('unloading the kernel module'). This makes it immediately distinguishable from sibling tools like enable_webcam and webcam_snapshot.
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 the tool should be used whenever the webcam needs to be disabled, but it provides no explicit when-to-use conditions, exclusions, or alternatives. The intended context must be inferred from the verb and sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_wifiB
Disconnect from the current WiFi network.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=false, so the write nature is known. The description adds that the operation targets the current network, but it does not disclose side effects such as whether the WiFi adapter remains on, whether the network profile is forgotten, or whether a no-op error occurs. This is a small gap given annotations cover the overall 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words and the main action appears first. It is appropriately terse for a parameterless operation.
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 tool, the description is minimally viable, but it lacks context about success output, already-disconnected behavior, and the distinction from toggle_wifi. Since there is no output schema to describe return values, the description would need to carry that information; it does not.
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 are zero parameters and schema coverage is 100%, so there is nothing for the description to add semantically. The baseline of 4 for parameterless tools applies because the tool is correctly callable without further field explanations.
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 uses a direct verb and a specific resource: disconnecting from the current WiFi network. It is distinct from siblings like connect_wifi and toggle_wifi, although it does not explicitly name those alternatives. The phrase 'current WiFi network' narrows the scope sufficiently.
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 choose disconnect_wifi over connect_wifi, toggle_wifi, or list_wifi_networks. The description does not state that it leaves the WiFi radio enabled or what happens if already disconnected. Agents must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
display_recordBRead-onlyIdempotent
Record a short screen clip and return MP4 as base64.
| Name | Required | Description | Default |
|---|---|---|---|
| duration_seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), and the description does not contradict them. It adds a useful behavioral detail—the response is an MP4 returned as base64—but otherwise reveals no constraints like maximum duration, resolution, or whether audio is captured.
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 with no filler; the essential action and return type are front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool the core is present—what to do and what will come back—but missing parameter semantics and the vague 'short' upper bound leave gaps. There is no output schema to fill in return details, though the description does state MP4/base64.
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 names or explains duration_seconds. The 'short' qualifier implies small values and the parameter name self-documents seconds, but there are no bounds, constraints, or additional semantics added by the description.
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 the action ('Record'), the resource ('screen clip'), and the exact return format ('MP4 as base64'). The verb is specific enough to distinguish from static-capture siblings like display_screenshot or get_snapshot.
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 no explicit when-to-use guidance or alternatives. It is possible to infer that this is for short video rather than still images, but no condition, exclusion, or alternative is stated, so agents must decide without support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
display_screenshotARead-onlyIdempotent
Capture the current screen with flameshot to ~/Pictures and return it to the client as base64 image data (compressed for relay delivery when large). The AI model only receives a success confirmation — the image is delivered to the user interface separately.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the operation is read-only, idempotent, and non-destructive. The description adds meaningful behavioral detail: it uses flameshot, saves to ~/Pictures, compresses for relay, and informs the AI model only of success while delivering image data separately. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no filler. The core action and delivery model are front-loaded, and every clause adds useful 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 parameterless tool with no output schema, the description covers what is captured, how it is delivered, and what the AI model will perceive. Nothing essential 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty, so there is no parameter ambiguity to resolve. The description correctly implies no inputs are required, meeting the baseline for a parameterless 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?
The description states a specific verb (capture), resource (current screen), and mechanism (flameshot to ~/Pictures), plus a clear delivery channel (base64 to client, separate from model confirmation). It is clearly distinct from sibling operations like webcam_snapshot or display_record.
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 clearly implies the tool is for capturing the current screen, but it does not explicitly state when to choose this over alternatives such as get_snapshot or display_record. It provides functional context rather than explicit routing or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_fileARead-onlyIdempotent
Download a file from the local filesystem and send it to the user interface. Images are shown in the UI (not to the AI model) — you only get a success confirmation with path/size. Files larger than the configured limit are rejected with size details; do not retry the same path. Use for transferring a file the user asked to see or receive, not for reading file contents yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/idempotentHint annotations by disclosing that images are shown in the UI rather than to the AI model, that the agent only receives a success confirmation with path/size, and that oversized files are rejected with size details. The retry prohibition is also behaviorally valuable.
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?
Four sentences, each earning its place: purpose, UI-delivery behavior, size-limit rejection rule, and usage boundary. Front-loaded with the core action, no redundancy or 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?
Complete for a single-parameter tool with rich annotations. The description covers what the tool does, what the agent sees, how failures behave, and when to use it. No output schema is present, but the confirmation/rejection details are spelled out in prose.
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 description must compensate. It adds meaning by framing 'path' as a file on the local filesystem and by referencing 'the same path' and 'path/size' in the confirmation output. It does not explicitly define path format (e.g., absolute vs relative), but for a single string parameter this is adequate.
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 opens with a specific verb and resource: downloads a file from the local filesystem and sends it to the UI. It distinguishes itself from siblings like upload_file (direction of transfer) and from content-reading tools by explicitly stating it is 'not for reading file contents yourself.'
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?
Gives explicit when conditions ('transferring a file the user asked to see or receive') and when-not conditions ('not for reading file contents yourself'). Also provides a concrete operational rule: do not retry the same path after a size-limit rejection. While it does not name a specific alternative sibling, the context clearly routes the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_micA
Unmute the default microphone source.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate that this is a mutating, non-idempotent action with no destructive hint, so the description does not need to repeat that. The description adds only that it targets the default source; it does not disclose behaviors like whether it will fail if no microphone exists or what happens if already unmuted.
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, direct sentence with no filler or redundant terms. All words add meaning and the action is front-loaded.
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 action tool with annotations covering safety and mutation, this description is largely sufficient. It lacks only an explicit note about return value or error conditions, but the simplicity of the tool makes that 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?
There are no parameters and the schema is fully covered, so the baseline is strong. The description's mention of 'default' provides the only selection context relevant to a zero-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?
The description states a specific verb ('Unmute') and a specific resource ('the default microphone source'), making the action unambiguous. It is clearly distinguishable from sibling tools like mute_audio or disable_mic because it targets the microphone rather than speakers or hardware disable state.
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 intended use is clear: invoke when the user wants to unmute the default microphone. However, it does not explicitly contrast with alternatives such as mute_audio, disable_mic, or set_volume, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_webcamA
Enable the webcam by loading the kernel module.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-idempotent action, and the description adds the specific mechanism of loading a kernel module. It does not mention possible side effects, permission requirements, or failure conditions, but the annotations cover the basic behavioral profile.
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, direct sentence that immediately conveys the action and mechanism without wasted words. It is perfectly sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with simple semantics, this description is nearly complete: it states what happens and how. It could mention prerequisites like driver availability or permissions, but nothing essential is missing for basic 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?
The tool has zero parameters, so there is no parameter ambiguity to clarify. The baseline of 4 applies because the description does not need to compensate for schema gaps.
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 ('enable') and resource ('the webcam'), and clarifies the mechanism ('loading the kernel module'). This clearly distinguishes it from siblings like disable_webcam and webcam_snapshot.
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 intended use is implied: call this when the webcam needs to be enabled. However, it gives no explicit guidance on when not to use it, prerequisites, or how it compares to related webcam tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_block_projectA
Manually block a Gatekeeper client project (gates their site/API). Requires slug and a non-empty reason. Confirmation gate applies.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| reason | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating action (readOnlyHint=false), and the description adds valuable behavioral context: a non-empty reason is required and a confirmation gate applies. It also explains the consequence ('gates their site/API'). No contradiction with annotations. Could go further by noting reversibility or side effects, but the key behaviors are disclosed.
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?
Three short sentences, each adding new information: the action and effect, the required parameters, and the confirmation gate. No filler or redundancy. Front-loaded with the primary 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?
For a simple mutation tool with two scalar parameters and no output schema, the description covers the core action, prerequisites, and confirmation behavior. However, it omits details like whether the action is reversible (via unblock), what happens to existing site access, or expected response. Given the low complexity and sibling context, it's adequate but not fully 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?
The input schema has zero description coverage for the two parameters. The description only states that slug is required and reason must be non-empty; it does not explain what a slug is or how to obtain it, nor what the reason should contain. This is insufficient compensation for the 0% schema coverage.
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 action ('block'), the resource ('Gatekeeper client project'), and the effect ('gates their site/API'). This is distinct from sibling tools like gatekeeper_unblock_project, gatekeeper_delete_project, and gatekeeper_update_project, so an agent can quickly identify what this tool does.
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?
Gives clear context: it is a manual block action requiring a slug and non-empty reason, with a confirmation gate. However, it does not explicitly state when not to use it or mention alternatives like gatekeeper_unblock_project for reversal. Still, the context is clear enough to infer its purpose relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_check_certificate_statusARead-onlyIdempotent
Check whether an SSL certificate is installed for a domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the domain-specific semantic but does not disclose additional behavioral context such as whether a network lookup is performed, what response is expected, or edge cases like invalid domains. It is not misleading, but adds little beyond the annotations and tool name.
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?
The description is a single, clear, front-loaded sentence with no filler words. It is appropriately sized for a simple check tool and every word contributes to the meaning.
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 no output schema, the agent is left without any indication of what the tool returns: a boolean, a status string, certificate details, or an error object. The description also does not mention whether 'installed' means locally configured, publicly valid, or resolvable via DNS. For a status-checking tool, this missing output information is a significant 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%, so the description must compensate, but it only tells the agent that the check is 'for a domain'. It does not clarify expected format (e.g., bare domain, with protocol, www vs non-www), whether IP addresses are accepted, or how the domain argument affects the certificate lookup. The schema already labels the parameter as 'Domain', so the description adds almost no semantic value.
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 action ('Check whether') on a specific resource ('an SSL certificate') scoped to 'a domain'. This cleanly distinguishes it from sibling tools like gatekeeper_install_certificate, gatekeeper_remove_certificate, and gatekeeper_list_certificates, since it focuses on existence/status for one domain rather than management or listing.
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 use is appropriate when verifying whether a domain has a certificate installed, but it does not explicitly mention alternatives or when not to use it. No direct reference is made to gatekeeper_list_certificates or gatekeeper_install_certificate, so the guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_check_image_statusARead-onlyIdempotent
Wizard helper: check whether an image is available locally before attempting container creation.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and idempotentHint=true, covering the safe, side-effect-free nature of the tool. The description adds that the check is against the local image store, which clarifies it won't contact remote registries. It does not describe the response/return format or what happens when an image is absent, so there is a small gap.
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?
The description is a single, front-loaded sentence that wastes no words. The 'Wizard helper' prefix is slightly redundant but adds context. It is appropriately sized for the tool's simplicity.
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 read-only check with rich annotations, the description is largely complete: it states what it checks and when to use it. The main missing piece is the format of the image parameter, which the schema also fails to document. Overall it provides enough for an agent to invoke it correctly within the wizard flow.
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 description must explain the 'image' parameter, but it only restates the parameter name. It does not specify whether 'image' is a name, ID, tag, or registry path, or provide format examples. This is a meaningful gap for an agent selecting the correct value.
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 uses a specific verb ('check') and resource ('whether an image is available locally') and ties it to a clear purpose ('before attempting container creation'). It clearly distinguishes from sibling tools like gatekeeper_pull_image and gatekeeper_delete_image because it only checks availability rather than modifying images.
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 states when to use it: before attempting container creation, which is a clear usage context. It does not explicitly name alternatives or when not to use it, but the 'before container creation' phrase implies a preflight role. It does not mention when to pull first, so it is not full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_containers_wizard_contextARead-onlyIdempotent
Wizard helper: fetch Docker container-creation context (networks + internal network info).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 the domain scope ('networks + internal network info') but does not detail return structure or potential variations, which is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with every phrase adding value: 'Wizard helper' gives usage context, and the parenthetical specifies the fetched data. There is no fluff or redundancy.
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 helper with rich annotations, this description is sufficient. It names the two main output categories and the wizard context, so an agent knows what it will receive and why to call it, even without an output schema.
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 has zero parameters and the input schema is empty, so there are no parameter semantics for the description to explain. This matches the baseline for a parameterless tool; no further clarification is needed.
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?
Description states a specific action ('fetch') and a specific resource ('Docker container-creation context'), and further narrows scope to 'networks + internal network info.' This clearly distinguishes it from wizard validation/port-check siblings and from generic network listing tools.
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 phrase 'Wizard helper' clearly situates this tool as a context-gathering step in the container-creation wizard flow. It does not explicitly list exclusions or alternatives, but the intended usage context is evident from the description and tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_containers_wizard_ports_checkBRead-onlyIdempotent
Wizard helper: check whether host ports are already in use on the Docker host.
| Name | Required | Description | Default |
|---|---|---|---|
| hostPorts | 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 well covered. The description adds specific context about checking Docker-host port occupancy, but does not reveal deeper behavior such as whether it inspects containers, listeners, or kernel sockets. No contradiction is present.
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?
The description is a single tight sentence with no filler, and the purpose is front-loaded. It could use the saved space to explain the parameter or expected result, but it is concise and well-structured as-is.
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, read-only helper with rich annotations, the core purpose is adequately conveyed. However, with no output schema and no parameter-format guidance, the agent is left guessing about the exact input expected and how the response communicates port availability.
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 explains the 'hostPorts' parameter beyond the schema's bare title. The integer type and plural naming are ambiguous, leaving the agent unsure whether a single port, a range, or multiple ports are expected.
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 ('check') and resource ('host ports on the Docker host'), making the tool's purpose immediately clear. The 'Wizard helper' prefix also ties it to the container-creation flow, distinguishing it from the more generic sibling check_port.
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 phrase 'Wizard helper' implies this belongs in the container wizard flow, so usage context is weakly established. However, it does not explicitly say when to use this tool over alternative port-checking or gatekeeper container tools, and it offers no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_containers_wizard_validateBRead-onlyIdempotent
Wizard helper: validate and normalize a CreateContainerRequest without applying changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), and the description reinforces it with 'without applying changes', which is consistent. It adds the 'normalize' behavior, but does not disclose what normalization entails or what the tool returns on success/failure; the annotation burden is low, so a mid-range score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every phrase earns its place ('validate', 'normalize', 'without applying changes'). Slight deduction because 'Wizard helper' is a vague category label that could carry more specific context about the wizard stage.
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 no output schema and no parameters, the description is the sole carrier of context, and it leaves notable gaps: it does not explain what 'normalize' produces, what the validation response looks like, or how an agent should interpret results. For a validation step that an agent must invoke correctly within a multi-step wizard, this is a meaningful shortfall.
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 schema has zero parameters with 100% coverage, so baseline is 4. However, the description references a 'CreateContainerRequest' that the agent has no way to supply through inputs, creating ambiguity about where the request originates (presumably wizard state). The description names the object being operated on but fails to explain how it is provided.
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 action ('validate and normalize'), a concrete resource ('CreateContainerRequest'), and a key scoping constraint ('without applying changes'). This distinguishes it from mutation siblings like gatekeeper_create_container, so an agent can identify its role in the wizard flow, though the prefix 'Wizard helper' is somewhat generic.
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 given on when to use this tool versus alternatives. It does not name sibling validation steps (e.g., gatekeeper_containers_wizard_ports_check) or explain its position within the wizard sequence, so the agent must infer intent purely from the name and the single-sentence description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_create_containerA
Create and start a new Docker container with custom configuration. DEPLOYMENT ORDER: This is step 1 of 4 — do this first. Requires image. Optional: name, projectSlug, ports, env, network, volumes, restartPolicy. If the user provides .env variables, pass them in the env field. If the user says the env vars are already in a local .env file on the Docker host, prefer passing envFilePath (absolute path) so Gatekeeperd can load it server-side. After creation, verify the container is running before proceeding to project creation.
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | ||
| name | No | ||
| image | Yes | ||
| ports | No | ||
| network | No | ||
| volumes | No | ||
| envFilePath | No | ||
| projectSlug | No | ||
| restartPolicy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate non-read-only, non-idempotent behavior, and the description adds useful context: it is part of a 4-step deployment, envFilePath is loaded server-side by Gatekeeperd, and the container must be verified running afterward. However, it does not disclose what happens if a container with the same name already exists, what occurs if creation fails, or any cleanup or rollback behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: the deployment ordering is front-loaded, required versus optional fields are stated compactly, and the env/envFilePath decision rule and post-creation verification are included without filler. It is dense yet structured for quick parsing.
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 container-creation tool with 9 underdocumented parameters, no output schema, and only sparse annotations, the description addresses ordering and env handling but misses parameter formats and failure behavior. It is a solid start, but the agent would still need Docker knowledge to correctly populate ports, volumes, network, and restartPolicy.
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 schema has 0% property description coverage, so the description carries the burden. It compensates by naming all optional parameters and providing meaningful guidance on env vs envFilePath. Still, it gives no format or semantic details for ports, volumes, network, or restartPolicy, leaving the agent to infer Docker conventions.
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 action ('Create and start') and resource ('a new Docker container'), with the scope 'with custom configuration.' This clearly distinguishes it from siblings like start_container, stop_container, and restart_container, and the 'step 1 of 4' label reinforces its entry-point role.
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 explicitly says this is step 1 of 4, instructs the agent to do it first, and directs verifying the container is running before proceeding to project creation. It also gives conditional guidance for choosing env vs envFilePath. It does not explicitly name when not to use this tool, but the creation semantics make the intended context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_create_projectA
Create a new Gatekeeper project registration. PREREQUISITE: Docker container must already exist and be running (use gatekeeper_create_container first). DEPLOYMENT ORDER: This is step 2 of 4. 1) gatekeeper_check_image_status → gatekeeper_create_container → ensure running 2) gatekeeper_create_project (this step) 3) gatekeeper_nginx_wizard_context → gatekeeper_nginx_enable 4) gatekeeper_install_certificate. Use for onboarding new clients.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| slug | Yes | ||
| type | Yes | ||
| domain | Yes | ||
| dueDate | Yes | ||
| currency | Yes | ||
| amountDue | Yes | ||
| clientName | Yes | ||
| clientEmail | Yes | ||
| containerName | Yes | ||
| gracePeriodDays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-idempotent, non-destructive operation, so the description does not need to restate that. It adds valuable behavioral context beyond the annotations by disclosing the required container state and the strict step ordering, which helps the agent understand side-effect dependencies.
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?
The description is compact and well-structured, front-loading the core purpose before the prerequisite and deployment order. The numbered workflow is somewhat long but each step earns its place by giving the agent actionable sequencing 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?
Despite useful deployment-order context, the tool has 11 parameters, no output schema, and zero schema descriptions, yet the description explains none of the parameter semantics, required field formats, or expected output. An agent would struggle to construct a valid call without additional information.
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 provides no detail about any of the 11 parameters such as slug, domain, type, amountDue, currency, or dueDate. Since the schema carries no descriptions, the tool description was the only place to compensate, but it does not explain the meaning, format, or accepted values of any parameter.
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 opens with 'Create a new Gatekeeper project registration', which is a specific verb and resource. It is clearly distinguished from sibling tools like gatekeeper_update_project, gatekeeper_delete_project, and gatekeeper_list_projects by the 'Create' action and 'new project registration' object.
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 explicitly states the prerequisite (Docker container must exist and be running) and names the tool to use first (gatekeeper_create_container). It also provides a numbered deployment order showing exactly where this step fits, and closes with the business context 'Use for onboarding new clients.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_delete_containerBDestructive
Delete a container permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds 'permanently', which conveys irreversibility beyond the generic destructive hint. However, it does not disclose side effects (e.g., whether related data or configuration is removed) or any prerequisites, so it adds only marginal value over 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?
The description is a single five-word sentence with no filler, front-loading the action and object. It is appropriately short for a simple tool, though it could have included parameter clarification without becoming verbose.
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?
Despite the tool being simple (one parameter, no output schema), the description is incomplete for reliable invocation because it does not clarify what value 'name' expects. Annotations cover the destructive behavior, but the agent is left to guess the parameter semantics, which is a significant gap even for a simple 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 schema description coverage is 0% and the description does not explain the 'name' parameter at all. It is unclear whether 'name' refers to a container name, ID, or a label, and there is no guidance on format or how to obtain valid values. The description fails to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete'), resource ('a container'), and scope ('permanently'), which clearly distinguishes it from sibling tools like stop_container or restart_container. It also contrasts with file deletion tools like delete_path, making the target resource 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?
The description provides no when-to-use or when-not-to-use guidance. It does not reference alternatives like gatekeeper_stop_container or gatekeeper_restart_container, nor does it clarify that this is the irreversible removal option versus a temporary stop. The word 'permanently' hints at intent but does not explicitly guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_delete_imageADestructive
Delete a Docker image from the local Docker host.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| force | No | ||
| image | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already supply destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is known. The description adds the local-host scope but does not disclose behavior around the force flag, tag handling, or failures caused by images in use.
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 redundant words or restatement of the name. It efficiently conveys the core action and scope.
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 tool is destructive, has no output schema, and offers no parameter documentation, yet the description does not mention what happens on success or failure, or the role of `force` and `tag`. An agent may call it with only `image` and be surprised by behavior when the image is in use.
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 description needed to clarify `force` and `tag`, but it mentions neither. The required `image` parameter is self-explanatory from its name, but the optional parameters' semantics and defaults remain ambiguous.
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 ('Delete'), resource ('Docker image'), and scope ('local Docker host'). This clearly differentiates it from sibling tools such as gatekeeper_delete_container or gatekeeper_delete_project, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the action and resource: use this when a Docker image on the local host must be removed. However, there is no explicit when-not guidance, prerequisite information such as image existence, or mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_delete_projectADestructive
Archive a Gatekeeper project (soft delete). Preserves payments and audit log. Use when removing a client while keeping historical data.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive, and the description adds important nuance: the operation archives rather than permanently destroys and preserves payments and audit log. This goes beyond the annotations by clarifying what will and will not be affected.
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?
The description is two short sentences with no filler. It front-loads the core operation (archive/soft delete), then adds the key preservation behavior and the primary use case, all relevant and necessary 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?
The description covers purpose, use case, and behavioral nuance well, and the annotations supply the destructive/read-only profile. However, it omits any explanation of the required 'slug' parameter and the return value or confirmation behavior, leaving a small but real 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?
The sole parameter 'slug' is completely undocumented in the description, and schema coverage is 0%. While 'slug' may be a common identifier concept, the description does not connect it to the project or explain how to source it, so the agent receives no additional semantic guidance.
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 ('Archive') and resource ('Gatekeeper project'), and immediately clarifies that this is a soft delete rather than a permanent deletion. It distinguishes the operation from the tool's name and from other Gatekeeper management tools, making the intent 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?
The description explicitly states when to use the tool: 'Use when removing a client while keeping historical data.' It does not name an alternative for permanent deletion, but the soft-delete framing implies the exclusion, providing clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_get_containerARead-onlyIdempotent
Get details for a single container by name or ID prefix.
| Name | Required | Description | Default |
|---|---|---|---|
| name | 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 safety behavior is covered. The description adds useful context about matching by exact name or ID prefix, but it does not disclose what 'details' are returned or how errors like not-found are handled.
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?
The description is a single, front-loaded sentence with no filler. Every phrase contributes meaning: operation, resource, cardinality, and identifier matching.
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 simple one-parameter read-only lookup, the description is largely complete: it says what the tool does and how the parameter is interpreted. The absence of output/return details is mitigated by the lack of an output schema, and the annotations cover the safety profile.
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 description must carry parameter meaning. It does this by clarifying that the single 'name' parameter can accept either a container name or an ID prefix, which is valuable beyond the plain 'Name' title in the schema. It stops short of giving examples or format details.
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 uses a specific verb ('Get') and a clear resource ('details for a single container'), with an explicit identifier scoping ('by name or ID prefix'). It is distinguishable from list-oriented siblings like list_docker_containers and gatekeeper_list_containers, though it does not explicitly contrast with get_container_status or gatekeeper_get_container_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?
The description gives no guidance on when to use this tool versus alternatives such as get_container_status, get_container_logs, or gatekeeper_get_container_health. There are no when-to-use, when-not-to-use, or alternative-selection hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_get_container_healthBRead-onlyIdempotent
Get container health/running state.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds little beyond saying it retrieves health/running state, but it does not contradict the annotations and there are no hidden side effects to disclose.
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?
The description is a single, front-loaded sentence with no filler or redundant details. It is appropriately concise for a simple read operation, though the brevity contributes to some of the semantic gaps noted in other dimensions.
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 operation is simple and the annotations cover side effects and safety, so the description is minimally adequate. However, there is no output schema and no mention of what the health response contains, and the overlapping siblings make selection less certain. More context about return values or distinctions from `get_container_status` would improve completeness.
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 schema has 0% description coverage for the single `name` parameter, and the description does not explicitly define it as a container name, ID, or label. The meaning is inferable from the tool name and context, but the description fails to compensate for the schema gap, especially given the low coverage.
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 uses a clear verb ('Get') and a specific resource ('container health/running state'). It is not a tautology and conveys the operation well. However, it does not explicitly differentiate this from sibling tools like `get_container_status` or `gatekeeper_get_container`, 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?
There is no guidance on when to use this tool versus alternatives such as `get_container_status` or `gatekeeper_list_containers`. No exclusions, conditions, or comparison context are provided, leaving the agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_get_projectARead-onlyIdempotent
Get one Gatekeeper project with payment history and audit log. Use when the user asks about a specific client site or slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | 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 useful behavioral context by revealing that the response bundles payment history and audit log, which is not visible from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The key action and selection criterion are front-loaded, and every word adds value.
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 simple single-parameter read-only lookup, the description is largely complete. It names the resource, the selection parameter, and the included related data. It could be slightly more precise about what 'slug' refers to, but nothing critical is 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?
With 0% schema description coverage, the description must compensate for the 'slug' parameter. It does connect slug to a specific client site/project, giving basic meaning. However, it does not explain the slug format, where to find it, or clarify that it is the identifier used to select the project.
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 clearly identifies the action ('Get') and resource ('one Gatekeeper project'), and adds that it includes payment history and audit log. This distinguishes it from sibling tools like gatekeeper_list_projects and gatekeeper_get_project_audit.
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 explicitly states when to use the tool: when the user asks about a specific client site or slug. It does not explicitly mention when not to use it or name alternatives, but the condition is clear enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_get_project_auditARead-onlyIdempotent
Get audit log for a specific project.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | 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 description does not need to restate safety. It adds the scoping detail that the audit log is project-specific, but does not disclose any additional behavioral traits such as access requirements, log format, or ordering.
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 short sentence that front-loads the action, resource, and scope. Every word 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only audit retrieval tool with strong annotations, the description is nearly complete. It lacks details about the return shape, pagination, or filtering options, but the name and description convey the essential purpose well enough for an agent to select and invoke it correctly.
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 description should compensate for the undocumented 'slug' parameter. It does not explicitly explain that 'slug' identifies the project or describe the expected slug format. The parameter is simple and inferable, but the description adds no direct parameter guidance.
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 uses a specific verb and resource: 'Get audit log' and scopes it to 'a specific project.' This clearly distinguishes it from broader audit tools like gatekeeper_list_audit or project management tools like gatekeeper_get_project.
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 the correct usage context: call this when you need the audit log for a particular project, identified by slug. It does not explicitly name alternative audit tools or state when not to use them, but the 'specific project' scope provides clear, actionable context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_initialize_paymentA
Generate a Paystack payment link for a project. Requires slug and email. Creates a pending payment and returns a checkout URL.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only (readOnlyHint false) and not idempotent, but the description adds the key side effect: 'Creates a pending payment' and the return value 'checkout URL'. This goes beyond the annotations, though it omits details like authorization requirements or idempotency caveats.
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 concise sentences, no fluff, and the main action is front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essence: what it does, prerequisites, side effect, and return. But it lacks details on the exact definition of slug and email, potential failure conditions, or how to proceed after obtaining the checkout URL. Given the tool's relative simplicity and existing sibling context, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must clarify the parameters. It only says 'Requires slug and email' without explaining that slug likely refers to the project slug and email is the customer email. This adds minimal meaning beyond the schema's bare field names.
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 action ('Generate a Paystack payment link') on a concrete resource (a project), and distinguishes itself from sibling payment tools like gatekeeper_list_payments by focusing on initialization and returning a checkout URL.
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?
It gives clear context by saying 'Requires slug and email' and 'for a project', which implies it is used to create a payment for a specific project. However, it does not explicitly mention when not to use it or any alternatives, leaving the agent to infer the appropriate usage from the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_install_certificateA
Install an SSL certificate for a domain using certbot. DEPLOYMENT ORDER: This is step 4 of 4 — do this last. PREREQUISITE: nginx site must be enabled (use gatekeeper_nginx_enable first). Requires domain and email. This completes the deployment.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false and idempotentHint=false, so the mutating nature is conveyed. The description adds useful workflow context (prerequisite nginx enable and completion of deployment), but does not disclose further behavioral details such as external certbot calls, rate limits, or post-install reloads, so it only partially surpasses the annotation baseline.
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?
The description is compact and well-structured: a one-sentence purpose, then bolded DEPLOYMENT ORDER and PREREQUISITE callouts, then a closing note. Every sentence adds either scope or workflow context, with 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?
For a 2-param certificate installation tool, the description provides the essential orchestration context: when to run it (last), what must be pre-enabled, and what is required. There is no output schema, and the description omits return-value or failure-mode details, but the deployment workflow context is strong enough to guide a correct call.
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 0% schema description coverage, the description must define the parameters, but it only says 'Requires domain and email,' restating the property names without explaining what the email is used for (e.g., certbot registration) or expected formats. An agent can infer that domain is the certificate target, but the parameters remain 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?
The description opens with a specific verb and resource: 'Install an SSL certificate for a domain using certbot.' It clearly distinguishes from sibling certificate tools (list/remove/check status) by stating it is the final deployment step that 'completes the deployment.'
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?
Explicitly labels the deployment order: 'step 4 of 4 — do this last,' and names the prerequisite tool (gatekeeper_nginx_enable first). This tells the agent both when to invoke it and what must happen before, giving clear usage context relative to sibling nginx/gatekeeper tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_list_auditARead-onlyIdempotent
Recent Gatekeeper audit log entries across all projects (block/unblock/payments).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about recency and event scope, but it does not disclose return format, ordering, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the verb and resource, then adds scope and event types. Every word earns its place with 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?
For a low-complexity, read-only list tool with rich annotations and a single nullable parameter, the description tells the agent what it returns and at what scope. The only notable gap is undocumented limit semantics, but the overall picture is clear enough 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?
The single parameter 'limit' is described only in the schema as nullable integer with default null; the description does not mention it. With 0% schema description coverage, the description was expected to compensate but does not explain what limit controls or what null means.
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 action and resource: 'list ... audit log entries' with an explicit scope ('across all projects') and event categories ('block/unblock/payments'). This clearly differentiates it from sibling tools like gatekeeper_get_project_audit, which targets a single project.
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 phrase 'across all projects' implies this is the tool for a global audit view, and siblings like gatekeeper_get_project_audit exist for per-project queries. However, it does not explicitly state when to choose this tool over alternatives, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_list_certificatesARead-onlyIdempotent
List installed SSL certificates found under /etc/letsencrypt/live.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the specific path context (/etc/letsencrypt/live) and the fact that it lists installed certificates, which is beyond the annotations. It does not disclose the return format, but for a read-only list tool that is acceptable.
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?
The description is a single, concise sentence that front-loads the action and resource. There is zero wasted text, and every word contributes to clarity.
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?
Given the simplicity of the tool (no parameters, no output schema, read-only annotations), the description is sufficient for an agent to know what it does and where. It could specify the return format, but for a list operation the expectation is clear. It covers the necessary context for invoking the tool correctly.
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 are zero parameters, and the schema coverage is 100% vacuously. The description doesn't need to explain parameters. According to the rubric, 0 params gives a baseline of 4, and there is no additional semantic burden.
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) and resource (installed SSL certificates) with a precise location (/etc/letsencrypt/live). It clearly distinguishes from sibling certificate tools like install, remove, and check status by focusing on listing.
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 verb 'List' implies the usage is to enumerate certificates, but there is no explicit guidance on when to prefer this over alternatives like check_certificate_status or install_certificate. The context is clear enough for a simple read-only operation, but no exclusions or alternative conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_list_containersARead-onlyIdempotent
List all Docker containers visible to Gatekeeperd on the host.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the operation as read-only, idempotent, and non-destructive. The description adds only the Gatekeeperd scoping detail and no further behavioral traits such as whether stopped containers are included or what fields are returned, which is acceptable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence states the action, resource, and scope with no filler or repeated information. The most important qualifier ('all ... visible to Gatekeeperd') is included immediately with the verb.
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 parameterless, read-only enumeration, the description is sufficient to let an agent invoke it correctly. The missing return-value details are a minor gap because no output schema is provided, but the tool's purpose is simple and the result is implied by 'List'.
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 and the input schema is empty, so there is no parameter semantics for the description to supplement. This matches the baseline for parameterless tools.
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 uses a specific verb ('List') with a clear resource ('Docker containers') and scopes the result to those 'visible to Gatekeeperd on the host'. This is more specific than a generic container listing, though it does not explicitly contrast itself with the similarly named sibling list_docker_containers.
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 intended use is implied from the purpose: when you need all Docker containers as seen by Gatekeeperd. However, the description does not name alternative tools like list_docker_containers or state conditions under which one should be preferred, leaving some selection ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_list_networksARead-onlyIdempotent
List Docker networks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. The description adds only the 'Docker networks' scope; it does not mention return format or any observable behavior beyond listing, but for a zero-argument read-only tool this is an acceptable baseline.
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?
The entire description is a single clear three-word sentence with no redundant phrases or repeated schema information. It is appropriately front-loaded and easy to parse.
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 parameterless listing operation, the description, along with the read-only/idempotent annotations, fully supports correct selection and invocation. There is no missing prerequisite, argument, or side-effect information that an agent would need.
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 input schema has no properties, so there are no parameter semantics for the description to clarify. The baseline of 4 applies because 0 parameters make documentation trivially sufficient.
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 uses a specific verb ('List') and a precise resource ('Docker networks'), so an agent can immediately identify the tool's domain and distinguish it from sibling tools like list_docker_containers or list_wifi_networks.
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 intended use is clear: call this tool when Docker networks need to be enumerated. No exclusions or alternative tools are stated, but there is no sibling that also lists Docker networks, so no further routing guidance is necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_list_overdueARead-onlyIdempotent
List active Gatekeeper projects past their due date, sorted by days overdue. Use for payment triage — who is late and when auto-block kicks in.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 transparency about output ordering ('sorted by days overdue') and the filtering scope ('active projects past their due date'), which goes beyond the structured 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?
Two concise sentences with no filler. The core function is stated first, followed by a useful triage use-case in the second sentence.
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, the description provides sufficient information: what is listed, what filtering applies, how results are sorted, and why the agent would use it. No output schema exists, but the tool's simple output nature makes this description 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 are zero parameters, so the schema already fully covers this dimension. The description doesn't need to add parameter details; the baseline of 4 applies since no parameters exist.
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 uses a specific verb ('List') with a precise resource ('active Gatekeeper projects past their due date') and an output ordering ('sorted by days overdue'). It clearly distinguishes this tool from broader siblings like gatekeeper_list_projects by focusing on overdue active projects.
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 explicitly states the intended use case: 'Use for payment triage — who is late and when auto-block kicks in.' This provides clear context for when to call the tool, though it doesn't 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.
gatekeeper_list_paymentsARead-onlyIdempotent
List payments across all Gatekeeper projects with optional filters: status (pending/success/failed/abandoned/reversed), project_slug, from/to dates, limit, offset.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ||
| limit | No | ||
| offset | No | ||
| status | No | ||
| from_path | No | ||
| project_slug | No |
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 covered. The description adds useful context about the global scope and supported status values, but it does not disclose pagination behavior, default result size, or ordering. That is acceptable for a safe read-only list 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource, then packs all relevant filter information without redundancy. Every clause earns its place, and there is no filler or repetition.
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 six-parameter filtered list with strong annotations, the description is nearly complete: it covers scope, optionality, status vocabulary, date range, and pagination. It could be more explicit about date format and the from_path naming mismatch, and it does not state the default result set when no filters are provided, but these are minor for a read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 of explaining parameters. It names status with its allowed values, project_slug, from/to dates, limit, and offset. The only weakness is the wording 'from/to dates' while the schema property is 'from_path', which introduces mild ambiguity about whether 'from' is a path or a date.
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 action ('List') and resource ('payments across all Gatekeeper projects'), and lists concrete filter dimensions. This clearly distinguishes it from sibling tools like gatekeeper_list_projects and gatekeeper_revenue_report, so an agent can tell what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is for reading payments across all Gatekeeper projects with optional filters, and the phrase 'across all Gatekeeper projects' signals that it is not scoped to one project. However, it does not explicitly name alternatives or state when not to use this tool, 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.
gatekeeper_list_projectsARead-onlyIdempotent
List all Gatekeeper client projects (slug, name, domain, status, due date, amount due). Use for billing/access overview across hosted clients.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds context beyond those annotations by specifying the exact scope ('all Gatekeeper client projects') and the fields returned, which helps the agent anticipate the output.
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?
The description is two short sentences with no filler. The core action and resource are front-loaded, the field list is compact, and the intended use case is stated in a single clause.
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 parameterless, read-only, list-style tool, the description is complete: it names the resource, the exact returned fields, and the business purpose. No output schema exists, but the field enumeration compensates. The annotations cover safety and world context, so no critical information is 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?
There are zero parameters, so there is nothing for the description to explain about parameters. The description appropriately focuses on what the tool returns rather than input semantics, matching the baseline for a parameterless 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?
The description opens with a specific verb and resource: 'List all Gatekeeper client projects', and enumerates the returned fields (slug, name, domain, status, due date, amount due). This clearly distinguishes it from more specific siblings like gatekeeper_get_project and gatekeeper_list_overdue.
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?
It provides a concrete intended use case: 'Use for billing/access overview across hosted clients.' This gives the agent clear context for when to select it, though it does not explicitly mention alternatives or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_nginx_disableA
Disable (unlink) an nginx site without removing the config file.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=false and destructiveHint=false. The description adds meaningful context by specifying 'unlink' behavior and confirming the config file is preserved, which aligns with destructiveHint=false. It doesn't detail side effects like nginx reloads, but with annotations carrying the safety profile, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that conveys the action, the resource, and the key non-destructive constraint. No filler or redundancy; the most important scoping information ('without removing the config file') is placed at the end but still front-loads the core verb and object.
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 mutation tool with no output schema, the description covers the essential semantics: disable/unlink, preserve config. It does not define 'slug' format or mention prerequisites (e.g., permissions), but these are minor for a tool of this simplicity and can be inferred from context.
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 description does not explicitly explain the 'slug' parameter. However, since there is only one required parameter and the context is 'nginx site', it is reasonable to infer that slug identifies the site. The description adds minimal semantic value beyond the schema, but the single-parameter design makes the meaning recoverable.
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 uses a specific verb ('Disable') and a precise resource ('an nginx site'), and clarifies the operation as 'unlink' while explicitly noting 'without removing the config file.' This directly distinguishes it from siblings like gatekeeper_nginx_remove (which removes the config) and gatekeeper_nginx_enable (which activates the site).
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 provides clear context: use this tool to disable/unlink a site while preserving the config file. It doesn't explicitly name alternatives or state when-not-to-use, but the non-destructive phrasing implies the condition under which this tool is preferred over a full removal. This meets 'clear context, no exclusions' but stops short of explicit alternate routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_nginx_enableA
Generate and enable an nginx site config for a project. PREREQUISITE: Project must exist and container must be running. DEPLOYMENT ORDER: This is step 3 of 4. Use gatekeeper_nginx_wizard_context first to fetch project details and validate. After enabling, proceed to gatekeeper_install_certificate for SSL.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate that this is a mutating, non-idempotent, non-destructive action. The description adds useful operational behavior: it generates and enables a config, requires a running container, and is part of a defined deployment pipeline. It could disclose more about exact effects, but the existing context plus annotations are adequate.
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?
The description is compact and front-loaded: the core action appears first, followed by prerequisites and ordering. Every sentence adds essential decision or sequencing information, with no filler or redundant restating of the tool name.
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 action tool, the description covers the essential context: prerequisite conditions, exact placement in a 4-step workflow, and the next step. It does not describe return values or failure modes, but those are less critical given the clear workflow and absence of an output schema.
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 for the single parameter is 0%, so the description must compensate. It indirectly suggests that 'slug' identifies a project by saying the config is generated 'for a project,' but it never explicitly defines the slug format, valid values, or how it relates to the prerequisite project. This is minimally sufficient but not thorough.
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 action and resource: 'Generate and enable an nginx site config for a project.' This clearly distinguishes it from sibling tools like gatekeeper_nginx_disable, gatekeeper_nginx_validate, and gatekeeper_nginx_status, and the deployment-order context helps disambiguate it further.
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 explicit prerequisites and sequence: project must exist, container must be running, and this is step 3 of 4. It also names the tools to use before and after. It does not explicitly state when not to use this tool, but the clear step ordering provides strong usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_nginx_removeADestructive
Remove an nginx site completely (both sites-available file and sites-enabled symlink).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds beyond that by explicitly disclosing what gets destroyed: both the sites-available file and the sites-enabled symlink. This tells the agent the exact footprint of the destructive action, which is valuable context the annotations do not provide.
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, tightly crafted sentence that front-loads the action and precisely scopes the deletion. Every word contributes meaning, with no filler or redundant restatement of the tool name.
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 simple single-parameter destructive operation, the description states the essential behavior. However, it does not mention how the slug is obtained, what happens if the site does not exist, or whether a reload/restart is triggered afterward — gaps that matter for an agent deciding how to invoke and verify the call.
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 does not explain the 'slug' parameter at all. An agent cannot determine what format the slug should take or where to obtain it, so the description fails to compensate for the complete lack of schema-level documentation.
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 ('Remove'), a clear resource ('an nginx site'), and the exact scope ('both sites-available file and sites-enabled symlink'). This distinguishes it from related gatekeeper_nginx tools like enable, disable, or status, leaving no ambiguity about what operation is performed.
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 makes clear that this tool is for complete removal, not mere disabling, which provides useful context against sibling tools like gatekeeper_nginx_disable. It does not explicitly name alternatives or state when not to use it, but the 'completely' phrasing gives adequate usage context for a straightforward removal operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_nginx_statusBRead-onlyIdempotent
Check if a project has an nginx site configured and enabled, and whether SSL is set up.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | 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, covering the safety profile. The description adds the specific aspects it checks (configured, enabled, SSL), but does not disclose return format or behavior when the site is absent. It adds some context beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with no wasted words. The key action and scope are front-loaded, and it reads clearly.
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 tool has no output schema and one undocumented parameter, yet the description does not mention what the tool returns or how the results should be interpreted. It also does not clarify the meaning of 'configured and enabled' in practical terms. For a simple status check, this is still incomplete.
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 description should explain the single parameter 'slug'. It does not define what a slug is or how it should be formatted, only implies it identifies a project. This is a significant gap for a tool with an undocumented parameter.
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 clear action ('Check') on a specific resource ('nginx site configured and enabled') with additional detail about SSL. It is distinct from write operations like enable/disable/remove and from validation tools like gatekeeper_nginx_validate, though it doesn't explicitly name alternatives.
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 purpose implies a read-only status check, which is obvious from the name and description, but it does not explicitly state when to use this tool versus alternatives like gatekeeper_nginx_validate or gatekeeper_nginx_wizard_context. There is no exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_nginx_validateB
Wizard helper: validate nginx enable inputs and return a config preview without applying changes.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly says the tool returns a config preview 'without applying changes,' but the annotation readOnlyHint=false marks the tool as non-read-only. This is a direct contradiction between the description's behavioral claim and the declared annotation, so the description cannot be trusted as a behavioral guide.
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?
The description is a single, front-loaded sentence with no filler. 'Wizard helper' adds useful context, and every clause contributes either to what the tool does or to what it does not do.
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 simple one-parameter tool, the description covers purpose, output, and non-mutation, but it leaves the meaning of the required 'slug' parameter unexplained and omits any error or validation-behavior details. Combined with the annotation contradiction, the definition is not fully actionable.
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 schema has one required parameter, 'slug', with zero description coverage, and the description does not explain what 'slug' refers to or how it relates to the nginx enable inputs. The description provides only a vague connection to 'nginx enable inputs' but leaves the required parameter semantically underdocumented.
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 names a specific action ('validate'), a specific resource ('nginx enable inputs'), and the output ('config preview'), while also stating that no changes are applied. This clearly distinguishes it from the sibling tool gatekeeper_nginx_enable, which applies changes.
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 phrase 'Wizard helper' plus 'validate nginx enable inputs' communicates that this is a preflight or preview step before enabling nginx. It gives clear context for when to call it, though it does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_nginx_wizard_contextARead-onlyIdempotent
Wizard helper: fetch project + nginx context to drive a step-by-step UI (status, container hints, certificate options).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | 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 read-only behavior is covered. The description adds value beyond the annotations by revealing that the tool is UI-oriented and that its result includes status, container hints, and certificate options. There is no contradiction with the annotations, and the safety profile is consistent with the 'fetch' wording.
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?
The description is a single, front-loaded sentence that immediately identifies the tool as a wizard helper and the operation as fetching context. The parenthetical efficiently summarizes the expected fields without wasting words on redundant schema 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 one-parameter, read-only helper, the description is adequate but not complete: an agent can tell it fetches wizard context, but the exact return structure is vague and there is no output schema to fill the gap. The slug semantics are also left to inference, and the phrase 'status, container hints, certificate options' does not clarify the shape or types of the returned data.
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 description carries the burden of explaining the 'slug' parameter, but it never mentions slug at all. The wording 'fetch project + nginx context' lets an agent infer that slug likely identifies a project, but no format, example, or value source is given. This is a meaningful gap for a required parameter.
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 and resource: 'fetch project + nginx context' and explicitly frames the tool as a 'Wizard helper' for a step-by-step UI. It also enumerates the content dimensions (status, container hints, certificate options), which separates it from mutating or validating nginx siblings. This is enough for an agent to distinguish it from gatekeeper_nginx_validate, gatekeeper_nginx_enable, and similar tools.
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 'Wizard helper' framing implies when to use it—when driving the step-by-step UI—but the description never explicitly says when not to use it or which sibling to prefer instead. There is no exclusion such as 'for direct nginx status, use gatekeeper_nginx_status.' The usage context is clear but only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_pull_imageC
Pull a Docker image from a registry.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| image | Yes | ||
| pullViaCli | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a mutating (readOnlyHint=false), non-idempotent operation. The description adds nothing beyond that: no warning that pulling can be slow, consume significant disk, require network access, or fail on missing tags. With annotations present the bar is lower, but zero additional behavioral context is provided.
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 clean sentence with no wasted words and the core action front-loaded. It earns conciseness points, though the brevity stems as much from under-specification as from deliberate economy.
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 3-parameter tool with no output schema and zero schema descriptions, this is thin. An agent gets no information about return behavior, error cases (image not found, auth failure), duration/disk impact, or the meaning of pullViaCli — all relevant for a potentially long-running, mutating Docker operation.
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%, so the description must compensate — but it names no parameters. 'image' and 'tag' are self-evident from their names, but 'pullViaCli' is genuinely ambiguous (CLI vs what alternative? Docker API? gated wrapper?), and the description does nothing to clarify 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 and resource: 'Pull a Docker image from a registry.' This distinguishes it from siblings like gatekeeper_delete_image and gatekeeper_check_image_status. However, 'a registry' is generic and doesn't clarify whether this targets a specific configured registry or the local Docker daemon.
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 on when to use this tool vs alternatives such as gatekeeper_check_image_status or gatekeeper_create_container. The description doesn't mention prerequisites (e.g., registry auth, daemon availability) or the role of pullViaCli, which implies a meaningful method choice the agent must guess about.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_remove_certificateBDestructive
Remove an SSL certificate for a domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, covering the mutation and irreversibility aspects. The description adds the domain scope but does not disclose additional behaviors such as whether the private key is also removed, what happens if the certificate is in use, or any error conditions. Given the annotation coverage, the description adds modest context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant words. It is front-loaded with the action and resource, and it fits the tool's simplicity. Every word 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?
For a one-parameter destructive tool with annotations covering safety and idempotency, the description is minimal but arguably sufficient for a straightforward removal operation. However, it lacks details like whether the certificate must exist, side effects on dependent services, or error scenarios. Given the absence of an output schema, a slightly richer description would improve completeness, but the current level is acceptable for a simple 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?
Schema description coverage is 0%, so the description must compensate for explaining the 'domain' parameter. It only restates that the certificate is for a domain, which mirrors the parameter name and adds no detail about expected format (e.g., FQDN, with or without protocol), validation rules, or examples. This is insufficient for an agent to correctly format the input.
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 clearly states the verb 'Remove' and the resource 'SSL certificate for a domain'. It is specific and distinguishes from related tools like gatekeeper_install_certificate and gatekeeper_check_certificate_status. However, it does not explicitly contrast with sibling gatekeeper_nginx_remove, though that likely refers to nginx config rather than certificates. Overall, the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, nor are any prerequisites mentioned (e.g., verifying the certificate exists before removal). The agent is left to infer that removal is the inverse of installation. There is no mention of when not to use it or what conditions must hold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_restart_containerC
Restart a container.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the call is not read-only and is not marked destructive, and the description does not contradict that. But the description adds no behavioral context: no mention of container downtime, effect on running processes, requirement that the container exist, or what happens on failure.
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?
The description is a single short sentence with no filler, and the action is front-loaded. It is concise, though the brevity comes from under-specification rather than deliberate completeness.
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 this is near-minimal, but it omits the operational context an agent needs: how the container is identified, prerequisite state, and how this relates to the many sibling start/stop/restart container tools. With no output schema, some effect or return information would meaningfully improve completeness.
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 schema has one required string parameter `name` with 0% description coverage. The description does not clarify whether `name` is a Docker container name, a container ID, or a Gatekeeper-managed container handle, and it gives no format or example.
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?
Uses an explicit verb + resource ('Restart a container'), so the core operation is clear. However, it does not distinguish this tool from sibling tools like restart_container, start_container, or gatekeeper_start_container; it mostly restates the tool name.
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 given about when to use restart versus start or stop, nor when to prefer this gatekeeper-specific variant over the generic restart_container sibling. The description leaves all selection logic to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_revenue_reportBRead-onlyIdempotent
Gatekeeper revenue summary: total this month, last month, and monthly breakdown. Optional input: period (default month), months (default 6).
| Name | Required | Description | Default |
|---|---|---|---|
| months | No | ||
| period | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds modest context about what data the report contains (current month, previous month, monthly breakdown) but does not disclose further behavioral details such as data scoping, currency, or what 'open world' hints imply. This is acceptable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loading the core output summary before parameter defaults. Every word earns its place, with no filler or redundant restatement of the tool name.
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?
Given the tool has zero required parameters and strong safety annotations, a minimal read-only report description can be viable. However, the ambiguity around period and months, plus the lack of an output schema, leaves gaps for an agent trying to customize the report correctly. It is adequate for a default invocation but incomplete for parameter-aware use.
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 description must compensate. It only says 'period (default month)' and 'months (default 6)', which restates defaults rather than explaining what values period accepts or what months actually controls (e.g., how many months to include in the breakdown). An agent cannot confidently know valid period formats or the exact meaning of months from this description.
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 clearly identifies the tool's purpose as a Gatekeeper revenue summary, listing specific outputs: total this month, last month, and monthly breakdown. It does not contain an explicit verb, and it does not differentiate itself from related gatekeeper tools such as gatekeeper_list_payments, but the resource and metrics are unambiguous enough for an agent to understand what it does.
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 guidance about when to use this tool versus alternatives like gatekeeper_list_payments, gatekeeper_list_overdue, or other gatekeeper reporting tools. The description states defaults but does not mention use cases, exclusions, or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_start_containerC
Start a stopped container.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate a non-read-only mutation (readOnlyHint=false). The description adds no behavioral context beyond that, such as what happens if the container is already running, whether it is reversible, or what side effects starting a container may have.
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?
The description is a single, clear sentence with no redundant wording. It is appropriately short for a simple one-parameter action, though it is brief to the point of under-specification.
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 mutation tool, 'Start a stopped container' is minimally adequate, but it lacks information about expected output, error behavior, and how it differs from the similarly named sibling 'start_container'. Given the large sibling list, more context would help disambiguate.
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 description needed to clarify the 'name' parameter, but it does not explicitly state that 'name' is the container name. While inferable from context, the description does not add value beyond the schema's minimal 'Name' title.
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 uses a specific verb and resource: 'Start a stopped container.' It clearly communicates the action, but it does not distinguish this tool from the sibling 'start_container', which appears to have the same purpose.
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 guidance on when to choose this tool over alternatives like 'start_container', 'gatekeeper_restart_container', or 'gatekeeper_stop_container'. The phrase 'stopped container' implies a precondition, but no explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_stop_containerB
Stop a running container.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a state-changing operation (`readOnlyHint: false`) and non-idempotent. The description adds the useful constraint that the target must be a running container, which suggests behavior if the container is already stopped. It does not describe side effects or failure modes, but the annotations lower the burden.
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?
The description is a single, front-loaded sentence with no filler: 'Stop a running container.' Every word earns its place, and there is nothing redundant or irrelevant for such a simple operation.
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 tool is simple, but the description is too thin given the surrounding toolset. It does not clarify whether this applies to Docker containers, gatekeeper-managed containers, or how it differs from the sibling `stop_container`. With no output schema and no parameter documentation, the description leaves the agent without enough context to reliably distinguish and invoke this tool in ambiguous situations.
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 description must compensate for the undocumented `name` parameter. It only says 'a running container,' which weakly implies `name` identifies that container, but it does not explicitly explain what value to provide, such as container name, ID, or a gatekeeper-specific identifier.
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 clear verb and resource: 'Stop a running container.' It is unambiguous about the action, but it does not distinguish this tool from the sibling `stop_container` or related `gatekeeper_*` container tools. It is clear but lacks sibling differentiation.
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 guidance on when to use this tool versus alternatives such as `stop_container`, `gatekeeper_restart_container`, or `gatekeeper_delete_container`. The description implies using it when you want to stop a container, but it provides no exclusions, prerequisites, or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_unblock_projectA
Manually unblock a Gatekeeper client project after payment or agreement. Requires slug and a non-empty reason. Confirmation gate applies.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| reason | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that a non-empty reason is required and that a confirmation gate applies. These are useful behavioral traits not visible in the schema or annotations. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each adding distinct value: the action and context, the parameter requirement, and the confirmation gate. No redundant wording or 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?
For a simple two-parameter mutation with no output schema, the description covers the key invocation requirements and expected context. The meaning of the 'confirmation gate' and the exact response format are not detailed, but these gaps are minor for this 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?
With 0% schema description coverage, the description partially compensates by naming both parameters and specifying that 'reason' must be non-empty. It does not explain what a valid slug looks like or where to source it, leaving some semantic ambiguity.
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 uses a specific verb ('unblock') and resource ('Gatekeeper client project') and adds the triggering context 'after payment or agreement.' This clearly distinguishes it from the sibling gatekeeper_block_project and other gatekeeper actions.
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 when the tool should be used: when a project needs manual unblocking after payment or agreement. It does not explicitly name alternatives or exclusion criteria, but the 'after payment or agreement' condition is sufficient situational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gatekeeper_update_projectA
Update Gatekeeper project fields for an existing client project. PATCH semantics: provide slug to target the project plus ONLY the fields the user asked to change — every body field is optional but at least one is required. Editable fields: name, domain, containerName, type (frontend|backend), clientName, clientEmail, amountDue (number), currency (e.g. KES/USD), dueDate (YYYY-MM-DD, or null to clear), gracePeriodDays (integer). Do NOT send fields the user did not ask to change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| slug | Yes | ||
| type | No | ||
| domain | No | ||
| dueDate | No | ||
| currency | No | ||
| amountDue | No | ||
| clientName | No | ||
| clientEmail | No | ||
| containerName | No | ||
| gracePeriodDays | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: PATCH semantics (partial update), optionality of body fields with at least one required, and null-to-clear behavior for dueDate. It also warns against sending unrequested fieldskus. These details help the agent predict mutation behavior, though it does not mention side effects or response shape.
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?
The description is dense yet well-organized: purpose first, followed by PATCH semantics, then a compact list of fields with constraints, and a final caution. Every sentence earns its place without redundant filler. The structure front-loads the most critical information (update existing project, PATCH partial semantics) before enumerating details.
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 description covers all calling requirements: target slug, optional fields with types/formats, and usage expectations. With no output schema, it does not describe return values, but for an update operation this is a minor omission. Error behavior on invalid slug or validation failures is also unspecified, though overall the tool is adequately documented.
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 schema description coverage at 0%, the description compensates by enumerating every editable field, specifying types (number, integer), value constraints (frontend|backend for type), format guidance (YYYY-MM-DD for dueDate), currency examples (KES/USD), and semantics (null to clear). It also clarifies the required target parameter (slug). This is strong compensation for the schema's lack of descriptions.
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 an explicit verb ('Update'), resource ('Gatekeeper project fields'), and scope ('existing client project'), clearly distinguishing it from create/delete/get siblings. The PATCH semantics further clarify the intent of partial modification. An agent can immediately tell this is the update tool among the gatekeeper family.
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 clearly states when to use this tool (update existing project) and gives concrete rules: provide slug, send only fields the user asked to change, at least one field required. It does not explicitly name alternative tools like gatekeeper_create_project, but the 'existing client project' wording and PATCH semantics imply the appropriate context without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_batteryARead-onlyIdempotent
Battery percentage, plugged state, and remaining seconds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this tool read-only, idempotent, non-destructive, and open-world. The description adds the concrete returned fields, which is useful but not extensive behavioral context. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely compact and front-loaded, listing exactly the three key output values with no redundant wording. Every word contributes meaning.
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 parameterless read-only tool, this is complete: the agent knows exactly what values to expect and that no input is required. The annotations cover safety and idempotency, so no additional context is needed.
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 are zero parameters, so there is nothing for the description to explain. The baseline of 4 applies, and the description sensibly focuses on the tool's output rather than inventing parameter details.
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 clearly enumerates the tool's output: battery percentage, plugged state, and remaining seconds. It does not use an explicit verb but the name 'get_battery' plus these data fields makes the purpose clear. It does not differentiate itself from the sibling 'monitor_battery_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 given about when to use this tool versus alternatives like 'monitor_battery_health' or 'get_power_profile'. The description simply states what is returned, leaving selection decisions entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_boot_errorsARead-onlyIdempotent
Recent error-level journal entries from the current boot.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint (likely indicating data may change), idempotentHint, and destructiveHint=false, so the agent knows it's a safe read operation. The description adds no behavioral details beyond that—it does not specify whether logs are paginated, whether they include kernel messages, or how far back 'recent' goes. With annotations covering safety, a 3 is appropriate as it adds minimal value but doesn't contradict.
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?
The description is a single concise sentence of 8 words, front-loaded with the primary verb and resource. It is efficient and contains no fluff, but it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema) and annotations cover safety. However, the description lacks key details for correct invocation: what exactly 'lines' means (count? limit?), and potential return format (JSON array? string?). Given the low complexity, this is acceptable but not complete—agents might wonder if 'recent' refers to time or byte size. Slight improvements would make it more 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?
Schema description coverage is 0% (the parameter has no description in the schema), so the description must add meaning. It does not mention the 'lines' parameter at all. The parameter name suggests a count of lines, but the description doesn't clarify whether it is a limit, number of entries, or how it interacts with 'recent'. Since the schema provides no guidance and the description doesn't, this is a gap, but the parameter name is somewhat self-explanatory.
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 clearly states it retrieves recent error-level journal entries from the current boot, specifying the verb (get), resource (journal entries), and scope (current boot). It is distinguishable from siblings like get_logs and list_failed_services because it specifically scopes to error-level entries from the current boot, though it does not explicitly compare to those 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?
The description implies when to use it (when you need error-level logs from the current boot) but does not provide explicit guidance on when not to use it or alternatives. For example, it doesn't mention that get_logs might be more general, or that list_failed_services is for failed services. The scope is clear enough for an agent to infer usage, but no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_container_logsBRead-onlyIdempotent
Recent logs from a Docker container.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | ||
| name_or_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the 'recent' scoping, which is useful, but it does not disclose whether logs are tailed, how container identification works, or the output format. With annotations carrying much of the burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler or repetition. It is efficient and front-loaded, though slightly under-specified; the conciseness itself is a strength.
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 simple read-only log retrieval with annotations covering safety, this is nearly adequate. However, the lack of any parameter semantics and the absence of an output schema leave the agent to infer how to specify the container and the line count. It is a minimum-viable definition with 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 description coverage is 0%, so the description must compensate for the two parameters. It only loosely maps to the 'lines' parameter with 'Recent logs' and says nothing about 'name_or_id'. The parameter names are somewhat self-explanatory, but the description provides no concrete semantics for either parameter.
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 clearly states the resource ('logs from a Docker container') and scopes it to 'recent' logs. Although it lacks an explicit verb, the tool name supplies the action, and specifying 'Docker container' differentiates it from the sibling get_logs.
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 given on when to use this tool versus alternatives like get_logs or get_container_status. The description only states what the tool returns and does not mention exclusions, prerequisites, or selection conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_container_statusARead-onlyIdempotent
Detailed status for one Docker container. Use FIRST when asked if a container is running.
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds that it provides 'detailed status' but doesn't add much beyond that. It doesn't explain what the status contains or how to interpret it, but the annotations cover the safety profile; still, it could be more transparent about the granularity of status.
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?
The description is a single sentence that is both concise and front-loaded. It states the tool's purpose and gives a direct usage instruction without any wasted words. It perfectly balances brevity with usefulness.
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?
Given the tool's simplicity (one parameter, no output schema, clear purpose), the description is sufficient. It covers the core usage scenario (checking if a container is running) and the parameter is obvious. The only minor gap is that it doesn't specify what statuses are possible, but that might be inferred from the schema or context.
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%, but there is only one parameter 'name_or_id' with its title 'Name Or Id' which is self-explanatory. The description doesn't add any semantics beyond the schema, but the parameter's meaning is clear from the schema itself. Since coverage is low but the parameter is trivial, a baseline of 3 is appropriate.
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 clearly states it provides 'Detailed status for one Docker container' with a specific verb 'get' and resource 'container status'. It explicitly says to use it FIRST when asked if a container is running, which distinguishes it from siblings like list_docker_containers, get_container_logs, and compose_status.
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 an explicit when-to-use instruction: 'Use FIRST when asked if a container is running.' This provides clear guidance on when to select this tool over alternatives, though it doesn't explicitly mention when NOT to use it, the specific use case is enough to differentiate it from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_currently_playing_songBRead-onlyIdempotent
Current playback status, title, artist, album, album art URL, and position.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 covered. The description adds no behavioral context beyond that—it doesn't disclose what happens when no track is playing, whether a media provider needs to be active, or any state-dependent behavior. It merely lists return fields, which is more about output than 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 sentence that starts with the core purpose ('Current playback status') and efficiently lists the returned fields. No filler, no redundancy—every word 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?
For a no-param read-only tool with strong annotations, the description is mostly sufficient, but the absence of an output schema means the field list is the only return specification. It doesn't clarify types, nullability, or the no-track-playing edge case, leaving some ambiguity about how to interpret the result.
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 zero parameters and 100% schema coverage, the schema is already complete. The baseline for no parameters is 4, and there is no parameter information for the description to add.
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 clearly states the resource (currently playing song) and enumerates the specific fields returned (status, title, artist, album, album art URL, position), distinguishing it from control tools like toggle_play_pause. However, it doesn't explicitly contrast with sibling retrieval tools like search_and_play or spotify_devices, so it stops short of full differentiation.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention that it's the go-to for reading playback info, nor does it reference the many media control or Spotify siblings that might also provide context. The agent must infer usage entirely from the name and field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_device_infoARead-onlyIdempotent
High-level device identity: laptop model (e.g. ThinkPad X1 Carbon Gen 9), vendor (e.g. Lenovo), OS distro, kernel, architecture, hostname. Use when the user asks 'what device/laptop/computer is this'. For deeper hardware specs use get_system_info; for OS-only details use get_system_os.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the scope of returned fields but discloses no further behavioral traits like latency, permission requirements, or variable output; these are not critical for a simple read-only identity query, so this is adequate.
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?
Three concise sentences, each earning its place: the output scope, the trigger phrase, and the sibling tool routing. There is no redundant restatement of 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?
For a no-input, read-only identity tool with rich annotations, the description fully specifies the use case, the output fields, and how it relates to neighboring tools. Nothing an agent needs to decide whether and when to call it is 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?
The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add. Per the baseline for 0-parameter tools, this is handled correctly and needs no further parameter explanation.
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 the resource precisely: high-level device identity, and enumerates the exact fields returned (laptop model, vendor, OS distro, kernel, architecture, hostname). It also distinguishes itself from get_system_info and get_system_os by scope, so an agent can tell it apart from siblings without opening schemas.
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?
It explicitly names the trigger condition ('what device/laptop/computer is this') and provides alternatives for other cases: deeper hardware specs → get_system_info, OS-only details → get_system_os. This leaves zero ambiguity about when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_directory_treeBRead-onlyIdempotent
Get directory tree structure for folder navigation.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_depth | 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 agent knows this is a safe read-only operation. The description adds little beyond that: it says 'Get directory tree structure' but does not disclose behavior like whether symlinks are followed, whether hidden files are included, or how max_depth affects traversal.
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?
The description is a single sentence with no filler, and the main action and resource are front-loaded. It is appropriately sized for the amount of information it attempts to convey.
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 tool with no output schema, no parameter descriptions, and no usage guidance, this description is too thin. An agent cannot tell what the output looks like, what max_depth means in practice, whether the output includes files or only directories, or what constraints apply to path. The annotations cover safety but not the operational details needed to invoke the tool correctly.
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 does not explain either parameter. 'Path' and 'max_depth' are somewhat self-explanatory names, but the description does not clarify that max_depth counts tree levels, whether path must be a directory, or what values are valid. The description fails to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('directory tree structure') and a clear verb ('Get'), and it adds a navigation purpose. It does not explicitly differentiate from siblings like list_files or search_files, but 'tree structure' strongly implies a recursive view rather than a flat listing.
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 phrase 'for folder navigation' gives only a vague sense of when to use it. There is no guidance on when to choose this over sibling tools such as list_files, search_files, or get_disk_usage, and no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disk_usageARead-onlyIdempotent
Disk space usage: how much free and used space each mounted partition has. Use when the user asks how much space is left or available. Do NOT use for partition layout or filesystem type — use get_system_disk for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, openWorld, and non-destructive behavior. The description supplements this by clarifying the output pertains to each mounted partition's free and used space, which adds useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: the first states the core capability and output, the second gives usage conditions, and the third provides a clear negative boundary and alternative. Every sentence earns its place without redundancy.
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 parameterless read-only tool, the description covers what the tool does, when to use it, and what to use instead for adjacent cases. It does not specify units or exact output formatting, but that is a minor gap given the explicit per-partition scope.
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 has zero parameters, so there is no parameter detail for the description to add. The baseline of 4 applies, and the description's scope clarification ('each mounted partition') is sufficient contextual 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?
The description clearly states the tool reports disk space usage—specifically free and used space per mounted partition. It distinguishes itself from get_system_disk by explicitly excluding partition layout and filesystem type, making its purpose 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?
It provides explicit when-to-use guidance ('when the user asks how much space is left or available') and an explicit exclusion ('Do NOT use for partition layout or filesystem type') with the named alternative get_system_disk. This leaves no ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_display_brightnessARead-onlyIdempotent
Get the current screen brightness.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the agent knows this is a safe read. The description adds no behavioral details beyond the annotations, and since the tool has zero parameters and no output schema, there is little extra behavior to disclose.
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?
The description is a single, short sentence with no wasted words. It is front-loaded and appropriately sized for a trivial read operation.
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 tool with safety annotations already present, the description covers the core purpose. However, without an output schema or mention of the return value format (e.g., percentage or 0-255 range), an agent may guess wrong about the result's units, 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?
The tool has zero parameters and schema coverage is 100%, so there is nothing for the description to add. The baseline for zero-parameter tools is 4, and the description is consistent with that.
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 'Get the current screen brightness' clearly states the action (get) and the resource (screen brightness). It is distinguishable from siblings like set_display_brightness and get_monitor_state, though it does not explicitly name them for differentiation.
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 the tool is used to read brightness without side effects, and siblings include set_display_brightness and get_resolution, providing context. However, it does not explicitly state when to prefer this over alternatives like get_monitor_state or how to interpret the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docker_infoARead-onlyIdempotent
Check whether Docker is installed and the daemon is running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds that it checks two specific conditions (installation and daemon running), which is useful, but it does not disclose output shape or error behavior. Given the strong annotation coverage, a mid score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It conveys the full scope of the check without redundancy.
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 status check, the description fully covers what the tool does. No output schema exists, but for this simple boolean/status check the absence of return-format details is not a material 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?
The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add. The baseline of 4 for parameterless tools applies here.
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 names a specific verb ('Check') and a specific resource ('Docker installed and the daemon is running'). It clearly distinguishes this tool from the many Docker container-management siblings like list_docker_containers or start_container.
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 makes the intended use clear: verify Docker presence and daemon health, which is a natural prerequisite before Docker operations. It does not explicitly name alternatives or state when not to use it, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_firewall_statusARead-onlyIdempotent
Get ufw firewall status when installed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 covered. The description adds the conditional 'when installed' but does not disclose what happens if ufw is absent (error, empty result, or fallback), which is a notable behavioral gap.
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 short sentence, no filler, and the core action is front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only status tool, the description and annotations cover most invocation needs. The main missing piece is the exact output shape or failure behavior when ufw is not installed, especially since no output schema exists, but the name and domain make the return value reasonably inferable.
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 has zero parameters and schema description coverage is 100%, so there are no parameter semantics for the description to add. Baseline 4 applies for no-parameter tools.
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 ('Get') with a specific resource ('ufw firewall status'), and the qualifier 'when installed' distinguishes this from sibling status tools such as get_vpn_status. An agent can clearly tell what this tool does.
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 phrase 'when installed' gives a condition for using the tool, implying it should only be invoked on systems with ufw present. However, it does not explicitly name alternatives or state when not to use it, so the guidance is minimal but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_logsARead-onlyIdempotent
Get the last N lines of a systemd service log.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | ||
| service | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, and the description is consistent with them. It adds no extra behavioral detail beyond identifying the log source, but since annotations already cover the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. Every word contributes to understanding what the tool does.
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 simple read-only tool with two required parameters and safety annotations, this is nearly sufficient. It lacks details about behavior on nonexistent services or invalid line counts, but those are minor gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no parameter descriptions, so the description compensates by mapping 'service' to a systemd service and 'lines' to the last N lines. It doesn't specify constraints like positive integers or unit name format, but the core meaning is clear.
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 ('Get'), resource ('last N lines of a systemd service log'), and scope, which clearly differentiates it from container-log or boot-error sibling tools. It is not a tautology and names the exact object being operated on.
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 phrase 'systemd service log' implies the intended context, but the description never explicitly says when to prefer this tool over alternatives like get_container_logs or get_boot_errors, nor gives any 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.
get_monitor_stateARead-onlyIdempotent
Check whether the monitor is currently on or off. Use before toggling monitor state if unsure of the current state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is well covered. The description adds only the 'before toggling' context, which is useful but not a behavioral disclosure beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences carry the purpose and the usage guidance without fluff. The key action is front-loaded in the first sentence, and the second sentence supplies the conditional use case.
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 query, the description is nearly complete and the on/off outcome is stated despite no output schema. The main gap is that it does not address multi-monitor ambiguity, but the sibling get_system_monitors suggests this is a separate concern.
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 zero parameters and 100% schema coverage, the description has no parameter meanings to add. The baseline of 4 applies because the schema is empty and no disambiguation is needed.
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 uses a specific verb ('Check') and names the resource ('monitor state'), and clarifies the outcome as on/off. It also contrasts with toggling, which separates it from monitor_on/monitor_off.
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?
It explicitly instructs using this tool before toggling state when unsure, giving a clear condition for use. It stops short of naming the alternative toggle tools or saying when not to use it beyond the 'unsure' condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_ipARead-onlyIdempotent
Local and public IP addresses.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 covered. The description adds only that both local and public addresses are returned, but does not disclose any caveats, network calls, or failure behavior; this is acceptable given the strong annotations but not exceptional.
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?
The description is a single short phrase with no filler. It states the core output immediately and 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?
For a zero-parameter, read-only tool with rich annotations, 'Local and public IP addresses.' is sufficient for an agent to select and invoke it. It explains the return content despite the absence of an output schema.
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 has zero parameters and schema coverage is 100%, so there are no parameter semantics for the description to clarify. This matches the baseline for a parameterless 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?
The description clearly identifies the resource (IP addresses) and the scope (local and public), so an agent knows what the tool returns. However, it is a noun phrase rather than an explicit verb+resource statement, and it does not differentiate against siblings such as get_network_location or get_wifi_status.
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 choose this tool over alternatives like get_network_location, get_wifi_status, or ping_host. The only usage signal is the name and the noun phrase, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_locationARead-onlyIdempotent
Public IP with geo-location: city, region, country, timezone, ISP, coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive, so the safety profile is fully covered. The description adds output scope but no additional behavioral context such as whether an external network request is made or whether results could be unavailable.
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 conveys the complete output field list with no filler or redundant wording. Every word 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?
For a zero-parameter read-only tool, the description adequately lists the returned information. It lacks an explicit return format or caveats about external network dependencies, but the annotations plus output-field enumeration are sufficient for straightforward 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?
The tool has zero parameters, so the input schema carries no burden and the description need not explain parameter meaning. The description adds nothing about parameters, but nothing is required.
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 clearly identifies the resource (public IP) and the value it returns (city, region, country, timezone, ISP, coordinates). It implicitly differentiates from the sibling get_network_ip by adding geo-location details, but it does not explicitly name or contrast that alternative.
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 intended use is implied: call this when you need the geo-location and ISP details of the public IP. However, there is no explicit when-to-use/when-not-to-use guidance and no mention of how it compares to get_network_ip or other network tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_power_profileA
Get the current power profile (performance, balanced, power-saver).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'Get' the power profile, indicating a read-only lookup, while the annotations set readOnlyHint=false, implying the tool might modify state. This is a direct contradiction, and the description does not disclose any side effects or clarify the discrepancy.
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?
The description is one concise sentence with no filler. It front-loads the resource name and includes useful possible values in a compact parenthetical.
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 getter with no output schema, naming the returned property and its possible values is nearly sufficient. However, the readOnlyHint=false annotation conflicts with the 'Get' semantics, so an agent cannot fully trust the safety profile from the description alone.
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 input schema has zero properties)Skip to the description need not document parameter semantics. The parenthetical in the description refers to possible return values, not parameters, and the schema coverage is 100%, satisfying the no-parameter baseline.
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 uses a specific verb ('Get') and a clear resource ('current power profile'), and it enumerates the possible values (performance, balanced, power-saver). This makes the tool's purpose unmistakable and distinguishes it from the sibling set_power_profile.
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 usage when an agent needs the current power profile, but it gives no explicit when/when-not guidance and does not mention set_power_profile as the alternative for changing it. The context is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resolutionARead-onlyIdempotent
Get the current display resolution and refresh rate.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 covered. The description adds the specific observable return content, resolution and refresh rate, which is the key behavioral detail for a zero-parameter getter. It does not specify units or exact return shape, but that is a minor gap given the simple read-only nature.
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?
The description is a single clear sentence with no filler. The core information is front-loaded and every word contributes to the tool's 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?
For a zero-parameter, read-only getter with rich annotations, the description is reasonably complete. It names the exact data being returned (resolution and refresh rate). While there is no output schema and the return format is not elaborated, the low complexity of this tool means this level of detail is sufficient for an agent to select and invoke it.
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 input schema has no parameters and schema description coverage is 100%. There is nothing for the description to add about parameters, so the baseline of 4 applies appropriately.
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 clear action ('Get') and a specific resource ('current display resolution and refresh rate'). This cleanly separates it from siblings like get_monitor_state, get_display_brightness, and get_system_monitors, which target different or broader information.
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 explicit guidance on when to use this tool over alternatives such as get_system_monitors or get_monitor_state. The usage is implied: call it when you need the current resolution and refresh rate. No when-not-to-use or alternative exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_statusARead-onlyIdempotent
Check whether a specific systemd service is running, failed, or stopped. Use FIRST when the user asks if a service is up/running/active. Do NOT start or restart the service to answer a status question.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| scope | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the specific behavioral scope (checking a specific service's state) and the explicit warning against starting or restarting, which is beyond the annotations. It does not detail error behavior (e.g., service not found), but given the annotation coverage, the description provides sufficient additional 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?
The description is three short sentences, with the core purpose front-loaded. Every sentence contributes: the primary function, the recommended usage context, and an explicit prohibition against destructive actions. No filler or redundancy. It is efficiently structured for quick agent comprehension.
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 description provides the core purpose and expected result states (running/failed/stopped), which is helpful since there is no output schema. However, it omits critical parameter semantics for 'scope', which is required. It also does not address edge cases like non-existent services or permission requirements, but given the simplicity and annotation coverage, the main gap is the missing scope explanation. Overall, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% – neither parameter has a description in the schema. The description mentions 'a specific systemd service', which loosely maps to the 'name' parameter, but 'scope' is completely unaddressed. The agent has no guidance on what 'scope' means (e.g., system vs. user session) or how to populate it. Since the description must compensate for the schema gap but only partially does, this is a significant deficiency.
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 clearly states the verb ('Check') and the resource ('a specific systemd service'), and enumerates the three possible states ('running, failed, or stopped'). It also distinguishes this from sibling tools by emphasizing it is for status queries, not for starting or restarting services. The phrase 'Use FIRST when the user asks if a service is up/running/active' further sharpens its specific role.
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 explicitly states when to use the tool ('Use FIRST when the user asks if a service is up/running/active') and provides a clear exclusion ('Do NOT start or restart the service to answer a status question'). This effectively routes the agent to this tool over the mutation siblings (start_service, stop_service, restart_service). While it does not mention list_services, the primary decision point is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_snapshotARead-onlyIdempotent
Live system metrics snapshot: current CPU load, RAM usage, GPU usage, disk I/O rates, network I/O rates, temperatures, fan speeds, battery level, top processes. Use for 'how is my PC doing' or real-time status. Do NOT use for static hardware specs — use get_system_info for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, covering the safety profile. The description adds useful behavioral context: it is a live/real-time combined snapshot, not a persistent monitor or static report. It does not contradict annotations. A small gap remains in that the description doesn't specify response structure or whether the snapshot is instantaneous vs averaged, but the annotation coverage lowers the burden.
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 with no wasted words. The first sentence front-loads the full metric list, and the second immediately provides usage and alternative routing. 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?
For a zero-parameter, read-only snapshot tool with strong annotations and no output schema, the description is complete: it names the resource, lists contents, gives real-time use cases, and points to the correct alternative. An agent has everything needed to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema contains no properties, so there is nothing for the description to explain. The baseline for 0 params is 4. The description's list of output metrics is the closest equivalent and provides sufficient semantic context for a no-arg 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 states a specific verb and resource: 'Live system metrics snapshot' and enumerates the exact metrics included (CPU, RAM, GPU, disk I/O, etc.). It also explicitly distinguishes itself from get_system_info by warning against using it for static hardware specs, making sibling differentiation clear without requiring schema inspection.
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?
It gives explicit guidance on when to use: 'Use for "how is my PC doing" or real-time status.' It also provides a clear exclusion and alternative: 'Do NOT use for static hardware specs — use get_system_info for that.' This fully addresses selection criteria versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_biosBRead-onlyIdempotent
BIOS vendor, version, release date, and motherboard.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds the expected returned fields but does not mention possible absence of data, privilege requirements, or other behavioral edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise phrase with no filler and its key information is front-loaded. It is slightly under-specified as a sentence, but it is appropriately sized for a simple parameterless read operation.
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 low-complexity, zero-parameter read-only tool, the description adequately identifies the return payload, especially since no output schema exists. It could be more complete by explicitly indicating the action or noting that values may be unavailable, but nothing critical is missing for basic 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?
The input schema has zero parameters surfaces, so parameter semantics are not a burden for the description. The baseline for zero-parameter tools is 4, and the description appropriately avoids redundant parameter explanation.
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 clearly identifies the resource (system BIOS) and the specific data fields returned: vendor, version, release date, and motherboard. It is identifiable among the large sibling list even though it lacks an explicit verb like 'gets' or 'returns', which keeps it from 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 guidance on when to use this tool versus alternatives such as get_system_os or get_device_info. While the purpose implies use when BIOS details are needed, the description provides no explicit context, prerequisites, or exclusions, so agents receive no decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_configARead-onlyIdempotent
Get system configuration (home directory, username).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, idempotent behavior, so the description does not need to restate those. It adds value by revealing the expected content of the response (home directory, username), which is useful since there is no output schema. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and resource, then adds specific examples in a parenthetical. There is no filler, repetition, or irrelevant detail.
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, idempotent configuration getter, the description is sufficient: it names the action, the resource, and representative return values. The annotations cover safety and side-effect expectations, so no critical information is 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?
The tool has zero parameters and the schema is fully self-explanatory, so there is no parameter ambiguity for the description to resolve. The baseline of 4 applies because no parameters exist and nothing is left 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?
The description uses a specific verb (Get), a clear resource (system configuration), and concrete examples of what it returns (home directory, username). It does not explicitly distinguish itself from similar siblings like get_system_info or get_system_os, so it loses the top score.
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 no guidance on when to use this tool versus the many nearby system-related getters, nor any exclusions or alternatives. For a zero-parameter read-only call the need is modest, but the absence of any usage direction is still a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_cpuARead-onlyIdempotent
Static CPU specs: model name, core/thread counts, base clock, architecture. Use when the user asks WHAT CPU they have. Do NOT use for live CPU load — use monitor_cpu for current usage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds context beyond that by clarifying the tool returns static specs rather than live load, and by enumerating the exact output fields — valuable since there is no output schema.
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 output content is front-loaded, and the usage warning/alternative is placed second without wasting words.
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, the description covers what data is returned, when to use it, and when not to. Annotations cover safety and side effects, so nothing necessary for correct invocation is 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?
The tool has zero parameters, so the input schema is trivially complete. Baseline 4 applies; there is nothing for the description to add about parameter meaning.
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 exactly what the tool returns — static CPU specs including model name, core/thread counts, base clock, and architecture. It also explicitly differentiates from monitor_cpu, so an agent can distinguish this from the live-usage sibling without opening schemas.
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?
Provides explicit selection criteria: use when the user asks WHAT CPU they have, and do NOT use for live CPU load, naming monitor_cpu as the alternative. This fully routes the agent to the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_diskARead-onlyIdempotent
Static disk layout: partition names, mount points, filesystem types, and total sizes. Use when the user asks about drive partitions or disk setup. Do NOT use for free space or usage stats — use get_disk_usage for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, non-destructive, idempotent behavior. The description adds meaningful context by framing the result as a static snapshot, distinguishing it from live usage monitoring and listing the fields an agent can expect.
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 contain only essential information: the output contents are front-loaded and the usage boundary follows immediately. There is no redundant wording.
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 clear annotations, the description fully specifies what the agent will get and when it should instead choose get_disk_usage. The lack of an output schema is compensated by the enumerated fields in the first sentence.
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 has zero parameters, so there is no parameter documentation burden. The baseline of 4 applies because nothing is missing and no parameter semantics are needed.
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 specifies exactly what the tool returns: partition names, mount points, filesystem types, and total sizes. It clearly distinguishes this from the sibling get_disk_usage by describing a static layout rather than usage stats.
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?
It provides an explicit when-to-use ('drive partitions or disk setup') and a direct when-not-to-use ('Do NOT use for free space or usage stats') with the named alternative get_disk_usage. No inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_gpuARead-onlyIdempotent
Static GPU info: GPU device names and models. Use when the user asks WHAT GPU they have. Do NOT use for live GPU load — use monitor_gpu for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations by emphasizing that the data is static rather than live, which is an important expectation to set. It also clarifies the scope of returned information. The annotations already cover read-only and non-destructive behavior, so the description does not need to repeat those details.
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?
The description is compact: two sentences deliver the core purpose, a clear usage trigger, and a routing pointer to the alternative tool. Every sentence carries necessary information with no filler or redundancy.
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, this description is nearly complete: it names the resource, the type of data returned, and the key boundary with the live-monitoring sibling. It does not describe the exact output format or behavior when no GPU is present, but with no output schema and a simple informational purpose, this 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?
The tool has zero parameters flagged, and schema description coverage is 100% for an empty schema, so the description does not need to explain parameters. The baseline of 4 applies because there is nothing for the description to clarify.
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 clearly identifies the tool's purpose: returning static GPU info such as device names and models. It also explicitly distinguishes this tool from monitor_gpu, which prevents an agent from confusing static information collection with live monitoring.
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 explicit guidance on when to use the tool ('when the user asks WHAT GPU they have') and explicitly warns against using it for live GPU load, directing the agent to monitor_gpu instead. This satisfies both when-to-use and when-not-to-use criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_infoARead-onlyIdempotent
Static hardware specs bundle: CPU model, RAM capacity, GPU model, disk partitions, OS version, USB devices, monitor config, and BIOS. Use when the user wants to know WHAT their machine is made of. Do NOT use for live usage — use get_snapshot for live metrics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. The description adds meaningful behavioral context by specifying that the information is 'static' hardware specs and not live metrics, which sets expectations about data freshness beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core summary, followed by the contents list and usage guidance. Every sentence earns its place, and the explicit 'do NOT use' clause is high-value guidance with no wasted words.
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 description names the primary alternative for the tool's main boundary (live usage), lists the returned data categories, and is supported by strong annotations. With no parameters, no output schema, and clear scope, nothing an agent needs to invoke this tool correctly is 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?
The tool has zero parameters and the input schema is empty, so there is no parameter ambiguity for the description to resolve. The description's content list is sufficient, and it cannot add meaning to non-existent parameters. The zero-parameter baseline of 4 is appropriate.
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 opens with a clear summary of the tool's scope—a 'static hardware specs bundle'—and enumerates the exact component categories it covers: CPU model, RAM capacity, GPU model, disk partitions, OS version, USB devices, monitor config, and BIOS. It explicitly contrasts with get_snapshot for live metrics, which distinguishes it from a key sibling without requiring schema inspection.
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 explicitly states when to use the tool: 'when the user wants to know WHAT their machine is made of.' It also gives a direct when-not-to-use instruction and names the alternative, get_snapshot, for live usage. This is fully explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_monitorsARead-onlyIdempotent
Static monitor hardware info: display names, resolutions, refresh rates. Use when the user asks about their monitor specs. Do NOT use to check if the monitor is on/off — use get_monitor_state for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds meaningful context by emphasizing 'static' hardware info, which clarifies that the tool does not reflect live power or state changes. No contradiction exists between description and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence states scope and content, and the second provides routing guidance. Every word earns its place with no redundancy or 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?
For a zero-parameter, read-only info tool with no output schema, the description is complete: it identifies the exact return content (display names, resolutions, refresh rates) and explicitly rules out the one likely confusion case (monitor on/off state). Nothing material is 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?
The tool has zero parameters and schema coverage is 100%, so there is no parameter information that the description needs to add. Per the rubric, zero parameters receive a baseline of 4, and the description appropriately omits irrelevant parameter details.
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 clearly states the tool returns static monitor hardware info with specific fields: display names, resolutions, and refresh rates. It also distinguishes itself from the sibling get_monitor_state by naming the alternative, making the tool's purpose unmistakable even without opening schemas.
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?
Explicit when-to-use guidance is present: 'Use when the user asks about their monitor specs.' It also provides a direct exclusion with a named alternative: 'Do NOT use to check if the monitor is on/off — use get_monitor_state for that.' This fully routes the agent to the correct tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_osARead-onlyIdempotent
OS identity: distro name, kernel version, hostname, current username. Use for OS/kernel-specific questions. For a full device summary including hardware vendor and model, use get_device_info instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is fully covered. The description adds value beyond annotations by specifying the exact data fields returned, which compensates for the absence of an output schema.
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 tightly scoped sentences with zero filler. The core identity and returned fields come first, followed by usage guidance and a pointer to the sibling 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 zero-parameter, read-only system information tool, this description is complete: it lists the returned fields, states the intended use case, and routes to the relevant sibling when more detail is needed. No critical information is 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?
The input schema is empty and schema description coverage is 100%, so the baseline is 4. There are no parameters to document, and the description correctly focuses on output and usage instead.
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?
Though phrased as a noun rather than an imperative, it names the exact resource ('OS identity') and the specific fields returned: distro name, kernel version, hostname, and current username. It also distinguishes itself from get_device_info, so an agent can confidently 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Use for OS/kernel-specific questions') and names the sibling alternative when a fuller device summary is needed. This is direct, actionable routing guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_ramARead-onlyIdempotent
Static RAM capacity: total installed memory and swap size. Use when the user asks how much RAM they have. Do NOT use for live memory usage — use monitor_ram for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral context: it is static, returns total installed memory and swap size, and cannot be used for live usage. No contradictions exist.
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 with no filler. The core meaning is front-loaded ('Static RAM capacity'), and the exclusion and alternative tool are stated compactly.
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 system information tool, this is complete. It states what data is returned (memory and swap), when to use it, and when not to use it. No output schema or additional context is needed.
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 has zero parameters, so the baseline is 4 per the rubric. The description correctly focuses on the tool's output rather than parameters, and there is no parameter information missing from 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?
The description uses a specific verb and resource ('Static RAM capacity: total installed memory and swap size') and explicitly distinguishes this from live memory usage, which differentiates it from monitor_ram. An agent can immediately understand what this tool returns and how it differs from 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?
It gives an explicit when-to-use signal ('Use when the user asks how much RAM they have') and an explicit exclusion with the alternative tool ('Do NOT use for live memory usage — use monitor_ram for that'). This fully routes the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_statsARead-onlyIdempotent
Get current system stats on demand: CPU usage, memory, vnstat network (today + month), top processes, uptime. Use when the user asks 'how's my system', 'give me stats', 'show system status'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. The description adds minor value by noting the vnstat network breakdown (today + month) and 'on demand' behavior, but it does not disclose output format or behavior if data is unavailable.
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 with zero wasted words. The verb and resource come first, the content list follows, and the usage triggers are packed into the second sentence efficiently.
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 no parameters and annotations covering the non-destructive read-only nature, the description gives enough to invoke the tool correctly. It enumerates the main return content, though it stops short of describing the exact response structure or units, which would be more critical without an output schema.
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 input schema has zero parameters, so there is nothing for the description to explain. The baseline of 4 applies because no parameter semantics are needed.
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 names a specific action ('Get current system stats on demand') and enumerates the exact contents: CPU usage, memory, vnstat network (today + month), top processes, and uptime. This clearly differentiates the aggregate snapshot from granular siblings like get_system_cpu, get_top_processes, or get_vnstat_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?
The description provides explicit usage triggers: the user asks 'how's my system', 'give me stats', or 'show system status'. It does not mention when not to use this tool versus the many granular monitoring siblings, but the stated triggers give clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_usbBRead-onlyIdempotent
Connected USB devices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully covering the safety profile. The description adds no behavioral traits beyond identifying the data returned, but it also does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded, with no wasted words. A full sentence might be preferable, but for a trivial no-parameter getter this fragment is appropriately concise.
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 definition is largely complete for a simple read-only getter with no parameters and no output schema. The description indicates the return content, and annotations cover side-effects. It could specify that a list of devices is returned, but nothing critical is 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?
With zero parameters and 100% schema coverage, there is no parameter documentation burden. The baseline of 4 applies for a tool with no parameters; the description does not need to add 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?
The description identifies the specific resource (connected USB devices) and the tool name supplies the 'get' verb, making the action implicit. It is clear within the get_system_* family, though it does not explicitly state an action or differentiate from siblings beyond the name.
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 no guidance on when to use this tool versus alternatives like get_device_info or get_system_disk. No context or exclusions are provided; the agent must infer the intended use solely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_processesARead-onlyIdempotent
Top resource-consuming processes ranked by CPU and memory usage. Use when the user asks what is slowing down or eating up their system. Do NOT use to find a specific process by name — use list_processes for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnly, idempotent, and non-destructive, so the description does not need to repeat safety. It adds the ranking behavior, but does not disclose details like whether results are a snapshot or how many processes are returned; these are minor given the strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight, front-loaded sentences: the first states the output, the second gives usage and the negative case. Every sentence earns its place with 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?
For a zero-parameter, read-only query tool, the description is sufficient: it names the returned data, the use case, and the alternative for a different need. No output schema is required because the return intent is clearly stated.
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 has zero parameters and an empty schema with 100% coverage, so there is no parameter meaning to clarify. Baseline 4 applies because no parameter information is needed to invoke it correctly.
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 capability: returning the top resource-consuming processes ranked by CPU and memory usage. This differentiates it from list_processes and other system-monitoring siblings by emphasizing the ranking and slowdown-detection purpose.
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?
It gives explicit when-to-use guidance ('Use when the user asks what is slowing down or eating up their system') and a clear exclusion with an alternative ('Do NOT use to find a specific process by name — use list_processes for that').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uptimeARead-onlyIdempotent
Get system uptime: how long the laptop has been running since last boot, returned as seconds, minutes, hours, days, and a human-readable formatted string.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds value by specifying the exact output format (seconds, minutes, hours, days, and a formatted string), which is behavioral context beyond the structured 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, well-structured sentence that front-loads the action and resource, then efficiently enumerates the return units. No filler, no redundancy, and every word adds meaning.
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 no output schema, the description fully explains what the tool returns and the context (since last boot). Nothing an agent needs to invoke it correctly is 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?
There are zero parameters, so the schema fully covers all arguments. The baseline for 0 params is 4, and the description need not add anything about parameters. It correctly omits param details since none exist.
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 ('Get') and resource ('system uptime'), defines the scope ('since last boot'), and lists the output units (seconds, minutes, hours, days, human-readable string). This clearly differentiates it from sibling tools like get_system_info or get_system_stats, which are broader system queries.
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 usage through its self-explanatory name and content, but provides no explicit guidance on when to choose this over alternatives or any exclusions. For a trivial read-only query this is acceptable, but it lacks the explicit routing that a 4 or 5 would require.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vnstat_dataARead-onlyIdempotent
Get network usage from vnstat for a specific period. period: 'day' (today — default), 'month' (this month), 'hour' (current hour). Use when the user asks about their data usage or bandwidth.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No |
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 clear. The description adds period scoping and default behavior, which is useful but does not disclose details like output format or whether data is per-interface or aggregated. The annotations carry the main behavioral burden, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core action is front-loaded, followed by the parameter list and a clear usage cue. 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?
For a simple one-parameter read-only tool with strong annotations, the description is nearly complete. It covers what the tool does, when to use it, and the parameter semantics. It does not describe the response shape, but 'network usage' is reasonably self-explanatory for this use case.
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 there are no enums, so the description must fully document the parameter. It does: 'period: day (today — default), month (this month), hour (current hour)'. This gives valid values, their meaning, and the default, fully compensating for the sparse 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?
The description states a specific verb and resource: 'Get network usage from vnstat'. It also enumerates the supported period values and their meanings, making the tool's purpose unmistakable. This clearly distinguishes it from sibling tools like check_vnstat_status or speed_test.
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 explicitly says to use it 'when the user asks about their data usage or bandwidth', giving clear contextual guidance. It does not mention when not to use it or name alternatives, but for a read-only query tool this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_volumeARead-onlyIdempotent
Current master volume level and mute state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no additional behavioral context such as system-wide scope or possible side effects, but it does not contradict the annotations either.
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 short sentence with no filler or redundancy. It directly states the tool's output scope without wasted words.
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, the description is nearly complete: it tells the agent what information will be returned (volume level and mute state). It could slightly improve by specifying the volume scale or format, but this is minor for such a simple 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 has zero parameters, so parameter semantics are trivially satisfied. The description does not need to explain any input meaning because there are no inputs.
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 names a specific verb ('get' implied) and a precise resource: current master volume level and mute state. It clearly distinguishes this read-only query from mutable siblings like set_volume, volume_up, volume_down, and mute_audio.
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 phrase 'current master volume level and mute state' implies this is a read-only query for state, and sibling names like set_volume make the contrast obvious. However, the description does not explicitly state when to use this versus alternative volume/mute tools or provide any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vpn_statusARead-onlyIdempotent
Check whether a VPN interface or NetworkManager VPN connection is active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds useful behavioral context by naming both the VPN interface and NetworkManager connection as the exact resources examined, going beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It front-loads the checking action and immediately specifies the resource, making it highly scannable.
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?
Given the zero-parameter schema and simple read-only nature, the description is mostly complete. It names the exact subject of the check, though it does not explicitly describe the returned value format; this is a minor gap for such a straightforward status query.
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 are no parameters, so the description carries no parameter-documentation burden. Schema coverage is trivially complete, and any input explanation would be redundant.
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 clearly identifies the operation: checking whether a VPN interface or NetworkManager VPN connection is active. It uses a specific verb and resource, distinguishing it from network-related siblings like get_network_ip and get_wifi_status.
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 provides no guidance on when to use this tool versus alternatives such as get_wifi_status or get_network_location. It does not mention when this tool is appropriate or when another network diagnostic should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wifi_statusARead-onlyIdempotent
Current WiFi connection state only: connected/disconnected, active SSID, signal strength. Use when the user asks if they are connected or what network they are on. Do NOT use to browse nearby networks — use list_wifi_networks for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 baseline burden is lower. The description adds value by scoping the operation to 'current WiFi connection state only' and naming the exact returned fields, which clarifies that this is a lightweight read of current status rather than a scan. No contradictions with annotations exist.
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?
The description is three purpose-driven sentences with no filler. It front-loads the tool's primary behavior, then gives explicit usage context, then closes with a clear alternative. 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?
Given zero parameters, rich annotations, and no output schema, the description fully covers what an agent needs: what the tool does, the exact fields returned, when to use it, and when to avoid it in favor of a sibling. There are no meaningful 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?
The tool has zero parameters and 100% schema coverage, so parameter semantics are effectively trivial. The description appropriately explains what the tool reports rather than parameter details, matching the baseline for a parameterless 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?
The description clearly states a specific verb ('get') and resource ('WiFi connection state'), and enumerates exactly what is returned: connected/disconnected status, active SSID, and signal strength. It explicitly distinguishes itself from list_wifi_networks, so an agent can tell sibling tools apart without opening schemas.
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 explicit when-to-use guidance ('Use when the user asks if they are connected or what network they are on') and an explicit exclusion with an alternative ('Do NOT use to browse nearby networks — use list_wifi_networks for that'). This fully resolves selection ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkCRead-onlyIdempotent
Probe an HTTP(S) URL and report whether it responds.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation is read-only, idempotent, and non-destructive, so the safety profile is known. However, the description adds no behavioral context beyond the name: it does not clarify what 'responds' means (e.g., any HTTP status vs. only 2xx), timeout behavior, redirect handling, or whether a valid HTTP response still counts as failure. These are meaningful behavioral ambiguities left to the caller.
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?
The description is a single concise sentence with no filler. The key action and resource are front-loaded, and every word contributes to the core meaning. It is appropriately sized for a simple 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?
Given there is no output schema, the description should specify what 'report whether it responds' returns (e.g., a boolean, JSON, or status code). It also lacks any guidance for distinguishing this from sibling network probes, leaving an agent without enough information to select and use the tool correctly in practice. The simple structure mitigates the gap, but the missing return format and usage context make it incomplete.
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 only parameter, 'url', has no schema description. The description does slightly compensate by specifying that the URL must be an HTTP(S) URL, but it does not explain the expected format (e.g., full URL with scheme, whether paths and queries are allowed, or whether scheme is optional). This is minimal value beyond the parameter name.
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 ('probe'), a resource ('an HTTP(S) URL'), and an outcome ('report whether it responds'). It is clear and unambiguous, but it does not explicitly differentiate itself from sibling tools like ping_host or check_port, which also probe network endpoints.
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 offers no guidance on when to use this tool versus alternatives. It does not mention that ping_host is ICMP-only, check_port tests TCP ports, or that this tool is appropriate for checking web server availability over HTTP(S). An agent must infer the use case solely from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_process_runningARead-onlyIdempotent
Check whether a process or app is currently running by name. Use FIRST when asked if an application/process is open — do NOT launch it just to check.
| Name | Required | Description | Default |
|---|---|---|---|
| name | 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. The description adds value by explicitly warning not to launch the process just to perform the check, reinforcing the no-side-effect behavior. It doesn't specify the return format, but 'Check whether' implies a boolean 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 with no waste. The core action is front-loaded, and the usage guidance is packed into a clear directive with an explicit negative instruction.
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 single-parameter read-only check with rich annotations, the description is nearly complete: it states what it checks, when to use it, and that it should not launch anything. A one-line clarification of the expected return value would make it fully complete, but the wording already strongly implies a boolean.
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 description must clarify the 'name' parameter. It only says 'by name', which essentially restates the parameter key without explaining whether it expects an executable name, app display name, exact match, or substring. This leaves meaningful ambiguity for an agent.
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 uses a specific verb ('Check whether') with a clear resource ('a process or app is currently running by name'). It also differentiates itself from siblings like open_application and list_processes by positioning itself as the first-choice existence check rather than a launcher or listing tool.
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?
It explicitly states when to use the tool: 'Use FIRST when asked if an application/process is open'. It also gives a clear exclusion: 'do NOT launch it just to check', preventing the agent from picking a side-effectful alternative like open_application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_processBDestructive
Kill a process by PID.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, so the description adds no behavioral context beyond them. It does not mention irreversibility, permissions, default signal, or behavior for invalid/nonexistent PIDs.
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 short, front-loaded sentence with no wasted words. It states the action and the required parameter clearly.
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 single-parameter destructive action, the description is adequate for basic invocation, and annotations cover the safety profile. However, it lacks guidance on obtaining the PID, distinguishing from kill_process_by_name, and handling nonexistent processes.
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 description must compensate. It does clarify that 'pid' means the process identifier, but provides no guidance on where to obtain it, valid ranges, or error behavior. This is minimal compensation for an undocumented parameter.
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 uses a specific verb ('kill') and resource ('process'), and 'by PID' clearly distinguishes this from the sibling kill_process_by_name. An agent can tell what the tool does at a glance.
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 does not state when to use this tool versus alternatives like kill_process_by_name, list_processes, or is_process_running. It only implies that a PID is required, with no explicit when-to-use or 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.
kill_process_by_nameBDestructive
Kill all processes matching a name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, covering the destructive nature. The description adds the detail that it kills 'all' matching processes, which is useful but not extensive. It does not mention irreversibility or permissions, though annotations carry the core safety signal.
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?
The description is a single, concise sentence with no wasted words. It front-loads the action and resource clearly.
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 simple one-parameter tool, the description is adequate but lacks context about edge cases (e.g., no match, multiple matches, return values). No output schema exists, so more detail on expected behavior would improve completeness, though the tool is straightforward.
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% – the 'name' parameter has no description. The description only implies the parameter is a process name but adds no details on matching semantics (exact match, wildcards, case sensitivity). It fails to compensate for the low schema coverage.
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 clear action ('Kill all processes') with a specific resource ('matching a name'). It distinguishes itself from sibling 'kill_process' (likely PID-based) by specifying name matching, though it doesn't explicitly contrast with the alternative.
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 provides no guidance on when to use this tool versus alternatives like kill_process (by PID) or list_processes first. It implies usage for name-based matching but does not state conditions, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bluetooth_devicesARead-onlyIdempotent
List connected Bluetooth devices and paired devices available to connect.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 well covered. The description adds useful scope context about which devices are returned, but it does not add behavioral details beyond that, such as whether Bluetooth must be enabled or whether the result only reflects currently known paired devices.
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?
The description is a single, front-loaded sentence that states the verb, resource, and scope without any filler. Every word contributes meaning, and the distinction between connected and paired devices adds precision without bloat.
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, idempotent tool, the description is largely complete: the scope is clear and the return shape (a list of device names/identifiers) is reasonably inferable. The absence of an output schema means the description could optionally mention return fields or prerequisites, but this simplicity keeps the gap minor.
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 has zero parameters and the schema coverage is 100%, so there are no parameter semantics to document. Following the baseline for zero-parameter tools, this is appropriately handled; the description adds no unnecessary param 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?
The description names a specific verb (List) and resource (Bluetooth devices), and further clarifies scope by distinguishing 'connected' from 'paired devices available to connect.' It clearly differentiates this read/list tool from sibling mutation tools like pair_bluetooth_device, unpair_bluetooth_device, and toggle_bluetooth.
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 when to use the tool: whenever the agent needs the set of connected or paired Bluetooth devices. There are no close alternative listing tools among the siblings, so explicit exclusions are not essential, though the description could have added a note that it does not scan for new/discoverable devices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_docker_containersARead-onlyIdempotent
List Docker containers. Use when the user asks what containers are running or to find a container by name/image.
| Name | Required | Description | Default |
|---|---|---|---|
| all | Yes | ||
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish safety (readOnlyHint=true, destructiveHint=false, idempotentHint=true), but the description adds little beyond that. It does not clarify behavior such as whether 'all' controls running vs. stopped containers or how filters behave.
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 immediately followed by usage context. No filler or redundant wording.
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 simple tool this is close to adequate, but the required 'all' parameter is undocumented, and there is no output schema to compensate. The description omits key invocation semantics that would let an agent call it correctly without guessing.
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 description carries the burden, but it only hints at filtering by name/image and says nothing about the required boolean 'all' parameter. An agent cannot reliably determine what 'all' should be set to.
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 uses a specific verb ('List') and resource ('Docker containers'), and adds concrete use cases: checking what containers are running or finding a container by name/image. This clearly distinguishes it from singular status tools like get_container_status.
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 explicitly says when to use it: when the user asks what containers are running or wants to find a container by name/image. It does not name exclusions or alternatives, but the stated context is clear enough for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_failed_servicesBRead-onlyIdempotent
List failed systemd units from the current boot.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | 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, covering the safety profile. The description adds context by specifying 'systemd units' and 'from the current boot', which is useful. However, it does not disclose the meaning or required values of the 'scope' parameter, nor any output format or potential side effects. With annotations covering the mutability, the description adds a bit of behavioral context but lacks depth, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that communicates the core purpose without any filler. Every word adds value, making it highly efficient and front-loaded.
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 tool with one required parameter that is undocumented in both the schema and description, an agent cannot correctly invoke it without external knowledge. The absence of an output schema is not a problem, but the unexplained 'scope' parameter is a major omission. The tool's complexity is low, but the missing parameter semantics make it incomplete for autonomous use.
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 input schema defines one required parameter 'scope' of type string with no description. Schema description coverage is 0%, so the description must compensate by explaining this parameter. It does not. The description makes no mention of 'scope' or what values it accepts, leaving the agent completely in the dark about how to call the tool. This is a critical 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 clearly states a specific verb ('List'), resource ('failed systemd units'), and scope ('from the current boot'). This distinguishes it from siblings like list_services (which would list all services) and get_boot_errors (likely broader boot issues). The purpose is unambiguous and leaves no doubt about what the tool does.
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 usage for listing failed units from the current boot, but does not explicitly mention when to use this tool versus alternatives such as get_service_status or get_boot_errors. There is no guidance on when not to use it or which sibling is more appropriate. The specificity of the description provides a clear context, but the absence of exclusions or alternative references limits the score to a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesCRead-onlyIdempotent
List files and directories at a path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | 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 covered. The description adds only the scope ('files and directories') but gives no behavioral detail such as recursion, hidden-file handling, sorting, or error behavior. Given the low bar set by annotations, this 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no filler. The action and target are immediately stated, earning the highest mark for conciseness.
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 simple one-parameter read-only tool, the description is minimally viable. However, with no output schema, the return format (e.g., file names vs. full paths, directories mixed with files) is not described, and edge cases like nonexistent paths are 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?
The single parameter 'path' has no schema description, and the description only repeats 'at a path' without explaining accepted formats (absolute/relative), trailing slashes, or whether a directory is required. The description provides barely more than the schema's type and title 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?
The description states a clear verb ('list') and resource ('files and directories at a path'), matching the tool name. However, it does not differentiate from close siblings like get_directory_tree or search_files, which could also list directory contents.
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 given on when to use this tool versus alternatives such as get_directory_tree or search_files. The context of 'list files and directories at a path' is implied enough for obvious cases, but no exclusions, prerequisites, or explicit routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_installed_applicationsARead-onlyIdempotent
List installed desktop applications from this machine (.desktop entries): display name, desktop id, exec binary. Use when the user asks what apps are installed, what browser/IDE they have, or before opening an ambiguous app name.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description does not need to restate safety. It adds useful context about the data source (.desktop entries) and output fields, but it does not explain how the optional filter behaves or whether results are sorted or limited. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The core action and resource are front-loaded, and the usage guidance follows immediately. 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?
For a simple read-only listing tool, the description covers the source, the returned fields, and when to call it. However, the completely undocumented filter parameter is a real gap, and there is no mention of empty-result behavior or ordering, so the description is not fully 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?
The only parameter, filter, has no schema description (0% coverage), and the description never mentions it. An agent receives no guidance on what value to pass or how filtering behaves, so the description completely fails to compensate for the 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?
The description uses a specific verb and resource combination: 'List installed desktop applications from this machine (.desktop entries)', and it enumerates exactly what is returned (display name, desktop id, exec binary). This clearly distinguishes it from the many system-info and app-control sibling tools.
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 concrete trigger cases: when the user asks what apps are installed, what browser/IDE they have, or before opening an ambiguous app name. It does not explicitly state when not to use the tool or name an alternative sibling, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsBRead-onlyIdempotent
List all scheduled tasks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds only the 'all' scope qualifier and no additional behavioral detail such as return format, ordering, or what counts as a scheduled task.
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?
The description is a single clear sentence with no filler or redundant phrasing. Every word contributes to the meaning.
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 simple parameterless read operation with strong annotations, the description is mostly adequate. However, it does not clarify what 'scheduled tasks' refers to in relation to sibling tools like list_timers, and there is no output schema or return-value note to help an agent interpret the result.
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 input schema has zero parameters and 100% schema description coverage, so there is nothing meaningful left for the description to explain. The baseline of 4 for a parameterless tool applies.
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 and resource ('List all scheduled tasks') and the word 'all' conveys the unfiltered scope. It is clear enough to distinguish from mutation siblings like schedule_job, cancel_job, and run_job_now, though it does not explicitly differentiate from the potentially overlapping list_timers.
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 given about when to use this tool versus alternatives such as list_timers, or when it would be appropriate to rely on it. An agent is left to infer that this is simply the read-only listing operation for scheduled jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notificationsA
List all desktop notification history system-wide (all apps). Use when the user asks to see recent notifications or missed alerts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'List' which implies a read-only operation, but the annotation readOnlyHint is false, indicating the tool may not be read-only. This is a direct contradiction. The description also fails to disclose any potential side effects (e.g., marking notifications as read). Given the annotation contradiction, the description is severely lacking.
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 with no filler. The scope and usage are front-loaded, making it easy for an agent to parse quickly.
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 description is simple and gives the core purpose, but it omits any mention of side effects or the contradiction with the annotation. An agent might be uncertain whether calling this tool alters notification state. For a zero-parameter tool, this is still a notable gap given the annotation mismatch.
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 has zero parameters, so the baseline is 4. The description does not need to explain parameters, and it correctly implies that no arguments are required.
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 clearly states the verb ('List'), the resource ('desktop notification history'), and the scope ('system-wide (all apps)'). It distinguishes itself from siblings like read_notifications, clear_notifications, and send_notification by specifying it lists all notifications across all apps.
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 a clear usage context: 'Use when the user asks to see recent notifications or missed alerts.' However, it does not explicitly state when not to use it or mention alternatives like read_notifications for individual notifications. It provides context but lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_processesARead-onlyIdempotent
Full list of all running processes with PIDs. Use when the user wants to find a specific process by name or get a PID to kill. Do NOT use to see what is consuming the most resources — use get_top_processes for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no meaningful behavioral context beyond what the purpose implies; it does not mention output format, sorting, or potential resource impact. It is consistent with annotations but adds minimal extra disclosure.
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 with zero filler: the first states purpose and output, the second gives clear when-to-use and when-not-to-use guidance with an explicit alternative. 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?
For a simple, zero-parameter, read-only tool, the description fully covers selection and invocation. It tells the agent what it returns (a full list with PIDs), when to use it, and which sibling to prefer in the excluded case. No output schema exists, but the return semantics are adequately implied for this simple list operation.
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?
Zero parameters, so the schema is trivially complete at 100% coverage. The baseline for 0 params is 4 because there is no parameter description burden. The description's mention of returning PIDs implicitly confirms what the tool produces without needing parameter-level explanations.
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 ('Full list') and resource ('all running processes with PIDs'), making the tool's action unmistakable. It also explicitly distinguishes itself from get_top_processes by what it does and does not do, leaving no ambiguity.
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?
Provides explicit use cases: finding a process by name or getting a PID to kill. It also gives a clear exclusion ('Do NOT use to see what is consuming the most resources') and names the proper alternative, get_top_processes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesARead-onlyIdempotent
List systemd services and their status. Use filter to narrow results and scope=system|user|all for system vs user units (Vela runs as user services). Do NOT use to answer whether one specific service is running — use get_service_status instead.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | ||
| filter | No |
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 covered. The description adds valuable contextual behavior beyond that: the scope semantics (system vs user vs all units) and the environment note that 'Vela runs as user services,' which materially affects correct invocation. 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?
Three sentences, zero waste. Purpose is front-loaded, usage guidance follows, and the exclusion with alternative comes last. The parenthetical Vela note earns its place by informing scope selection. Every sentence carries distinct value.
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 low-complexity list tool with two parameters and no nested objects, the description is nearly complete. It covers purpose, scoping, filtering, and exclusion against get_service_status. Minor gaps: the relationship to the sibling list_failed_services is not clarified (does this tool include failed services?), and the return format isn't described, though 'their status' hints at it.
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 description must compensate. It fully explains the required scope parameter with explicit valid values ('system|user|all') and their meaning, plus the Vela-specific hint for choosing 'user.' The filter parameter gets only 'narrow results,' which is adequate but leaves matching semantics (by name, status, or both) unspecified.
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 opens with a specific verb+resource+outcome: 'List systemd services and their status.' This clearly states what the tool does and what it returns. It also differentiates from the sibling get_service_status explicitly, so an agent can distinguish the two without inspecting schemas.
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 both positive and negative usage guidance: it explains when to use filter and how to choose scope='system|user|all', and it explicitly states 'Do NOT use to answer whether one specific service is running — use get_service_status instead.' An alternative tool is named with the exact condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_timersARead-onlyIdempotent
List systemd timers and when they next run.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | ||
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description does not need to restate safety. It adds the useful behavioral detail that the output includes next-run times, but says nothing about output format or scope-dependent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading the action and resource before the output detail. Every word 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?
Annotations cover the tool's safety profile well, but the required 'scope' parameter is unexplained and no output schema exists. The description is too sparse to let an agent construct a valid call or interpret results beyond 'next run.'
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 description must compensate for the undocumented parameters. It does not: the required 'scope' parameter is entirely unexplained, and 'filter' is also left ambiguous. An agent cannot tell what values to supply or what each parameter controls.
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 and resource: 'List systemd timers', and adds the key output detail 'when they next run.' This clearly distinguishes it from sibling tools like list_services or list_jobs, which target different system resources.
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 when to use the tool: whenever timer schedules or next-run times are needed. It does not explicitly name alternatives or exclusion conditions, but the resource 'systemd timers' is sufficiently specific to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_toolsARead-onlyIdempotent
List all assistant tool names available on this host, optionally filtered by a search term. Use when the user asks what tools/capabilities/commands you have, what you can do, or whether a specific capability exists.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, non-destructive behavior. The description adds the host-scoped and filterable nature of the listing, which is useful but not a major behavioral disclosure 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?
Two sentences, front-loaded with the core action and followed by direct usage guidance. Every sentence earns its place with no redundant wording.
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 simple read-only listing tool with one optional parameter, the description is fully sufficient. The output is self-evident (tool names), annotations cover safety, and the usage context is stated clearly.
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 description explains that the filter is a search term, adding some meaning beyond the schema's bare 'filter' property. However, it does not specify matching behavior (substring, case-sensitivity, exact match), and schema description coverage is 0%, so the agent must infer details.
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 action ('List all assistant tool names') and a clear resource scope ('available on this host'), with optional filtering. This clearly distinguishes it from siblings like count_tools by emphasizing names rather than counts.
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 explicitly tells the agent when to use this tool: when the user asks what tools/capabilities/commands exist or whether a specific capability exists. It does not explicitly mention alternatives or exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_wifi_networksARead-onlyIdempotent
Scan and list all nearby WiFi networks with SSID and signal strength. Use when the user wants to see what networks are available nearby, not just their current connection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds a behavioral nuance by saying 'Scan' and clarifies the result scope ('all nearby WiFi networks'), but it does not disclose details like scan duration, number of results, or whether previously known networks are included. Given the strong annotation coverage, this is adequate but not exceptional.
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 wasted words. The core action and output are front-loaded in the first sentence, and the usage condition is stated briefly in the second. It is easy for an agent to parse quickly.
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?
This is a simple, parameterless read-only listing tool with rich annotations. The description covers what the tool does, what it returns, and when to use it. No additional information is needed for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is effectively complete. The description therefore needs to convey no parameter semantics; it appropriately focuses on behavior and output. This matches the baseline for a zero-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?
The description states a specific action ('Scan and list') applied to a clear resource ('all nearby WiFi networks') and identifies the output ('SSID and signal strength'). It also distinguishes itself from a focus on the current connection, making its scope 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?
The description explicitly says when to use the tool: when the user wants to see available nearby networks, not just their current connection. It provides a clear usage context and an exclusion, though it does not explicitly name the sibling alternative like get_wifi_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_screen_displayA
Lock the screen via the display manager (fast path, no fallbacks). Prefer lock_screen_security unless you specifically need the display-manager lock.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/destructive/idempotent hints; the description adds the 'fast path, no fallbacks' caveat and clarifies this is a display-manager-specific lock, which is useful beyond the structured annotations. It does not go into failure behavior, but for this simple action the extra context is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the main action first and the routing guidance second. Every clause earns its place; no filler or repetition.
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, no-output-schema action, the description fully equips the agent: what it does, via what mechanism, its limitations (no fallbacks), and when to use the sibling instead.
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 has zero parameters, so the schema fully covers parameter semantics; the description has no parameter burden. Baseline 4 is appropriate because there are no parameters to document.
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?
Description states a specific action ('Lock the screen') and resource ('via the display manager'), and immediately differentiates itself from lock_screen_security. An agent can tell exactly what this tool does and how it differs from the sibling.
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?
Explicitly instructs to 'Prefer lock_screen_security unless you specifically need the display-manager lock,' naming the alternative and the condition that selects this tool. This is model usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_screen_securityA
Lock the screen with multiple fallbacks (most reliable). Use this when the user says 'lock', 'lock the screen', or 'lock my computer'. Prefer this over lock_screen_display.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations by disclosing that the tool uses 'multiple fallbacks' and is 'most reliable'. This is useful for an agent deciding between lock-related tools, and it does not contradict the provided 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?
The description is compact and front-loaded, with the core action stated first followed by usage triggers and the sibling preference. Every sentence earns its place, and there is 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?
For a zero-parameter, no-output-schema tool, the description is complete: it states the action, provides example user phrasings that should trigger it, and clarifies its relationship to the sibling tool. Nothing essential is 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?
There are zero parameters, so the baseline is 4. The description adds no parameter-specific information, but none is needed since the input schema is empty and there is nothing to clarify.
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 uses a specific verb and resource ('Lock the screen') and immediately distinguishes this tool from its sibling by noting it has 'multiple fallbacks (most reliable)' and should be preferred over lock_screen_display. An agent can clearly identify what this tool does and how it differs.
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 explicitly states when to use the tool: when the user says 'lock', 'lock the screen', or 'lock my computer'. It also names the alternative (lock_screen_display) and expresses preference, though it does not explicitly describe situations where lock_screen_display should be chosen instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
login_historyARead-onlyIdempotent
Get recent login events from system auth logs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. The description adds the data source and recency, but does not disclose permission requirements, log format, or what 'recent' means.
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 or repetition. It states the action, object, and source efficiently.
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 strong annotations, the description provides enough context to select and invoke it correctly. It lacks an explicit output format, but the simple semantics make that 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?
The tool has zero parameters, so there is no parameter documentation burden. The description adds no parameter semantics, but none are needed; baseline 4 applies 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?
The description names a specific action ('get'), a specific resource ('recent login events'), and a source ('system auth logs'). It clearly distinguishes login_history from generic logging siblings like get_logs.
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 intended use case is implied: call this when you need recent authentication-related login events. However, it does not explicitly mention when not to use it or how it compares to overlapping siblings such as get_logs, ssh_sessions, or get_boot_errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logout_userA
Log out the current user session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal a non-read-only, non-idempotent mutation, and the description adds the scoping detail that only the current user session is affected. It does not go further to disclose side effects like session invalidation, required re-authentication, or effects on running applications, but the annotations lower the burden enough for this to be adequate.
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?
The description is a single short sentence with no filler and no repeated information. Every word contributes to the meaning, and the action is front-loaded at the start.
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 no-parameter, no-output-schema action, the description captures the core operation completely enough to invoke the tool correctly. It could be more complete by stating post-conditions such as session termination and re-authentication, but the low complexity keeps the gap small.
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 are zero parameters and 100% schema coverage, so there is no parameter meaning left for the description to clarify. The phrase current user session correctly indicates that targeting is implicit rather than parameterized, matching the baseline of 4.
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 names a specific verb, log out, and a specific resource, the current user session, so an agent can tell exactly what action is exposed. It is not a tautology and is distinct from all sibling tools, none of which provide a logout action.
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 intended use is implied clearly by the action itself: call this tool when the current user session should be ended. However, it provides no explicit when-to-use or when-not-to-use guidance and does not mention prerequisites such as an active session or what to do if already logged out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_directoryA
Create a new directory.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is a mutating, non-idempotent operation, so the description does not need to restate that. However, the description adds no additional behavioral context, such as what happens if the directory already exists or whether parent directories are created automatically.
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?
The description is a single, direct sentence with no filler or redundant detail. The core action and target are front-loaded, making it easy to scan.
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 no output schema, this is close to adequate, but it omits edge-case behavior that an agent might need to call it correctly, such as failure when the path already exists and whether nested paths are created recursively. The annotations cover the mutation nature, but not these practical details.
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 input schema has no description for the `path` parameter (0% coverage), so the phrase 'new directory' provides minimal but useful context that `path` is the target directory to create. It does not explain path format, existing-path behavior, or whether parent directories must already exist.
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 clearly states a specific action ('create') and resource ('a new directory'), so an agent can understand the tool's purpose at a glance. It does not explicitly distinguish from siblings, and it largely restates the tool name, but it is unambiguous and not misleading.
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 explicit when-to-use guidance or mention of alternatives, but the intended use case is implied: use this tool when a new directory needs to be created. Because no sibling tool performs the same operation, the lack of explicit exclusions is not critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
minimize_windowC
Minimize a window by window ID.
| Name | Required | Description | Default |
|---|---|---|---|
| window_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=false and destructiveHint=false, and the description adds no behavioral detail beyond the action itself. It does not disclose what happens when the window ID is invalid, whether the operation is synchronous, or what state changes occur beyond minimization.
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?
The description is one short sentence with no filler: the verb, resource, and relevant parameter are all stated immediately. Nothing could be trimmed without losing meaning.
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 simple one-parameter tool, this is minimally viable: the function, the target, and the required input are all clear. However, it lacks guidance on where to obtain a valid window ID, any return or error behavior, and the relationship to sibling window-management tools, so it is not fully 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?
With 0% schema description coverage, the description must compensate, but it only restates the parameter as 'window ID.' It does not explain the expected string format, how to discover a valid ID, or platform-specific behavior, so it adds little meaning beyond the schema's window_id property name.
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 action ('Minimize') and a clear resource ('a window'), and identifies the required input ('by window ID'). It is more informative than a tautology and can be distinguished from siblings like close_window by its verb, though it does not explicitly name alternatives.
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 guidance about when to use minimize_window versus related tools such as active_window, close_window, or close_application. It does not mention prerequisites, such as first obtaining a valid window ID from active_window, or when minimizing is preferable to closing or switching windows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_battery_healthARead-onlyIdempotent
Get detailed battery health information (cycle count, capacity, health percent).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds context by naming the specific health metrics returned, but it does not disclose additional behavioral traits such as data freshness, refresh behavior, or what 'health percent' precisely represents. The description does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler, and the key subject ('detailed battery health information') is front-loaded with useful examples in parentheses. Every part of the 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?
For a zero-parameter read-only tool, the description covers the essential purpose and gives sample return fields even though no output schema exists. It is slightly incomplete because it does not distinguish itself from 'get_battery', but all necessary invocation details are present.
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 has zero parameters and schema description coverage is 100%, so there is no parameter documentation burden. The description adds value by indicating what information the tool provides, which is sufficient for a parameterless 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 states a specific action ('Get') on a specific resource ('detailed battery health information') and names concrete fields: cycle count, capacity, and health percent. It is clear what the tool does, though it does not explicitly differentiate itself from the sibling 'get_battery', relying on the word 'detailed' to imply the distinction.
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 this tool is for obtaining battery health details, but it provides no explicit guidance on when to use it versus the sibling 'get_battery' or other monitoring tools. There are no stated exclusions or alternative routing, so usage context is only implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_cpuARead-onlyIdempotent
Live CPU usage: current load percentage overall and per core. Use when the user asks how loaded their CPU is right now. Do NOT use for CPU specs or model — use get_system_cpu for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 context about the live, momentary nature of the reading and the per-core breakdown, which is useful 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?
Two sentences with no filler: the first states the output, the second gives usage guidance and disambiguation. Essential information is front-loaded and 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?
For a simple, parameterless, read-only monitor tool, the description fully covers what data is returned, when to use it, and how it differs from the relevant sibling. No output schema exists, but the described return content is sufficient for an agent to invoke and interpret it correctly.
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 has zero parameters, so there is no parameter documentation burden. The description correctly focuses on what the tool returns rather than inputs, matching the baseline for a parameterless 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?
The description states a specific action and resource: 'Live CPU usage' with exact outputs ('current load percentage overall and per core'). It also distinguishes itself from get_system_cpu by explicitly ruling out CPU specs/model, making the tool's identity 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?
It provides a direct trigger condition ('when the user asks how loaded their CPU is right now') and an explicit alternative with a 'Do NOT use' rule ('use get_system_cpu for that'). This gives the agent clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_disk_ioBRead-onlyIdempotent
Per-disk I/O rates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 established. The description adds no behavioral details beyond that, such as whether rates are instantaneous or averaged, what units are returned, or whether historical data is included. It neither contradicts annotations nor enriches them.
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?
The description is a single, short phrase with no wasted words, so it is very concise. However, it is a sentence fragment without a verb, and it front-loads the key scoping ('per-disk') effectively yet could be considered too sparse.
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?
Even with low complexity, the absence of an output schema and the terse description leave key questions unanswered: what exact metrics are returned (IOPS, throughput), what time window is covered, and whether it is a one-shot snapshot or a streaming monitor. The description is insufficient for an agent to predict the tool's response.
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 has zero parameters Apa, and schema coverage is trivially 100%. With no parameters, the description has no responsibility to clarify argument semantics. Baseline of 4 applies.
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 'Per-disk I/O rates' clearly identifies the resource and metric, and the 'per-disk' scope distinguishes it from sibling tools like monitor_network_io and get_disk_usage. However, it lacks an explicit verb, so it reads as a label rather than a full statement of action.
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 guidance on when to use this tool versus alternatives. It does not mention more appropriate tools for disk usage (get_disk_usage) or other monitors, nor any context like performance troubleshooting or real-time monitoring. The agent is left to infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_fansCRead-onlyIdempotent
Fan speed sensor readings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context, such as return format, polling frequency, or whether readings are instantaneous or averaged. It merely states what it reads without any extra transparency.
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?
The description is extremely concise, which is good, but it is under-specified. It is a single noun phrase rather than a clear sentence. It is not front-loaded because there is nothing to front-load. While concise, it lacks sufficient information to be fully effective.
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 read-only tool with no parameters and no output schema, the description should at least indicate what the return value represents (e.g., RPM values, sensor list, current readings). It only says 'readings' without detailing the output or any side effects. Given the simplicity, this is a notable 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 are no parameters, and schema coverage is 100% (empty properties). Baseline for zero parameters is 4, and the description adds nothing about parameters, which is appropriate since there are none.
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 the resource (fan speed sensors) and implies the action (readings). It is specific enough to distinguish from other monitors like monitor_cpu, though it lacks an explicit verb. It is not a tautology but could be clearer.
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 on when to use this tool versus alternatives. It doesn't mention any exclusions or conditions. The context implies it's for reading fan speed, but no explicit routing or comparison with sibling monitoring tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_gpuARead-onlyIdempotent
Live GPU usage: current GPU utilization percentage and VRAM used. Use when the user asks how hard their GPU is working right now. Do NOT use for GPU model info — use get_system_gpu for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the specific metrics returned ('utilization percentage and VRAM used'), which is useful behavioral context beyond the annotations. It could mention sampling interval but that's a minor gap for a zero-param monitor tool.
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 with zero waste. The core purpose and metrics are front-loaded, and the routing guidance is compactly appended. 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?
For a zero-parameter, read-only monitor tool, the description is complete. It states the returned metrics and the usage context. No output schema exists, but the description adequately conveys what the agent will receive.
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 has zero parameters, and schema coverage is 100%. The baseline for 0-parameter tools is 4, and the description correctly focuses on output semantics rather than parameters. No parameter documentation is needed.
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 specifies a clear verb and resource: 'Live GPU usage' with concrete metrics ('GPU utilization percentage and VRAM used'). It explicitly contrasts with the sibling get_system_gpu, making the tool's distinct purpose 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?
Provides explicit when-to-use ('when the user asks how hard their GPU is working right now') and a clear exclusion ('Do NOT use for GPU model info — use get_system_gpu for that'). This leaves no doubt about when to select this tool over its sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_network_ioARead-onlyIdempotent
Network I/O rates per interface.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 fully covered. The description adds 'per interface' scoping, which is useful but does not disclose details like sampling period, units, or whether rates are instantaneous or averaged.
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?
The description is a single, focused phrase with no filler. Every word contributes to the core meaning, and it is immediately readable.
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 no-argument read-only monitoring tool, the description sufficiently tells an agent what to expect: network I/O rates broken down by interface. It does not specify the output format or units, but the simplicity of the tool reduces the need for extensive detail.
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 has zero parameters, so there is no semantic burden on the description. The empty input schema fully specifies the invocation, and the baseline of 4 applies.
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 clearly identifies the resource (network I/O) and the specific scope (per interface), which differentiates it from sibling monitors like monitor_cpu and monitor_disk_io. It lacks an explicit verb, but the tool name 'monitor_network_io' combined with the description makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever per-interface network I/O rates are needed. However, it does not explicitly state exclusions or mention alternatives, such as speed_test or get_vnstat_data, so the guidance is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_offA
Turn the monitor/screen off (blank the display). Use when the user says 'turn off the screen', 'blank the display', or similar.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-destructive, open-world action. The description adds the exact effect (blanking the display) but does not clarify edge cases such as what happens if the display is already off, or whether it affects system sleep state. This is acceptable given the simplicity, but not rich in behavioral disclosure.
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 with the core action first and usage trigger phrases second. Every word earns its place; there is no redundancy or fluff.
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 parameterless, no-output tool, the description fully explains what it does and when to invoke it. An agent can correctly call this tool without additional context, especially given the straightforward nature of the action.
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 has zero parameters, so the schema already fully covers the input space. The description does not need to add parameter details; the baseline of 4 for 0-parameter tools applies here.
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 and resource: 'Turn the monitor/screen off (blank the display)'. It clearly distinguishes from siblings like monitor_on, lock_screen_display, and set_display_brightness by focusing on the exact action of blanking the display.
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?
It explicitly says to use when the user says 'turn off the screen', 'blank the display', or similar, giving clear triggering language. It does not name alternatives like monitor_on or lock_screen_display, but the guidance is still unambiguous and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_onA
Turn the monitor/screen back on. Use when the user says 'turn on the screen', 'wake the display', or similar.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, not destructive, and can have external effects. The description adds the 'back on' state change but does not disclose additional behavioral nuance (e.g., what happens if the monitor is already on or if user permission is needed). It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the core action and clear trigger phrases with no filler. Every word earns its place, and the key verb phrase is front-loaded.
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, no-output-schema tool, the description is complete: it defines the action, gives user paraphrase examples, and implies the opposite of monitor_off. No additional context is necessary 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?
With zero parameters, there is no parameter semantics to document. Baseline 4 applies because the description need not compensate for missing schema details; no arguments are needed.
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 and resource: 'Turn the monitor/screen back on.' It clearly differentiates this from the sibling monitor_off and get_monitor_state functions by identifying the action direction (turning on).
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?
Explicitly provides trigger phrasing ('turn on the screen', 'wake the display', 'or similar'), giving clear context for when to invoke. It does not explicitly state when not to use it or name alternatives, but for a simple command the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_ramARead-onlyIdempotent
Live memory usage: how much RAM and swap is currently used vs free. Use when the user asks how much memory is being used right now. Do NOT use for total RAM capacity — use get_system_ram for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 safe/non-mutating profile is covered. The description adds useful behavioral context: it samples/live-reports current usage and covers both RAM and swap. It does not describe exact return formatting, but that is a minor gap given the strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: first defines behavior, second gives the use case, third names the sibling not to use. The main behavior is front-loaded.
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 rich annotations, the description is fully complete: it states what is measured, when to use it, and which sibling handles the related but different capacity query. No output schema or nested params create additional burden.
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 has zero parameters, so the baseline is 4. The description correctly avoids inventing parameter details and instead clarifies that the tool takes no arguments and simply reports current usage.
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 ('monitor') and precise resource scope: current RAM and swap usage vs free. Explicitly distinguishes itself from get_system_ram by excluding total capacity, making it easy to separate from sibling tools.
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?
Provides an explicit trigger condition ('when the user asks how much memory is being used right now') and an explicit exclusion with the alternative tool named. No inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monitor_temperaturesCRead-onlyIdempotent
Sensor temperature readings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only 'Sensor temperature readings' and provides no details about what sensors are included, whether readings are current or continuous, or what units are returned. It adds minimal behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief—a noun phrase rather than a complete sentence. While there is no fluff, the brevity reflects under-specification rather than effective conciseness, and key behavioral information is missing.
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?
Given the many sibling monitoring tools and the absence of an output schema, the description is too incomplete to fully inform an agent about what will happen when invoked. It does not clarify which temperatures are covered, what the output looks like, or when this tool is appropriate.
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 has zero parameters, so the schema already covers everything. Description adds no parameter semantics, but none are needed; the baseline of 4 for a zero-parameter tool applies.
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 'Sensor temperature readings.' identifies the resource (sensor temperatures) and implies a read operation, but uses no explicit verb. It is not tautological, but it is too skeletal to fully distinguish behavior from other monitor_* tools without relying on the name.
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 guidance about when to use this tool versus alternatives such as monitor_cpu, monitor_gpu, or monitor_battery_health. The sibling list contains many similar monitor_* tools, and the description does not explain what distinguishes temperature monitoring from them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mute_audioA
Mute or unmute the master audio channel.
| Name | Required | Description | Default |
|---|---|---|---|
| muted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate this is a mutating operation (readOnlyHint=false) and non-destructive. The description adds the target scope ('master audio channel') and the dual mute/unmute behavior, but does not clarify edge cases such as whether it sets an absolute state or toggles, or what happens when called repeatedly.
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?
The description is a single, front-loaded sentence with no filler. Every word contributes to the tool's purpose and parameter meaning.
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-boolean-parameter audio tool, the description is largely complete: it names the action, the target channel, and implies the parameter semantics. The main omission is explicit true/false mapping, but that is easily inferred from the schema and description.
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 0% schema description coverage, the description carries the burden of explaining the 'muted' boolean. 'Mute or unmute the master audio channel' strongly implies the boolean selects between muted and unmuted states, adding meaning beyond the bare schema title.
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 names a specific verb pair ('Mute or unmute') and a clear resource ('the master audio channel'), which unambiguously identifies the operation. It is also easily distinguished from sibling tools like set_volume, volume_up, and audio_devices.
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 the tool is for muting or unmuting the master audio output, but it provides no explicit when-to-use guidance or comparison with alternatives such as set_volume or volume_down. The intended use is reasonably inferable, but there is no exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_trackA
Skip to the next media track.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the concrete effect (skipping to the next track), and annotations already indicate this is a non-read-only, non-destructive, non-idempotent action. It adds no additional behavioral caveats, such as behavior at the end of a queue or whether playback must be active.
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?
The description is a single, focused sentence with no filler. It front-loads the key verb and object, and every word contributes to understanding the tool's 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?
For a simple zero-parameter tool, the description conveys the core operation, but it omits contextual details such as whether an active media session is required, what happens at the end of the playlist, or whether this controls system media or a specific app. These gaps could matter for an agent deciding whether this tool is appropriate.
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 has zero parameters and the schema is trivially complete, so there is no parameter burden for the description to carry. The baseline of 4 applies because there is nothing meaningful to add beyond the empty 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?
The description uses a specific verb ('Skip') and resource ('next media track'), making the tool's operation immediately clear. It also distinguishes itself from siblings like previous_track and seek_media by naming the exact action.
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 intended use is implied: use when advancing to the next media track. However, it does not explicitly state when not to use it, mention prerequisites like active playback, or compare with alternatives such as previous_track or seek_media.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_applicationA
Open a desktop/GUI application. Accepts friendly names ('Chrome', 'firefox'), .desktop ids ('google-chrome.desktop'), or exec binaries — resolved against installed .desktop entries on this PC. Use list_installed_applications when unsure of the exact name.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes | ||
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only and non-idempotent, and the description adds useful behavioral context by explaining that friendly names, .desktop ids, and exec binaries are resolved against installed .desktop entries. However, it does not disclose what happens on success or failure, whether the app launches in the foreground, or how the required args argument affects execution.
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?
The description is only two sentences and every sentence earns its place: the first defines the action and scope, the second gives accepted input formats and the alternative tool. The most important disambiguation is front-loaded and there is 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?
The tool is simple but has a required 'args' parameter with no documentation, no output schema to describe the return/result, and no mention of error behavior. An agent cannot fully predict what to pass for args or how to confirm that the application actually opened, so the description is not complete enough for reliable 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?
With schema description coverage at 0%, the description must compensate for all parameter meaning. It richly explains the 'name' parameter's accepted formats, but it completely ignores the required 'args' parameter, leaving its purpose and expected format unexplained. This is a significant gap because both parameters are required.
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 clearly states the verb 'Open' and the resource 'desktop/GUI application', and immediately distinguishes this tool from the closely related sibling list_installed_applications by explaining the accepted name formats. It is specific enough for an agent to know exactly what this tool does and how it differs from other open- or app-related tools.
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 explicitly says to use list_installed_applications when unsure of the exact name, providing a direct alternative for an ambiguous situation. It does not fully cover when not to use this tool relative to other siblings like open_path, but the 'desktop/GUI application' scoping gives sufficient practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_pathA
Open a file or directory with the default system application.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the operation is not read-only, not idempotent, and not destructive. The description adds the useful detail that the default system application is used, but it does not disclose potential side effects, error conditions, or whether the tool waits for the opened application to close.
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 communicates the essential action and the mechanism immediately, and every word carries meaning.
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 simple one-parameter tool with no output schema, the description covers the core purpose and invocation context. It could mention error behavior or return value, but this is a minor gap given the simplicity of the operation.
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%, so the description must compensate. It clarifies the path must point to a file or directory, but gives no information about absolute vs relative paths, existence requirements, or how invalid paths are handled. This is minimal compensation for an otherwise undocumented parameter.
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 clearly states the verb 'open', the resource 'file or directory', and the mechanism 'default system application'. This distinguishes it from path-manipulation siblings like delete_path and rename_path, and from open_application which opens applications rather than paths.
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 when to use the tool: whenever a file or directory should be opened with its default system application. However, it does not explicitly mention alternatives, prerequisites, or situations where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pair_bluetooth_deviceC
Pair with a Bluetooth device.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and idempotentHint=false, establishing this is a state-changing operation. The description adds no behavioral context beyond 'Pair', such as side effects like initiating device discovery, requiring user confirmation, or persisting bonding. No contradiction exists, but the description does not enrich the annotation-provided 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words, which earns credit for conciseness. However, it is under-specified — it lacks essential usage and parameter details, making it more minimal than substantive.
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 one required parameter that is entirely undocumented, no output schema, and no usage guidance, the description is not complete enough for an agent to call the tool correctly. The low complexity of the tool (one parameter) is offset by the complete absence of parameter semantics and behavioral context.
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 description must compensate for the undocumented 'address' parameter. It does not: the description never mentions the address field, its format (MAC address?), or how to obtain it. This is a critical gap for correct invocation.
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 uses a specific verb ('Pair') and a clear resource ('a Bluetooth device'), distinguishing it from sibling tools like list_bluetooth_devices and unpair_bluetooth_device. However, it doesn't clarify whether 'pair' means simple connection or permanent bonding, which is a minor ambiguity.
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 on when to use this tool versus alternatives. The description does not mention prerequisites (e.g., Bluetooth enabled, device discoverable) or contrast with list_bluetooth_devices or unpair_bluetooth_device. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ping_hostBRead-onlyIdempotent
Ping a host and return packet loss and average RTT.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | ||
| count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already fully declare the safety profile (readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false), so the description only needs to add context beyond those. It discloses the return outputs (packet loss, average RTT) but says nothing about behavior on unreachable hosts, timeouts, or side effects. No contradiction with annotations; adds modest value.
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 zero filler. It states the operation and the return values efficiently with no wasted words.
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 simple two-parameter read-only tool with complete annotations, the description covers the operation and return values. However, the count parameter is semantically opaque, and with no output schema, an agent cannot anticipate failure behavior or output formatting. Adequate but with 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 description coverage is 0%, so the description carries the full burden of explaining both parameters, but it only implies host means 'the host to ping'. The count parameter's meaning (number of packets, defaults, bounds) is entirely unexplained, leaving the agent guessing.
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 uses a specific verb and resource ('ping a host') and names concrete return values (packet loss, average RTT), which clearly separates it from network siblings like check_port, speed_test, and get_network_ip. An agent can tell what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. Siblings such as check_port (port reachability), health_check, and speed_test overlap in network diagnostics, and the description offers no selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
press_keyboard_keysB
Press one or more keyboard keys or shortcuts.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false), covering the side-effect profile. The description adds no further behavioral context beyond the obvious action of pressing keys, but it also does not contradict annotations, so a baseline score of 3 is reasonable.
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?
The description is a single concise sentence that front-loads the core action. It contains no redundant or unnecessary words, making it easy to parse quickly.
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 simple tool, the description is minimal but incomplete: it lacks key format syntax, example inputs, and any note about the difference from type_keyboard. With no output schema and only one parameter, the tool should still explain how to represent multiple keys or shortcuts, which it does not.
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 schema has one string parameter 'keys' with 0% description coverage. The description says 'one or more keyboard keys or shortcuts' but does not specify the expected format (e.g., 'ctrl+c' vs. 'ctrl,c' or space-separated). This is a significant gap that the description does not compensate for.
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 clear action ('Press') on a specific resource ('keyboard keys or shortcuts'), which is understandable. It does not explicitly differentiate from the sibling tool type_keyboard, but the phrase 'keys or shortcuts' indicates key combinations rather than text entry, so a 4 is appropriate.
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 guidance on when to use this tool versus alternatives, particularly the sibling type_keyboard or other input-related tools. It does not provide any context for when key pressing is appropriate or when a different tool should be chosen, so this dimension lacks necessary direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
previous_trackA
Skip to the previous media track.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys that this action changes the current media position, consistent with `readOnlyHint: false` and `idempotentHint: false`. However, it does not disclose edge-case behavior such as what happens if there is no previous track or whether playback state pauses/resumes.
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?
The description is one concise sentence that states the action and target resource without filler. It is appropriately sized for a no-arg media control command.
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 simple, parameterless tool, the description plus annotations provide enough context to invoke it. Additional details about return values or no-op behavior would be helpful but are not essential given the tool's simplicity.
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 has zero parameters and an empty schema, so there is no parameter semantics to document. The baseline score of 4 applies because no parameter information is needed.
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 'Skip to the previous media track.' clearly names a specific verb ('skip') and resource ('media track'), and the word 'previous' differentiates it from the sibling tool `next_track`. There is no ambiguity about what the tool does.
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 clearly implies the use case: go backwards in media playback. It does not explicitly name `next_track` as the alternative or mention edge cases like being at the first track, but the context is strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_clipboardARead-onlyIdempotent
Read the current clipboard text.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the tool's safety profile. The description adds only the word 'current' to indicate it reads the present clipboard state, but it does not disclose potential failure modes, permissions, or return format. It is consistent with annotations, so no contradiction, but it adds 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the key information. Every word earns its place; there is no redundancy or 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?
For a zero-argument read operation with strong annotations and no output schema, the description is fully sufficient. The expected return (clipboard text) is implied by the verb and resource, and no additional context is needed for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is nothing for the description to explain. Per the rubric, a 0-parameter tool gets a baseline of 4, and the description correctly makes no parameter claims.
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 'Read the current clipboard text' uses a specific verb ('Read') and a specific resource ('current clipboard text'), clearly distinguishing it from siblings like write_clipboard and clear_clipboard even without naming them. The intent is unambiguous and cannot be confused with any other tool in the list.
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 the tool should be used when the clipboard's text content is needed, but it provides no explicit guidance about when to use it versus write_clipboard or clear_clipboard. There are no exclusions or alternative recommendations, so the usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_notificationsA
Read only the notifications that were sent by this agent in the current session. Do NOT use for system-wide notification history — use list_notifications for that.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds valuable behavioral context beyond the annotations: the operation is limited to agent-sent, current-session notifications and is not a general history query. It does not state return format or side effects, but it avoids contradicting the annotations and provides the key scoping an agent needs.
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?
The description is two tight sentences with no filler. The core scope is front-loaded, and the exclusion/alternative is stated immediately, making it easy for an agent to parse quickly.
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, no-output-schema read operation with a nearby sibling, the description is complete: it names the resource, scopes it precisely, and directs the agent away from the wrong tool. No additional information is necessary for correct selection or 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?
The tool has zero parameters, so there is no parameter semantics to document. The baseline of 4 applies because there is nothing for the description to add beyond the schema, and the description's scoping effectively substitutes for any parameter-level guidance.
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 ('read'), resource ('notifications'), and scope ('sent by this agent in the current session'). It also explicitly separates itself from list_notifications, so an agent can distinguish the two without ambiguity.
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 an explicit when-not-to-use condition ('Do NOT use for system-wide notification history') and names the correct alternative ('use list_notifications for that'). This is clear routing guidance with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_pathC
Rename or move a file or directory.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| from_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the operation is not read-only and is not idempotent, but the description adds no behavioral detail beyond the rename/move action. It does not disclose what happens if the destination exists, whether move across filesystems is supported, or whether permissions are affected.
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?
The description is a single, front-loaded sentence with no filler. While it is concise and easy to parse, it sacrifices meaningful detail that could have been added without much bloat.
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 state-changing filesystem operation with two undocumented parameters and no output schema, this description is too thin. It omits edge-case behavior, destination collision semantics, path interpretation, and effects of the operation, leaving an agent uncertain about 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 the description does not explain what from_path and to mean beyond the obvious rename/move context. An agent cannot tell whether 'to' must be a full path, a filename, or whether directories are accepted; the parameter names and titles do most of the work.
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 and resource: 'Rename or move a file or directory.' This makes the tool's core operation clear and distinguishes it from siblings like delete_path or open_path, though it does not explicitly name or differentiate against those alternatives.
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 guidance on when to use this tool versus alternatives such as copy, delete, or open operations. No contextual conditions, prerequisites, or exclusions are mentioned, so an agent must infer usage 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.
restart_containerC
Restart a Docker container.
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only restates the operation implied by the name and adds no behavioral detail beyond the annotations, such as what happens to the container's processes, network, or state during restart. It doesn't contradict the annotations, but it also doesn't expand on them.
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?
The description is a single, front-loaded sentence with no filler. It is concise, though it is so brief that it doesn't carry any additional useful structure.
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 tool with no output schema and no parameter descriptions, the description is too thin to be complete: it doesn't state what the restart will do to a stopped container, what errors may occur, or what the result will be. An agent could invoke it, but it would have to guess at edge-case behavior.
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 input schema has a single required parameter with no description (0% coverage), and the description doesn't mention name_or_id or clarify how Docker identifies the container. The property name 'name_or_id' is mildly suggestive, but the description adds no parameter-level meaning.
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 uses a specific verb ('Restart') and a clear resource ('a Docker container'), so an agent can tell this performs a container restart operation. It doesn't explicitly contrast with sibling tools like start_container or stop_container, so it stops short of full differentiation.
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 given about when to restart rather than start or stop a container, or about prerequisites such as the container needing to exist. The description leaves all usage decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_serviceB
Restart a systemd service. Use only when the user asks to restart/fix it — not to check status.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| scope | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds little beyond the annotations. It does not disclose potential side effects (e.g., service downtime, required privileges, failure behavior) or what happens if the service is already stopped. The annotations indicate a non-read-only, non-idempotent action, but the description fails to elaborate on the operational impact.
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?
The description is two sentences with zero waste, front-loading the core action and then adding a critical usage constraint. Every word 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?
For a simple tool, the description is incomplete: it does not explain parameter semantics, return behavior, or any prerequisites. Given the lack of output schema and low schema coverage, the agent is left guessing about essential details.
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 description must compensate, but it provides no explanation of the 'name' and 'scope' parameters. An agent cannot infer what values are expected or how scope affects the operation. This is a critical 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 clearly states the verb (restart) and the resource (systemd service), and explicitly excludes the status-check use case, distinguishing it from get_service_status. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance ('only when the user asks to restart/fix it') and a clear exclusion ('not to check status'). However, it does not mention alternatives like start_service or stop_service, only the status-check case, so some sibling differentiation is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_job_nowB
Trigger a scheduled task immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only and not idempotent, and the description's 'Trigger' is consistent with those. The added word 'immediately' clarifies that execution happens now rather than at the scheduled time, but the description does not disclose possible side effects, failure modes, or whether the call blocks.
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?
The description is a single front-loaded sentence with no filler or redundant restatement. It earns its place by stating the action, resource, and immediacy in five words.
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 annotations, the description is close to adequate, but it omits important context such as prerequisite that the task must already be scheduled and what happens after triggering. The lack of an output schema and absence of any return-value note leave minor ambiguity for the agent.
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 task_id is contextualized by the description as identifying the scheduled task to trigger, matching the schema's 'Task Id' title. With 0% schema description coverage, this is minimal but sufficient for a single well-named string parameter, though it does not mention where to obtain the task_id.
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 uses the specific verb 'Trigger' and identifies the resource as 'a scheduled task,' making it clear the tool executes an existing job immediately rather than creating or canceling one. It is clear and unambiguous, though it does not explicitly name sibling tools such as schedule_job or cancel_job to draw the distinction.
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 no when-to-use guidance or alternatives. It does not state that the task must already exist, how to obtain a valid task_id, or that schedule_job/list_jobs are the relevant siblings for creating or finding tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_updateA
Run a full system update (requires confirmation).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-idempotent operation, and the description adds the behavioral requirement of confirmation. However, it does not disclose potential side effects such as system reboot, service interruptions, or whether the update is reversible.
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?
The description is a single, focused sentence with no filler. It conveys the action and the one critical behavioral constraint in a compact form.
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 simple tool with one boolean parameter and no output schema, the description covers the core action and confirmation requirement. It could be more complete by referencing 'check_updates' as a precondition or noting post-update implications, but it is sufficient for basic 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?
The schema provides no description for the single 'confirm' parameter, leaving its purpose unclear. The description's phrase 'requires confirmation' explains that the boolean parameter is the confirmation gate, adding essential meaning that the schema lacks.
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 uses a specific verb ('Run') and a clear resource ('a full system update'), making the tool's action unambiguous. It also naturally differentiates from the sibling 'check_updates', which only checks for updates rather than executing them.
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 no explicit guidance on when to use this tool versus alternatives such as 'check_updates'. It only mentions that confirmation is required, but does not state whether one should check updates first or under what conditions updating is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_jobC
Schedule a command at a specific time or on a cron schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes | ||
| run_at | Yes | ||
| command | Yes | ||
| recurring | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description only restates the basic action without disclosing behavioral traits such as job persistence, duplicate creation on repeated calls, or that scheduled jobs can later be managed with list_jobs/cancel_job. Minimal value is added 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?
The description is a single, tightly worded sentence that front-loads the action and main distinction (time vs cron). It is appropriately short and well-structured, though the brevity contributes to the lack of behavioral and parameter detail.
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?
Given a 4-parameter schema with no descriptions, a mutating non-idempotent operation, and no output schema, the description is not complete enough for an agent to call the tool correctly. It omits required parameter semantics, job-management context, and the meaning of a successful response, making it inadequate for reliable 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?
With 0% schema description coverage, the description carries the full burden for parameter semantics, but it only hints at run_at and recurring ('specific time' vs 'cron schedule'). It never explains the required `command` or `args` fields, the expected format of `run_at`, or how cron expressions should be supplied.
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 uses a specific verb ('Schedule') and resource ('a command') and clearly identifies two modes: specific time and cron schedule. It is accurate and distinguishable from the sibling run_job_now, but does not explicitly name that sibling as the alternative for immediate execution, so it stops short of full differentiation.
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 usage (scheduling at a time or via cron) but provides no explicit guidance on when to use this tool versus alternatives like run_job_now, list_jobs, or cancel_job. There are no exclusions, prerequisites, or conditions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_and_playA
Search Spotify for a song and immediately play it. If no active device is available, Vela opens the local Spotify app and registers this PC as a playback device before retrying. Use when the user wants to hear a specific song.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| device_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only mutation (readOnlyHint=false), so the description's 'play' action is consistent. The description adds meaningful behavior beyond annotations: if no active device is available, Vela opens the local Spotify app and registers this PC as a playback device before retrying. This discloses a side effect that an agent could not infer from the schema or 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?
Three sentences, each with a distinct job: core action, fallback behavior, and usage trigger. No filler or redundancy. The core function is front-loaded.
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 tool with no output schema and only two parameters, the description covers the main action and an important fallback. However, it omits likely prerequisites such as Spotify authentication (siblings spotify_auth and spotify_callback suggest an auth flow exists) and does not describe behavior when the search finds no matching song. These are meaningful gaps for an agent invoking the 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?
Schema description coverage is 0%, so the description must compensate. It implies the query parameter is the search string ('Search Spotify for a song'), but it never explicitly maps device_id to a parameter or explains how a caller would target a specific device. The fallback discussion of 'no active device' is related but does not clarify the purpose of the device_id argument.
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 and resource: 'Search Spotify for a song and immediately play it.' It also specifies the intended user need ('when the user wants to hear a specific song'), which clearly distinguishes this tool from playback control siblings like toggle_play_pause, next_track, or get_currently_playing_song.
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 explicitly tells when to use the tool: 'Use when the user wants to hear a specific song.' This is clear context, but it does not name alternatives or explain when not to use it, such as when a song is already playing and the user only wants to resume it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesARead-onlyIdempotent
Search files and directories by name under allowed directories. Prefer path under the user home (e.g. /home/). If path is / or omitted, search is automatically limited to configured allowed_base_dirs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, idempotent behavior. The description adds a concrete behavioral constraint: search is automatically limited to allowed_base_dirs when path is '/' or omitted. This is meaningful context not in the structured data.
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 first states purpose, the second gives essential path behavior. Every word 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?
For a two-parameter, read-only search tool with no output schema, the description covers the search scope, the path default, and the safety profile via annotations. It doesn't mention return format or recursion, but these are easily inferable and not critical 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%, so the description must compensate. It explains query as the name to search for and clarifies the path default behavior. However, it omits query matching semantics (partial, case sensitivity, regex) and only partially explains path 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 and resource: 'Search files and directories by name under allowed directories.' This is clearly distinguishable from siblings like list_files, though it doesn't explicitly name alternatives.
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 on when to use this tool versus siblings such as list_files or get_directory_tree. The path preference advice ('Prefer path under the user home') and automatic limiting behavior are parameter usage hints, not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seek_mediaA
Seek media playback to a position in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that the operation is not read-only and not destructive. The description adds that it changes the playback position, but it does not disclose potential side effects or prerequisites, such as requiring active media playback or behavior when no media is available.
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 filler; the core action, resource, and unit are all front-loaded. Every word contributes to the agent's understanding.
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 action tool, the description is largely complete: it names the operation and the parameter's role. The only notable gap is the lack of any statement about return behavior or failure conditions, which is minor given the tool's simplicity and existing annotations.
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 0% schema description coverage, the description compensates by clarifying the sole parameter: the target position in seconds. It establishes that 'seconds' is an absolute position rather than a relative offset, adding meaning beyond the bare property name and type.
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 uses a specific verb ('seek') and resource ('media playback') and specifies the unit ('in seconds'), making the tool's function clear. It does not explicitly name siblings, but the absolute-position semantics distinguish it from related controls like next_track or toggle_play_pause.
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 the use case—jumping to a specific playback position measured in seconds—but does not explicitly state when to prefer it over alternatives or mention exclusions. For example, it does not clarify that it should be used for absolute seeks rather than relative skips.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_daily_summary_nowA
Send the daily system summary email right now. Includes CPU, memory, vnstat network stats, top processes. Goes to RECIPIENT_EMAIL from .env — no email prompt.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a non-read-only, non-idempotent action, so the mutation side effect is known. The description adds useful behavioral context: the recipient comes from RECIPIENT_EMAIL in the .env and no email prompt will be shown. However, it does not mention whether fresh data is gathered at call time, whether repeated calls send duplicate emails, or what the return/result behavior is. This is acceptable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences convey purpose, contents, recipient source, and the no-prompt behavior with no filler. The core action is front-loaded, and every clause adds relevant 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 send action, the description supplies everything an agent needs: what email is sent, what data it includes, who receives it, and that it runs immediately without prompting. No output schema exists, but return value explanation is not essential for this simple trigger.
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 zero parameters but full schema coverage, the baseline is 4. The description goes beyond the empty schema by explaining the absence of interactive parameters: recipient is predetermined via RECIPIENT_EMAIL from .env and no prompt is needed. This fully addresses why an agent can call it without arguments.
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 action ('Send the daily system summary email') and the exact resource, with a clear temporal qualifier ('right now'). The included content list (CPU, memory, vnstat network stats, top processes) makes the tool's scope unambiguous and distinguishes it from generic email-sending siblings like send_test_email.
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 makes the usage context explicit: it triggers an immediate daily summary rather than waiting for a scheduled run. It also clarifies there is no interactive email prompt, so an agent knows it can be invoked non-interactively. It does not explicitly name alternative tools or conditions for avoiding it, but the context is clear enough for a 0-parameter tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_notificationC
Send a desktop notification.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| message | Yes | ||
| urgency | No | ||
| app_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnly=false, idempotent=false, and destructive=false. The description adds no further behavioral context, such as whether the notification is ephemeral, whether it requires user interaction, or whether it can be called repeatedly. It provides no value beyond what the annotations already convey, but it does not contradict them.
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?
The description is extremely concise: five words, no filler, and the core action is front-loaded. While it sacrifices useful detail, it earns the words it uses. It could be richer, but it is appropriately sized for a simple 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?
There is no output schema, and the description does not describe return values, success/failure behavior, or how optional parameters like urgency and app_name affect the notification. For a simple action tool this is somewhat acceptable, but the complete absence of parameter guidance leaves an agent guessing when optional fields are involved.
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 description must compensate for undocumented parameters. It does not explain the meaning, allowed values, or effects of 'urgency' or 'app_name'. The description mentions title and message only implicitly through the notification concept, leaving optional parameter semantics entirely undefined.
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 and resource: 'Send a desktop notification.' The word 'desktop' helps distinguish it from sibling tools like send_push_notification or send_test_email. However, it does not explicitly name or contrast with those alternatives, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as send_push_notification or send_test_email. There is no mention of use cases, exclusions, or prerequisites. The usage context is only implied by the tool name and 'desktop notification' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_push_notificationA
Send a push notification to the user's registered mobile devices.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| data | No | ||
| title | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a mutating, non-idempotent action. The description adds useful recipient context ('registered mobile devices') but does not disclose potential side effects, failure modes, or what happens if no devices are registered. With the annotation profile already covering the core behavioral traits, this is acceptable but not enriched.
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?
The description is a single, front-loaded sentence with no filler. It states the action, target, and recipient type efficiently, earning its place without redundancy.
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 tool is relatively simple, with only three parameters and no output schema. However, the description lacks usage differentiation from send_notification and does not clarify the optional data parameter. It is minimally adequate for basic invocation but leaves gaps that could confuse an agent deciding between notification tools.
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 description must compensate for missing parameter documentation. It does not mention title, body, or data at all. Parameter names are somewhat self-explanatory, but the 'data' field's format and purpose are ambiguous, and the description provides no clarification.
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 uses a specific verb ('Send') and a clear resource ('push notification to the user's registered mobile devices'). It distinguishes this tool from the sibling send_notification by explicitly targeting mobile push rather than generic or desktop notifications. An agent can immediately understand what operation this performs.
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 the use case: send a push notification to a user's mobile devices. However, it offers no explicit guidance about when to choose this over the sibling send_notification, nor any exclusions or alternative conditions. The usage context is only implied by the purpose, not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_test_emailA
Send a test spike alert email to RECIPIENT_EMAIL (from .env) to verify Resend is working. Always sends regardless of CPU/memory. No email input needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutability and idempotency, so the description's added value is the behavioral guarantee that it 'always sends regardless of CPU/memory' and that no email input is needed. It does not contradict annotations, but it omits details like side effects or delivery 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?
The description is three short sentences with no filler. The core action and purpose are front-loaded, followed by the important unconditional-send behavior and the no-input clarification.
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 tool with no output schema and no nested objects, the description provides everything an agent needs to invoke it correctly: the action, recipient source, purpose, and the lack of required input. It could mention what 'test spike alert' means or what 'Resend' refers to, but this is minor.
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 are zero parameters and schema coverage is 100%, so the baseline is 4. The description reinforces this by explicitly stating 'No email input needed' and noting that the recipient comes from the .env file, which explains why no parameter is required.
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 names a specific action ('Send a test spike alert email'), a concrete recipient source ('RECIPIENT_EMAIL from .env'), and the goal ('verify Resend is working'). It is clear and unambiguous, though it does not explicitly differentiate itself from sibling tools like send_test_spike_alert.
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 about when to use this tool versus alternatives such as send_test_spike_alert or send_notification. The phrase 'Always sends regardless of CPU/memory' implies an unconditional test use case, but the description never names conditions, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_test_spike_alertA
Manually check CPU/memory and send an alert email if thresholds are exceeded. Email goes to RECIPIENT_EMAIL from .env (no prompt). Optional: cpu_threshold (default 80%), memory_threshold (default 85%).
| Name | Required | Description | Default |
|---|---|---|---|
| cpu_threshold | No | ||
| memory_threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a side effect that annotations alone do not capture: it sends an email, and it specifies the destination source (.env RECIPIENT_EMAIL) and the no-prompt behavior. It also states the threshold condition explicitly. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences deliver the action, the email destination, and both parameter defaults with no filler. The main behavior is front-loaded before parameter details.
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 low-complexity tool with two optional parameters, the description covers the trigger condition, destination, and defaults. It does not describe the return value or what happens when no threshold is exceeded, but the absence of an output schema and the tool's simple side-effect nature make this 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?
The input schema only provides property names with null defaults, so the description carries the full semantic burden. It explains that both parameters are optional thresholds and supplies meaningful defaults of 80% and 85%, adding value beyond the bare schema. It could clarify the exact accepted string format, but the core meaning is clear.
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 names a specific verb and resource: manually check CPU/memory and send an alert email when thresholds are exceeded. This clearly separates it from sibling tools like monitor_cpu, monitor_ram, and send_test_email by combining monitoring with conditional alerting.
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 word 'Manually' implies an on-demand or ad-hoc trigger, but there is no explicit guidance about when to choose this over send_test_email, monitor_cpu, or check_alert_status. No alternatives or exclusions are named, so the agent must infer intended usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_display_brightnessC
Set the screen brightness.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already record that this is a non-read-only, non-idempotent, non-destructive operation, but the description adds no behavioral detail beyond the word 'Set'. It does not mention value bounds, side effects on connected displays, or whether the change is applied immediately.
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?
The description is a single, front-loaded sentence with no filler. It is concise, though the brevity comes at the cost of essential parameter and usage 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 setter with one parameter and no output schema, the description is incomplete: an agent cannot know whether 'value' expects 0-100, 0-255, or another scale, nor what the tool returns. More detail is needed 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?
With 0% schema description coverage, the description must clarify the 'value' parameter, but it only implies that it is the brightness level. It fails to specify units, valid range, or scale, leaving an agent to guess the correct integer.
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 clear verb and resource: it sets screen brightness, which distinguishes it from get_display_brightness and other display tools. It does not explicitly contrast itself with sibling tools like set_night_light, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, what value range is acceptable, or how it relates to alternatives such as get_display_brightness or set_night_light. The intended use is only implied by the tool's name and brief description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_night_lightA
Enable or disable night light and set colour temperature.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | ||
| temperature | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a mutating operation (readOnlyHint=false), so the description appropriately adds the specific behavioral detail: toggling night-light state and setting color temperature. It does not disclose persistency, valid temperature ranges, or interaction between 'enabled' and 'temperature,' but the simple operation is adequately surfaced.
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?
The description is a single front-loaded sentence with no filler or redundancy. Every word contributes to the operation, and it is easily parseable.
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 simple two-parameter setter, the description covers the core operation but lacks details an agent may need for correct invocation, such as temperature units/range and whether temperature applies when night light is disabled. No output schema exists, so return behavior is also unspecified.
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 0% schema description coverage, the description must compensate for the bare schema. It does connect 'enabled' to enabling/disabling and 'temperature' to color temperature, which adds meaning beyond the raw type names. However, it omits units, range, and what happens when 'enabled' is false, leaving meaningful gaps.
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 relationship: 'Enable or disable night light' and 'set colour temperature.' This clearly differentiates it from display-brightness or monitor-state siblings, even without naming them.
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 usage context is implied: an agent should call this when the user wants night light enabled, disabled, or its color temperature changed. However, it does not explicitly contrast with nearby alternatives like set_display_brightness or monitor_on/off, leaving some routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_output_deviceC
Switch the default audio output device.
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=false, so the description's 'Switch' adds little beyond the structured hints. It doesn't disclose side effects (e.g., affects all applications, may require privileges, persists across reboots) or what happens on failure. With annotations present, the description adds minimal 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?
The description is a single, efficient sentence with no fluff, which is good. However, it is too sparse to be useful; the conciseness is not balanced with necessary detail. It could include the source of device_id and expected outcome without becoming verbose.
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 tool with one parameter, no output schema, and minimal annotations, the description should explain how to get the parameter and what the result is. It does neither. An agent cannot reliably invoke this tool without additional knowledge from external context.
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 does not explain what device_id is, how to obtain it, or its format. The sibling 'audio_devices' likely provides valid IDs, but this connection is not made. The agent has no way to correctly fill the single required parameter.
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 uses a specific verb ('Switch') and a clear resource ('default audio output device'), which clearly distinguishes it from volume, mute, and playback control siblings. However, it doesn't reference the related 'audio_devices' tool that would supply the device_id, nor does it explicitly exclude any sibling.
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 on when to use this tool versus alternatives like 'audio_devices' or 'set_volume'. It doesn't mention that device_id should come from the list of devices or that this changes the system-wide default. The agent is left to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_power_profileC
Set the power profile.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, not idempotent, and not destructive, but the description adds no behavioral context beyond that. It does not disclose side effects, persistence, privilege requirements, or whether changing the profile affects running processes or hardware.
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?
The text is very concise and free of filler, which is structurally good. However, it is under-specified: a single sentence that omits essential operational details makes it less appropriate for reliable tool invocation.
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 mutation tool with no output schema, no parameter enums, and no parameter documentation, the description is incomplete. It leaves the agent without enough information to know valid profile values, expected effects, or whether any confirmation/error handling is needed.
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%, so the description must compensate, but it only restates the concept of 'profile' without defining valid values, formats, examples, or OS-specific constraints. The parameter name and title offer minimal self-evident meaning.
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 ('Set') and resource ('power profile'), making the core operation clear. It also implicitly differentiates from the sibling get_power_profile by indicating this is the setter counterpart. However, it does not explain what 'power profile' means or what values are accepted.
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 guidance on when to use this tool, what conditions apply, or how it relates to alternatives such as get_power_profile. The description only states the action; it does not help an agent choose this tool with confidence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_volumeA
Set audio volume to a specific percentage.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating, non-idempotent operation, and the description states the effect clearly. However, it provides no additional behavioral context such as accepted value range, behavior when audio is muted, 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, direct sentence with no filler. Every word contributes to the tool's 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?
For a simple one-parameter setter with annotations covering the write behavior, this is nearly sufficient. Missing details like explicit bounds and behavior on invalid values prevent a perfect score.
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 schema only defines 'value' as an integer with no description, so the phrase 'specific percentage' adds essential meaning by identifying the unit. It could go further by explicitly stating the 0-100 range.
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?
Uses a specific verb ('Set'), a clear resource ('audio volume'), and a precise unit ('percentage'). This distinguishes it from relative siblings like volume_up/volume_down and from mute_audio or get_volume.
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 this tool is for setting an exact absolute volume, which contrasts with the relative sibling tools, but it never explicitly says when to prefer this over alternatives. No exclusions or conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
speed_testA
Run a network speed test (download, upload, ping).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, indicating side effects, but the description adds no behavioral context such as expected duration, bandwidth consumption, or output format. It does not contradict the annotations, but it provides zero additional disclosure beyond the structured hints.
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?
The description is a single sentence with the action front-loaded and no filler. Every word contributes to the purpose, making it appropriately concise.
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 tool with no output schema, the description covers the core action and metrics but omits expected output shape, potential latency, or side effects like bandwidth usage. It is minimally viable but leaves a few gaps an agent might need to handle.
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 has zero parameters, and the input schema is empty with 100% coverage. With 0 parameters the baseline is 4, and the description adds no parameter detail – none is needed since there are none to document.
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 and resource ('Run a network speed test') and explicitly names the metrics covered (download, upload, ping). This differentiates it from siblings like ping_host (which only pings) and get_network_ip (which returns an IP), so an agent can tell them apart without opening schemas.
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 usage for network performance testing via the parenthetical '(download, upload, ping)', but it gives no explicit guidance on when to choose this over alternatives such as ping_host or get_vnstat_data. There is no 'when not to use' or mention of sibling tools, leaving the agent to infer the decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_authA
Start Spotify account linking. Returns an auth URL the user must open in a browser to sign in and approve access. After approving, Spotify redirects to the configured callback URL and Vela finishes linking automatically — the browser should show a success or failure page.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it as non-read-only and open-world, and the description corroborates by detailing external browser interaction, redirect to callback, automatic linking completion, and a visible success/failure page. This adds meaningful behavioral context beyond what the annotations alone provide.
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?
Three sentences with no redundancy: the first states the core purpose, and the next two explain the flow and outcome. It is front-loaded and efficient.
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 tool with no output schema, the description covers the return value (auth URL), the required user action, and the post-approval flow (redirect and automatic linking), which is sufficient for an agent to invoke and explain the tool correctly.
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 and the schema description coverage is 100%, so there is nothing for the description to add. The baseline of 4 is appropriate given no parameters exist.
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?
Clearly identifies the action (start Spotify account linking) and the return value (an auth URL). It is unambiguous versus siblings like spotify_devices (device management) and spotify_callback (callback handling).
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 positions this as the entry point in the OAuth flow and explains the sequence that follows: browser sign-in, redirect to the callback URL, and automatic linking. It doesn't explicitly say when not to use it or list alternatives, but for a 0-param auth starter the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_callbackA
Legacy/manual completion of Spotify linking with an authorization code. Prefer the automatic browser redirect to /spotify/callback; only use this if the redirect could not finish linking.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal mutation (readOnlyHint false, openWorldHint true, idempotentHint false), and the description adds useful context beyond them: this is a fallback completion step that requires an authorization code. It doesn't detail side effects like code expiry or single-use behavior, but it doesn't contradict the annotations either.
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 the core purpose front-loaded and the usage caveat immediately after. Every phrase earns its place and there is no redundant wording.
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 callback tool with no output schema, the description covers the purpose, the fallback nature, the required input, and the preferred alternative. The only notable gap is that it doesn't mention what happens if the code is invalid or already consumed, but the overall context is sufficient 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?
The schema only describes the parameter as "Code" with 0% coverage, so the description carries the burden. It does compensate by explicitly calling it an "authorization code," which gives the agent the essential semantic. It could add more detail about where the code comes from or that it may be single-use, but for a single-parameter tool this is adequate.
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 clearly identifies the tool as the manual/legacy completion step for Spotify linking using an authorization code. It also distinguishes itself from the preferred automatic browser redirect flow, so an agent can tell what this tool does and how it differs from the normal path.
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?
It gives explicit guidance: prefer the automatic browser redirect to /spotify/callback, and only call this tool if the redirect could not finish linking. This is a clear when-to-use and when-not-to-use statement with an explicit alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_devicesARead-onlyIdempotent
Get list of available Spotify playback devices (speakers, computers, phones). Use when the user asks what devices are available for playback.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the qualifier 'available,' implying it returns only currently active devices, but this is more purpose than behavior. No additional insights like auth requirements or rate limits are provided, so a 3 is appropriate given the strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and no filler. The examples in parentheses add useful clarification without bloat, and the usage 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?
For a zero-parameter, read-only tool with comprehensive annotations, the description is sufficiently complete. It covers what and when, and the safety profile is handled by annotations. It doesn't mention possible Spotify auth prerequisites, but that is a minor omission for a simple listing operation.
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 has zero parameters, and the schema confirms this with 100% coverage. Per scoring rules, the baseline for 0 params is 4. The description doesn't need to clarify parameter meanings since there are none.
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 clear verb ('Get list') and resource ('Spotify playback devices') with examples, making the tool's purpose unambiguous. It doesn't explicitly name sibling tools like audio_devices to differentiate, but the 'Spotify' qualifier inherently distinguishes it.
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 provides an explicit usage trigger: 'Use when the user asks what devices are available for playback.' This gives clear context, though it does not mention alternatives or exclusions, which prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_sessionsARead-onlyIdempotent
List active SSH sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose that the tool is read-only, idempotent, and non-destructive. The description adds the 'active' scope but no further behavioral context such as what fields are returned, whether root access is needed, or how sessions are defined. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one front-loaded sentence with no filler or redundancy. Every word contributes to the tool's meaning, which is ideal for this level of simplicity.
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 simple, read-only, zero-parameter tool, the description is minimally sufficient to select and invoke it. However, there is no output schema and the description does not specify what information each listed SSH session contains or any caveats, leaving the expected result shape somewhat underspecified.
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 has zero parameters and the input schema is empty, so the description has no parameter semantics to add. This matches the baseline expected 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?
The description clearly states a specific verb ('List') and resource ('active SSH sessions'), and this resource is unique among the many sibling tools. It does not explicitly contrast itself with similar list-oriented siblings, but the entity it targets 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?
The intended use is implied: an agent should call this when it needs to see active SSH sessions. However, the description provides no explicit when-to-use guidance, no exclusions, no mention of prerequisites like permissions, and no comparison to alternatives such as list_processes or get_logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_containerA
Start a Docker container. Check status first unless the user explicitly asked to start it.
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and idempotentHint=false, so the description doesn't need to restate those. It adds the behavioral advice to check status first, implying the operation may fail if already running, but it doesn't disclose what happens on failure or whether it's async. Since annotations carry the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and then adds the conditional check. It is concise, with no unnecessary words, and follows a clear structure.
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 simple tool with one parameter, no output schema, and annotations covering mutability and idempotency, the description is mostly complete. It gives the action and a key precondition. It doesn't mention return behavior or failure modes, but those are minor given the simplicity.
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 description must compensate for the parameter name_or_id. The description does not elaborate on what name_or_id refers to (e.g., container name or ID). The parameter name is self-explanatory, but the description adds no additional semantic detail, failing to bridge 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?
The description clearly states the action: 'Start a Docker container.' The verb 'start' and resource 'container' are specific and distinguish it from siblings like stop_container and restart_container. It also adds a precondition about checking status, which clarifies its scope.
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?
It provides explicit guidance: 'Check status first unless the user explicitly asked to start it.' This tells the agent when to use this tool versus alternatives (like get_container_status) and when to skip the check. It doesn't name the specific status tool but implies it, which is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_serviceA
Start a systemd service. Use get_service_status first when the user asks if it is running; only start when they ask to start it or it is down and they want it fixed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| scope | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, covering the basic safety profile. The description adds a usage guardrail but does not disclose side effects, failure conditions, permissions, or behavior when the service is already running. This is acceptable given annotations, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core purpose and followed by precise usage guidance. Every sentence adds value and there is 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?
For a 2-parameter tool with no output schema and 0% schema description coverage, the description must carry more weight. It explains when to call it but leaves parameter semantics and operational behavior undocumented, so an agent cannot fully invoke it correctly without external knowledge.
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 two required string parameters, name and scope. The description provides no explanation of what values these parameters expect, what scope means, or how they interact with systemd. The description fails to compensate for the schema gaps.
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 and resource: 'Start a systemd service.' This clearly distinguishes it from sibling tools like stop_service and restart_service, and the guardrail about get_service_status further separates it from status checks.
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 explicit when-to-use and when-not-to-use guidance: check get_service_status first if the user asks whether it is running, and start only when the user asks to start it or it is down and they want it fixed. This directly names the alternative and the conditions that select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_containerB
Stop a Docker container.
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already communicate that this is a mutating, non-idempotent, non-destructive operation. The description adds no further behavioral context such as whether the container is stopped gracefully, what happens if the container is already stopped, or whether any state is preserved. It does not contradict the annotations, but it also does not build on them.
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?
The description is four words long, front-loaded with the action and target, and contains no filler or redundant information. It is as concise as a tool description can be.
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, the description is minimally viable, and the annotations cover the mutation and safety profile. However, with no output schema and no parameter-level explanation, the description leaves some uncertainty about expected input values and result/error behavior. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 name_or_id parameter beyond the schema's property title. The parameter name and title provide some basic meaning, but the description itself adds no clarification about input format or how to specify the container.
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 ('Stop') and resource ('a Docker container'), making the operation immediately clear. It distinguishes itself from sibling tools like start_container, restart_container, and get_container_status without needing extra explanation.
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 the tool should be used when a Docker container needs to be stopped, but it provides no explicit guidance about when to choose this tool over siblings such as start_container or restart_container. It also omits prerequisites like the container needing to exist or be running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_serviceC
Stop a systemd service.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| scope | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as a non-read-only, non-idempotent, open-world mutation. The description adds no additional behavioral context such as required privileges, side effects on dependent services, or failure modes. It does not contradict the annotations, but it also adds 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler, and the core action is front-loaded. It is concise, though the conciseness comes at the cost of important details.
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 two required parameters, 0% schema coverage, no output schema, and no usage notes, the description is not sufficient for reliable invocation. In particular, the meaning and allowed values of `scope` are entirely unspecified.
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 input schema provides no descriptions for `name` or `scope`, and schema description coverage is 0%. The description does not explain what these parameters mean or what values `scope` accepts, making correct invocation uncertain.
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 clearly states the action (stop) and target (a systemd service), leaving no ambiguity about the tool's intent. It is distinguishable from sibling tools like start_service and restart_service, though it does not explicitly name or differentiate them.
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 guidance on when to use this tool versus start_service, restart_service, or get_service_status. No prerequisites, exclusions, or context are provided, so the agent must infer usage only from the verb and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_timeA
Sync the system clock via NTP.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a mutation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds the detail 'via NTP' but nothing else about side effects, required privileges, or failure behavior. Given the annotations cover the safety profile, the description adds modest value.
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?
The description is a single, direct sentence with no filler. It is appropriately sized for the tool's simplicity and front-loads the core action.
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 simple parameterless tool with annotations present, the description is mostly sufficient. It could mention that network access to an NTP server is required or that administrative privileges might be needed, but these are minor omissions given the tool's trivial interface.
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 has zero parameters, and the schema reflects that completely. With no parameters to document, the baseline of 4 is appropriate. The description does not need to elaborate on 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?
The description clearly states the action (sync) and the resource (system clock) with the method (via NTP). It is specific and not a tautology. Since there are no sibling tools that perform a similar time-sync function, differentiation is not required, but the description doesn't explicitly contrast with any other tool.
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 the use case (when you need to synchronize the system clock) but does not explicitly state when to use it or exclude alternatives. There are no obvious alternative tools among the siblings, so the lack of explicit guidance is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_bluetoothA
Enable or disable the Bluetooth radio.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=false, signaling a non-idempotent mutation. The description merely restates the action without adding behavioral context beyond that—e.g., potential side effects like disconnecting paired devices, requiring root/admin privileges, or affecting other Bluetooth operations. It adds little beyond the structured hints.
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?
The description is a single, direct sentence with no redundant words. The action is front-loaded and there is zero fluff, making it efficient and easy to parse.
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 simple toggle with one boolean parameter and no output schema, the description is largely sufficient. However, it omits any mention of potential error conditions, permission requirements, or state after execution (e.g., whether connections are preserved). Given the low complexity, these are minor, but the absence of any additional context prevents a perfect score.
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 description must explain the parameter. It effectively does: 'enable or disable' implicitly maps the boolean 'enabled' to true=enable and false=disable. This adds meaning beyond the bare schema, which only provides the name and type.
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 ('Enable or disable') and resource ('Bluetooth radio'), which clearly distinguishes it from sibling tools like list_bluetooth_devices or pair_bluetooth_device. It unambiguously conveys the tool's purpose with no ambiguity.
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 provides no explicit when-to-use or when-not-to-use guidance. It does not compare itself to alternative Bluetooth tools (e.g., list_bluetooth_devices, pair_bluetooth_device, toggle_wifi) or state conditions under which it should be preferred. An agent receives no routing hints to avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_play_pauseA
Toggle media playback on or off.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only and not idempotent; the description adds the concrete behavioral detail that it flips media playback between 'on' and 'off'. It does not go further to explain edge cases such as what happens when no media is active, but for a simple toggle this is acceptable baseline transparency.
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?
The description is a single six-word sentence with no filler or redundant detail. It is front-loaded and perfectly sized for a tool with no parameters.
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 toggle, the description covers the core action, but it leaves out useful context such as which media player/context is targeted, what happens if nothing is playing, and whether the tool returns any state confirmation. Since there is no output schema, a bit more explanation would make it fully 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?
The input schema has zero parameters, so the baseline is 4. The description doesn't need to explain parameter semantics because there are none to document.
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 clear action ('Toggle') and resource ('media playback') with a binary outcome ('on or off'), so an agent can understand what the tool does. It does not explicitly differentiate itself from sibling media-control tools like next_track, previous_track, or seek_media, but the play/pause semantics are distinct enough.
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 intended use case is implied by the verb 'Toggle': use this when you want to start or pause current media playback. However, it provides no explicit when-to-use or when-not-to-use guidance and does not mention alternative sibling tools for controlling media.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_wifiB
Enable or disable the WiFi radio.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutation (readOnlyHint=false) and non-idempotency (idempotentHint=false). The description adds no behavioral context beyond restating the action, such as side effects (e.g., disconnecting active connections) or system-level impact. With annotations present, the bar is lower, but the description still contributes no extra transparency.
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 zero redundancy. It immediately states the action and resource, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, with one parameter and no output schema. The description covers the core action but omits any mention of return values, error conditions, or prerequisites (e.g., administrative rights). For a tool of this simplicity, it is adequate but not exhaustive.
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 description must compensate. The single boolean 'enabled' is not explicitly mapped (true=enabled, false=disabled), but the verb phrase 'enable or disable' strongly implies the mapping. For a trivial single-parameter boolean, this implicit meaning is sufficient, though not explicitly stated.
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 uses a specific verb ('enable or disable') and resource ('WiFi radio'), clearly distinguishing this from read-only tools like get_wifi_status and connection-specific tools like connect_wifi or disconnect_wifi. It leaves no ambiguity about the tool's core function.
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 on when to use this tool versus alternatives such as connect_wifi or disconnect_wifi. The description does not mention scenarios, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
type_keyboardA
Type text at the current focused input.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only and not idempotent, so the description does not need to restate that. It adds minimal behavioral context by specifying that typing targets the focused input, but it does not disclose side effects such as triggering shortcuts, requiring focus, or handling characters that may be interpreted by the target application.
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?
The description is a single, front-loaded sentence with no wasted words. Every word contributes to the core action and target.
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 simple one-parameter tool, the description is reasonably complete: it states the action and the target. Annotations cover the safety profile, and the lack of an output schema means return values need not be described. It could mention what happens with no focused input, but this is a minor gap given the tool's simplicity.
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 description must compensate. It only restates that text will be typed, which is marginal added value over the schema's 'text' property. For a single obvious parameter this is adequate, but it does not explain special-character handling, newline behavior, or any format requirements.
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 uses a specific verb ('Type') and resource ('the current focused input'), making the tool's function immediately clear. It is naturally distinguished from sibling press_keyboard_keys, which handles key presses rather than text entry.
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 phrase 'current focused input' implies the tool should be used when text needs to be entered into an already focused field, but it does not explicitly state when to use this tool instead of press_keyboard_keys or other input methods. No exclusions or alternative routing are provided, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpair_bluetooth_deviceC
Unpair a Bluetooth device.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal that this is not read-only, not idempotent, and not flagged destructive. The description adds no behavioral context beyond the action itself, such as whether unpairing disconnects an active connection, requires Bluetooth to be enabled, or is reversible.
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?
The description is a single, front-loaded sentence with no wasted words. It is concise, though the brevity comes at the cost of omitted details penalized in other dimensions.
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?
Despite low complexity, the tool definition is incomplete: no parameter format, no usage context, no behavioral side effects, and no output information. The agent is left to infer prerequisites and outcomes rather than being equipped to invoke the tool correctly.
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 schema has 0% description coverage, and the description does not explain the address parameter's expected format or meaning. 'address' is minimally suggestive, but the agent is not told whether it expects a MAC address, device name, or another identifier.
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 clear verb and resource: "Unpair a Bluetooth device." This is unambiguous and conceptually distinct from siblings like pair_bluetooth_device, though it basically restates the tool name and does not explicitly mention the inverse relationship.
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 given about when to use this tool, how to obtain the address (e.g., via list_bluetooth_devices), or that pair_bluetooth_device is the opposite operation. The agent must infer the correct context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unzip_pathB
Extract a zip archive to a destination directory.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, and the description adds little beyond restating that extraction happens. It does not disclose whether existing files in the destination are overwritten, whether the destination must already exist, or what side effects occur during extraction.
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?
The description is a single direct sentence with no filler or repeated boilerplate. It is appropriately sized for a two-parameter tool, though it could have included a bit more operational detail without becoming bloated.
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 no output schema, the description does not explain what the agent should expect after invocation, such as success signals or error conditions. It also omits behavioral details like overwrite policy and destination creation, leaving meaningful gaps for a mutating filesystem operation.
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%, so the description must carry the semantic load. It usefully maps path to 'a zip archive' and destination to 'a destination directory', but it does not clarify path formats, whether the destination is created, or how conflicts 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 uses a specific verb ('Extract') and resource ('a zip archive') with a destination directory, making the operation unmistakable. It also distinguishes itself from the sibling tool zip_paths, which performs the opposite operation.
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 provides no explicit when-to-use guidance and does not mention alternatives or exclusions. The intended use case is only implied by the verb 'Extract', leaving an agent without routing guidance relative to sibling file tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileCDestructive
Upload a file to a destination path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| file_base64 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already flag this as destructive and non-idempotent, the description adds no behavioral context beyond those hints. It doesn't disclose whether an existing file is overwritten, whether directories are created, file size limits, or how the destination path should be interpreted.
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?
The description is a single short sentence with no filler or repetition; it is as concise as possible. The essential action is stated up front without unnecessary words.
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 file upload tool with a destructive annotation and a schema that documents nothing about the parameters, the description is too thin. It omits overwrite behavior, path semantics, and any mention of the base64 payload, leaving the agent without enough context to invoke the tool reliably.
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 mentions neither 'path' nor 'file_base64' semantics. With zero parameter details in the schema and no explanation in the description, an agent cannot understand path formatting, base64 encoding requirements, or whether the destination is a directory or full file path.
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 ('Upload'), a resource ('a file'), and a destination ('a destination path'), making the tool's function immediately clear. It also implicitly distinguishes itself from sibling tools like download_file and delete_path, since upload is the only write-oriented file transfer operation.
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 given for when to choose this tool over alternatives such as download_file, rename_path, or delete_path. There is no mention of prerequisites, path constraints, or exclusions, so the agent must infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_downB
Decrease the master volume by a step.
| Name | Required | Description | Default |
|---|---|---|---|
| step | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=false, so the mutating nature is known. The description adds that the mutation targets the master volume, but it does not disclose edge behavior such as clamping at minimum volume, whether negative step values are allowed, or any system-level side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clear sentence with no filler or repetition. The action is front-loaded and the 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?
For a simple one-parameter tool, the description is close to sufficient, but the ambiguous meaning of 'step' and the lack of any guidance about bounds or return behavior leave meaningful gaps. An agent could call it correctly in the common case, but not with full confidence about edge cases.
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 description carries the full burden for explaining the step parameter. The phrase 'by a step' only loosely ties the integer parameter to the decrement amount; it does not clarify units, allowed range, whether negative values would increase volume, or how 'a step' maps to actual volume change.
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 action ('Decrease') and resource ('master volume'), which clearly distinguishes it from siblings like volume_up and set_volume. However, it says 'by a step' rather than 'by the specified step,' leaving slight ambiguity about whether the required step parameter is the decrement amount.
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 when to use the tool: when the caller wants to lower the master volume incrementally. It does not explicitly contrast with volume_up, set_volume, or mute_audio, so an agent receives no direct guidance on choosing among these siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_upB
Increase the master volume by a step.
| Name | Required | Description | Default |
|---|---|---|---|
| step | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys the basic mutating effect, consistent with readOnlyHint=false and idempotentHint=false. However, it does not disclose edge behavior such as what happens at maximum volume, whether the step is clamped, or any other system side effects 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?
The description is a single front-loaded sentence with no filler. Every word contributes to the core meaning, and the action is stated first.
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 tool is simple, and the sentence gives a viable basic purpose. However, it is incomplete for invocation because the step parameter is poorly explained, alternatives are not mentioned, and no behavior at volume limits is described.
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 0% schema description coverage, the description must explain the required 'step' parameter, but it only says 'by a step.' It does not clarify whether 'step' is the amount, a range, a default, or how the integer maps to actual volume change. This is especially ambiguous because 'a step' could suggest a fixed increment rather than a parameter-driven amount.
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 clearly states a specific action ('Increase'), a resource ('master volume'), and a granularity ('by a step'). It is immediately distinguishable from siblings like get_volume, set_volume, volume_down, and mute_audio.
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 explicit guidance is given about when to use this tool versus alternatives such as set_volume or volume_down. The incremental nature ('by a step') implies a relative adjustment, but the description does not state this as a decision rule or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webcam_snapshotA
Capture a webcam image and return it as base64 PNG.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations do not carry much behavioral meaning here, and the description adds only the output format. It doesn't disclose that this activates the camera, may require user permission, or can fail if the webcam is disabled or occupied. This is a notable omission for a webcam-capture tool.
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. Every word adds meaning: capture action, webcam resource, base64 PNG output.
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 tool, this is nearly complete: it states what is captured and how the result is returned. Minor gaps remain around whether the result is a raw base64 string versus a data URI and what happens on failure, but these are less critical without parameters or an output schema.
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 are no parameters, so there is no ambiguity for the agent to resolve. The description's output-format note is extra but not needed for parameter understanding, and the zero-parameter case warrants no penalty.
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 uses a specific verb ('Capture') and names the exact resource ('webcam image'), then clarifies the output format ('base64 PNG'). This is enough to distinguish it from generic display/snapshot siblings like get_snapshot and display_screenshot.
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 no guidance on when to use this tool versus alternatives such as get_snapshot, nor does it mention preconditions like webcam availability or permissions. The intended context is only implied by the word 'webcam'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_clipboardA
Write text to the clipboard.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the write behavior is known. The description adds no extra behavioral context such as overwriting existing clipboard content, permission requirements, or side effects. It simply restates the core function without going 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?
The description is one short sentence with no filler. It is appropriately front-loaded for a single-parameter tool and every word 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?
For a simple tool with one string parameter and no output schema, the description is adequate for an agent to call it correctly. It fully states the action and target; the only missing touches are edge-case notes like clipboard overwriting, but these are either implicit or covered by annotations.
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 schema description coverage at 0%, the description carries the burden of explaining parameters. It clarifies that 'text' is the content to write, which adds meaning beyond the raw property name and type, but it does not provide details on encoding, size limits, or formatting.
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 uses a specific verb ('write') and resource ('clipboard'), clearly distinguishing it from sibling tools like read_clipboard and clear_clipboard. An agent can immediately understand the action and target.
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 its usage (when you want to put text on the clipboard) but provides no explicit guidance about when to choose this over read_clipboard or clear_clipboard, nor any prerequisites or exclusions. It relies on the name and sibling list for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zip_pathsC
Create a zip archive from files and directories.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| output | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal: readOnlyHint=false indicates mutation, destructiveHint=false suggests no data destruction, but the description adds little beyond 'Create'. It does not disclose whether existing archives are overwritten, whether directories are traversed recursively, whether symlinks are followed, or what happens if input paths are missing. With no annotation coverage of these behaviors, the description carries the burden but fails to address them.
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?
The description is a single concise sentence with no wasted words, but it is under-specified. Conciseness is appropriate, yet the lack of crucial details makes it less effective. It is neither verbose nor well-structured; it is simply minimal.
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 mutating tool with no output schema and 0% parameter coverage, the description is incomplete. An agent would need to know whether the tool overwrites existing archives, how directory structures are preserved, and what error behavior occurs. The absence of these details, combined with the tool's potential side effects, makes the definition inadequate for reliable 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%, so the description must explain both parameters. It only says 'from files and directories', implying paths are file/directory paths, but it does not specify the expected string format (e.g., comma-separated list, JSON array, or wildcard support) or the nature of the output path (existing vs. new). The output parameter is entirely unexplained. This leaves significant ambiguity for an agent.
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 clear verb ('Create') and resource ('zip archive'), and specifies the source ('from files and directories'). It distinguishes from siblings like unzip_path, though it does not explicitly name alternatives. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 other file-related tools such as unzip_path, download_file, or delete_path. It does not mention prerequisites, typical scenarios, or when not to use it. The agent must infer usage from the name and description 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.
183 tool updates
v0.1.0- First observed
active_window - First observed
audio_devices - First observed
beep_audio - First observed
cancel_job - First observed
check_alert_status - First observed
check_package_installed - First observed
check_port - First observed
check_updates - First observed
check_vnstat_status - First observed
clear_cache - First observed
clear_clipboard - First observed
clear_notifications - First observed
close_application - First observed
close_window - First observed
compose_status - First observed
connect_wifi - First observed
count_tools - First observed
delete_path - First observed
disable_mic - First observed
disable_webcam - First observed
disconnect_wifi - First observed
display_record - First observed
display_screenshot - First observed
download_file - First observed
enable_mic - First observed
enable_webcam - First observed
gatekeeper_block_project - First observed
gatekeeper_check_certificate_status - First observed
gatekeeper_check_image_status - First observed
gatekeeper_containers_wizard_context - First observed
gatekeeper_containers_wizard_ports_check - First observed
gatekeeper_containers_wizard_validate - First observed
gatekeeper_create_container - First observed
gatekeeper_create_project - First observed
gatekeeper_delete_container - First observed
gatekeeper_delete_image - First observed
gatekeeper_delete_project - First observed
gatekeeper_get_container - First observed
gatekeeper_get_container_health - First observed
gatekeeper_get_project - First observed
gatekeeper_get_project_audit - First observed
gatekeeper_initialize_payment - First observed
gatekeeper_install_certificate - First observed
gatekeeper_list_audit - First observed
gatekeeper_list_certificates - First observed
gatekeeper_list_containers - First observed
gatekeeper_list_networks - First observed
gatekeeper_list_overdue - First observed
gatekeeper_list_payments - First observed
gatekeeper_list_projects - First observed
gatekeeper_nginx_disable - First observed
gatekeeper_nginx_enable - First observed
gatekeeper_nginx_remove - First observed
gatekeeper_nginx_status - First observed
gatekeeper_nginx_validate - First observed
gatekeeper_nginx_wizard_context - First observed
gatekeeper_pull_image - First observed
gatekeeper_remove_certificate - First observed
gatekeeper_restart_container - First observed
gatekeeper_revenue_report - First observed
gatekeeper_start_container - First observed
gatekeeper_stop_container - First observed
gatekeeper_unblock_project - First observed
gatekeeper_update_project - First observed
get_battery - First observed
get_boot_errors - First observed
get_container_logs - First observed
get_container_status - First observed
get_currently_playing_song - First observed
get_device_info - First observed
get_directory_tree - First observed
get_disk_usage - First observed
get_display_brightness - First observed
get_docker_info - First observed
get_firewall_status - First observed
get_logs - First observed
get_monitor_state - First observed
get_network_ip - First observed
get_network_location - First observed
get_power_profile - First observed
get_resolution - First observed
get_service_status - First observed
get_snapshot - First observed
get_system_bios - First observed
get_system_config - First observed
get_system_cpu - First observed
get_system_disk - First observed
get_system_gpu - First observed
get_system_info - First observed
get_system_monitors - First observed
get_system_os - First observed
get_system_ram - First observed
get_system_stats - First observed
get_system_usb - First observed
get_top_processes - First observed
get_uptime - First observed
get_vnstat_data - First observed
get_volume - First observed
get_vpn_status - First observed
get_wifi_status - First observed
health_check - First observed
is_process_running - First observed
kill_process - First observed
kill_process_by_name - First observed
list_bluetooth_devices - First observed
list_docker_containers - First observed
list_failed_services - First observed
list_files - First observed
list_installed_applications - First observed
list_jobs - First observed
list_notifications - First observed
list_processes - First observed
list_services - First observed
list_timers - First observed
list_tools - First observed
list_wifi_networks - First observed
lock_screen_display - First observed
lock_screen_security - First observed
login_history - First observed
logout_user - First observed
make_directory - First observed
minimize_window - First observed
monitor_battery_health - First observed
monitor_cpu - First observed
monitor_disk_io - First observed
monitor_fans - First observed
monitor_gpu - First observed
monitor_network_io - First observed
monitor_off - First observed
monitor_on - First observed
monitor_ram - First observed
monitor_temperatures - First observed
mute_audio - First observed
next_track - First observed
open_application - First observed
open_path - First observed
pair_bluetooth_device - First observed
ping_host - First observed
press_keyboard_keys - First observed
previous_track - First observed
read_clipboard - First observed
read_notifications - First observed
rename_path - First observed
restart_container - First observed
restart_service - First observed
run_job_now - First observed
run_update - First observed
schedule_job - First observed
search_and_play - First observed
search_files - First observed
seek_media - First observed
send_daily_summary_now - First observed
send_notification - First observed
send_push_notification - First observed
send_test_email - First observed
send_test_spike_alert - First observed
set_display_brightness - First observed
set_night_light - First observed
set_output_device - First observed
set_power_profile - First observed
set_volume - First observed
speed_test - First observed
spotify_auth - First observed
spotify_callback - First observed
spotify_devices - First observed
ssh_sessions - First observed
start_container - First observed
start_service - First observed
stop_container - First observed
stop_service - First observed
sync_time - First observed
toggle_bluetooth - First observed
toggle_play_pause - First observed
toggle_wifi - First observed
type_keyboard - First observed
unpair_bluetooth_device - First observed
unzip_path - First observed
upload_file - First observed
volume_down - First observed
volume_up - First observed
webcam_snapshot - First observed
write_clipboard - First observed
zip_paths
TDQS
Scored across 183 tools
Descriptions are unusually careful with cross-references ('Do NOT use X for Y'), which makes most tools easy to tell apart. Still, some clusters overlap enough to cause misselection, such as Docker container tools vs. Gatekeeper container tools, and lock_screen_display vs. lock_screen_security.
The overwhelming majority of tools use a clear snake_case verb_noun pattern (list_, get_, set_, monitor_, start_, stop_, etc.). A few outliers like audio_devices, active_window, login_history, and health_check break the pattern but do not make the set chaotic.
183 tools is an extreme count for any MCP server, far beyond the 50+ threshold for a low score. Even with a broad all-in-one device-management scope, this volume creates heavy context overhead and makes tool selection expensive.
Within the domains the server targets, coverage is quite thorough: files, processes, services, Docker, Gatekeeper deployment, media, notifications, and network monitoring all have lifecycle-oriented operations. Minor gaps exist, such as no Compose up/down, no per-PID process details beyond listing, and no explicit payment-success recording, but these are workable.
Maintenance
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that allows AI agents to remotely control Windows, Linux, and macOS systems via VNC. It provides tools for mouse and keyboard interaction, text input, and screen capturing.6110 npm57MIT
- AlicenseNot gradedqualityCmaintenanceA MCP server for Windows/Linux that provides 90+ tools enabling AI assistants to systematically manage local systems, including system probing, command execution, file editing, network diagnostics, and more.13MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to control remote machines via RustDesk, supporting device management, remote shell commands, file operations, power controls, and screen interaction.MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to control Windows PCs by executing shell commands, managing files, capturing screenshots, and monitoring system information through a comprehensive set of MCP tools.181MIT