Raccoon 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., "@Raccoon MCPcheck git status and run the tests in my workspace"
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.
Raccoon MCP / 浣熊 MCP
A local-first Model Context Protocol (MCP) server for AI-assisted development, files, processes, optional Windows desktop automation and Android tools.
面向开发者的独立本地 MCP 服务。无需安装燕子 / OpenQuickHost,也无需云服务器或域名。
Windows quick start / Windows 快速安装
Prerequisites: Windows 10/11, Node.js 22.16+, npm, PowerShell 5.1+. Git is only needed for cloning; you can also download the ZIP.
git clone https://github.com/luoluoluo22/raccoon-mcp-public.git
cd raccoon-mcp-public
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install-windows.ps1
npm run doctorThe installer runs npm ci; creates a workspace under your user profile; generates a private 256-bit local token; writes a git-ignored .env; and starts a loopback-only HTTP MCP server on port 3766. Default settings are read-only, Shell disabled, and restricted to the workspace. It never overwrites an existing .env.
可指定工作区、端口,或仅安装而暂不启动:
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install-windows.ps1 -Workspace 'D:\Workspace' -Port 3877 -NoStartStart/stop and optional login auto-start:
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\local.ps1 status
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\local.ps1 start
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\local.ps1 stop
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\local.ps1 install-autostartThe URL http://127.0.0.1:3766/mcp is local-only. Cloud-hosted ChatGPT cannot connect to it directly. For remote access use your own secure HTTPS tunnel and OAuth, explained in 部署文档.
Related MCP server: MCP Server
Linux / macOS
Core Node.js file, process, development and MCP transport tools can run on supported Node.js hosts; Windows PowerShell services, GUI automation and screenshots need Windows. Install dependencies using npm ci, copy the provided .env.example to a private .env, set RACCOON_ROOT to an existing isolated workspace and RACCOON_TOKEN to a random secret, then start:
npm ci
cp .env.example .env
# edit the private .env first
npm run start:http
# or use npm start for stdioFor Linux/macOS, check availability of any optional native components you intend to use. Windows task automation is not cross-platform.
Features
Scoped file access, reading/writing/patching, batch operations and rich document helpers
Explicitly enabled Shell, build/test steps, persistent process sessions, Git automation and development pipelines
Streamable HTTP and stdio MCP transports, local health checks and OAuth for optional remote ingress
Optional ADB tools, Windows foreground/UI automation and visual inspection
Optional outbound self-hosted relay with persistent queue and reconnect support
Safety
The Windows installer defaults to RACCOON_READ_ONLY=1, RACCOON_ENABLE_SHELL=0, RACCOON_FILESYSTEM_UNRESTRICTED=0, RACCOON_HOST=127.0.0.1. Modify these only after reading Security policy. RACCOON_ROOT is a file-tool boundary, not a Shell sandbox; enabling Shell grants the current Windows user privileges to commands. Never commit local .env, .raccoon-runtime, device tokens or personal data.
Docs and verification
npm run check
npm test
npm run verifyThe full verify suite can use extra optional native tools for smoke tests. The project currently reports package version 0.8.0 and runs GitHub Actions checks on Windows and Linux.
Old scripts named install-standalone.ps1 or handoff-yanzi-manager.ps1 are migration utilities for pre-existing local installations, not the default installation workflow.
MIT License.
Available Tools
105 toolsadb_appControl Android appCDestructive
Start, stop or clear an Android package.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| serial | No | ||
| activity | No | ||
| deepLink | No | ||
| deviceId | No | ||
| deviceName | No | ||
| packageName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, readOnlyHint=false, so the safety profile is covered structurally. The description adds nothing beyond that – it does not say which action destroys data (clear?), whether stop affects running state vs data, or what device targeting requires. 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?
A single front-loaded sentence with no filler; the action list leads. It is efficient, though arguably too terse for a 7-parameter destructive 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 destructive, multi-parameter Android control tool with no output schema and 0% parameter coverage, the description is far too thin. An agent cannot know how to select a device, what activity/deepLink do, or what clear actually removes.
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 loosely echoes the action enum values (start/stop/clear). Six parameters – serial, activity, deepLink, deviceId, deviceName, packageName – are undocumented in both schema and description, giving no guidance on device selection vs package targeting.
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 specific verbs (start, stop, clear) and a specific resource (Android package), so the function is unambiguous. However, it does not differentiate from close siblings like adb_install, adb_uninstall, or adb_packages, leaving the agent to infer when this tool is preferable.
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 or when-not-to-use guidance and no reference to alternatives such as adb_install/adb_uninstall. The agent gets no signal about prerequisites (e.g., which action is reversible) or which sibling to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_devicesList Android devicesBRead-only
List ADB devices with state, model, product and transport metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description usefully discloses the returned metadata fields (state, model, product, transport), but says nothing about filtering behavior or how the optional params affect the result set.
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 that front-loads the action and resource. No filler, though it is arguably too short given the undocumented 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 simple read-only list tool with annotations covering safety and no output schema, the definition is minimally adequate. However, the two undocumented filter parameters leave a real gap that the description should have closed.
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 two parameters (deviceId, deviceName), and the description never mentions them. The agent cannot tell whether these narrow the listing or what form they take, so the description 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?
States a specific verb (List) and resource (ADB devices) and names the returned metadata fields. It distinguishes itself from the generic sibling list_devices via the ADB qualifier, though it doesn't explicitly contrast with the other adb_* 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?
No when-to-use, prerequisites, or alternatives are given. An agent must infer that this is a discovery step before adb_shell/adb_install/adb_pull, but nothing in the description states that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_find_and_tapFind and tap Android UI nodeBDestructive
Find an Android UI node by text/resourceId/content description and tap its center instead of guessing screen coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| index | No | ||
| match | No | exact | |
| serial | No | ||
| deviceId | No | ||
| deviceName | No | ||
| resourceId | No | ||
| contentDesc | No | ||
| requireClickable | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the agent knows this is an unsafe, mutating, real-device action. The description adds only the tap mechanism (center of node), but does not disclose failure behavior (what happens if no match), multiple-match handling, or device targeting — useful context that annotations cannot supply.
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; every clause earns its place and the core action and its differentiator are 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?
For a 9-parameter, 0%-coverage mutation tool with no output schema, the description is too thin: it omits device selection, match mode (exact/contains), index semantics for multiple matches, and result/failure reporting. An agent cannot reliably invoke it from this 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?
Schema coverage is 0% and there are 9 parameters, so the description carries the full burden. It names only three matching criteria (text, resourceId, contentDesc) and leaves index, match mode, serial/deviceId/deviceName targeting, and requireClickable entirely unexplained.
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+resource ('Find an Android UI node ... and tap its center') and adds a differentiating rationale ('instead of guessing screen coordinates') that implicitly separates it from coordinate-based siblings like adb_input. It does not name the alternative tool, 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?
Usage is implied by the phrase 'instead of guessing screen coordinates', suggesting use when a target is identifiable by text/resourceId/contentDesc. However there is no explicit when-to-use/when-not guidance, no mention of adb_input or adb_ui_dump as alternatives, and no preconditions (device connected, UI settled).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_inputSend Android inputCDestructive
Send tap, swipe, text or keyevent input through adb.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| x2 | No | ||
| y2 | No | ||
| text | No | ||
| type | Yes | ||
| serial | No | ||
| keyCode | No | ||
| deviceId | No | ||
| deviceName | No | ||
| durationMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=true, so the safety profile is covered by structured data. The description adds no behavioral context beyond the operation list already present in the enum — it does not clarify device targeting, what 'destructive' means for a tap, or successful-injection side effects. With annotations carrying the load, the description's near-zero added value warrants a low score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, which is good for structure. But for an 11-parameter, four-operation tool it is under-specified rather than genuinely concise, mirroring the calibration case where sparseness is penalized as 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 multi-operation mutation tool with 11 conditional parameters and no output schema, the description leaves major gaps: which parameters select which operation, how the device is targeted (serial/deviceId/deviceName), and what a call returns. It is far short of complete 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?
Schema description coverage is 0% across 11 parameters, so the description carries the full burden — but it only echoes the four `type` enum values (tap, swipe, text, keyevent) without mapping which of x/y/x2/y2/text/keyCode/serial/deviceId/deviceName/durationMs apply to which operation. An agent gets no help resolving conditional or overlapping 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 names a specific verb (Send) and enumerates the resource/operations (tap, swipe, text, keyevent) plus the transport (adb). An agent can tell it does input injection rather than shell execution. However, it does not differentiate from siblings like adb_find_and_tap (which also taps) or adb_shell (which can run `input` too), 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 when-to-use guidance, no mention of prerequisites (a connected device/adb bridge), and no alternatives named. The agent must infer on its own that this is for direct coordinate-based input rather than element-targeted tapping via adb_find_and_tap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_installInstall Android APKCDestructive
Install an APK from the local workspace using adb install.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| apkPath | Yes | ||
| replace | No | ||
| deviceId | No | ||
| timeoutMs | No | ||
| deviceName | No | ||
| grantPermissions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds one piece of behavioral context — that the APK is read from the local workspace — but is silent on replace semantics, permission granting, and device selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler and the key action front-loaded. It is efficiently written, though brevity here is partly the product of under-specification rather than deliberate editing.
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 7-parameter mutation tool with no output schema and no annotation-level parameter help, the description is far too thin. An agent cannot tell how to pick among the device-identifier parameters or what replace/grantPermissions do.
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% across 7 parameters, so the description must carry the burden and does not. Only apkPath is obliquely referenced; the three overlapping device selectors (serial, deviceId, deviceName), replace, grantPermissions, and timeoutMs are entirely unexplained.
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 (Install) and resource (APK) and pins the source to the local workspace. It is clearly distinguishable from adb_uninstall, though it does not explicitly name siblings or what differentiates it from adb_push/adb_shell.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of which device is targeted when multiple devices are attached. It never says when NOT to use it or which alternative (adb_push, adb_shell) applies instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_logcat_startStart Android logcatBDestructive
Start persistent adb logcat and return a normal Raccoon process session for cursor reads.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| filters | No | ||
| deviceId | No | ||
| clearFirst | No | ||
| deviceName | No | ||
| maxLogBytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, so the risk profile is covered. The description usefully adds that the process is persistent and returns a session handle for cursor reads, but says nothing about the effect of clearFirst on the device log buffer or session lifetime limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the action and outcome come first. Slightly informal phrasing ("normal Raccoon process session") costs a point.
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 6-parameter session-creating tool with no output schema and destructive annotations, the description should cover parameter behavior, session lifecycle, and cleanup; it covers none of these beyond stating that a session is returned.
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?
Six parameters with 0% schema description coverage, and the description names none of them — filters, clearFirst, maxLogBytes, serial, deviceId are all unexplained, so an agent must guess formats and the destructive effect of clearFirst.
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 ("Start persistent adb logcat") and clarifies the return artifact is a Raccoon process session used for cursor reads, which distinguishes it from one-shot sibling tools like adb_shell or process_read.
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?
Implies usage via "persistent" and "for cursor reads" (stream/keep reading logs), but never states when to choose this over process_start/read_process_output or when to stop it (stop_search, kill_process). Only implicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_packagesList Android packagesCRead-only
List installed Android packages with optional third-party and text filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | ||
| serial | No | ||
| deviceId | No | ||
| deviceName | No | ||
| thirdPartyOnly | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds nothing behavioral beyond that: it does not say how the target device is chosen when serial/deviceId/deviceName are all omitted, nor whether the filter is a substring, regex, or package prefix match.
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, and the core action plus both filter axes are stated up front. It is efficient, though the brevity is partly what creates the documentation gaps.
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 five-parameter tool with 0% schema coverage and no output schema, the description is too thin. Device selection semantics, filter matching behavior, and any notion of result ordering or size are all missing, so an agent cannot call it confidently beyond the happy path.
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% across five parameters, so the description must carry the load. It only loosely gestures at two of them (thirdPartyOnly via 'third-party', filter via 'text filtering') and says nothing about the three device-targeting parameters or their precedence, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (installed Android packages) plus the filtering dimensions, so it is immediately distinguishable from mutation siblings like adb_install/adb_uninstall. It does not explicitly differentiate itself from nearby read siblings such as adb_app or adb_devices, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to pick this over adb_app, adb_devices, or adb_shell, nor does it state prerequisites such as needing a connected device or an active adb server. Usage is only implied by the word 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_pullPull file from AndroidCDestructive
Pull a file from an Android device into the local workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| deviceId | No | ||
| localPath | Yes | ||
| timeoutMs | No | ||
| deviceName | No | ||
| remotePath | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, so the agent knows a file lands on disk and something could be overwritten, but the description adds no behavioral context: it doesn't say whether the local path is overwritten, whether it requires an authorized device, or how timeouts/interruption behave. For a destructive 6-param tool, it should say more.
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, front-loaded with the action and resource, no filler. Appropriately sized even if under-informative; brevity is not the problem here.
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?
A destructive, open-world, six-parameter file-transfer tool with no output schema and no parameter coverage requires far more than one sentence. Nothing explains device targeting, overwrite semantics, or error/failure behavior, so an agent must guess.
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% across six parameters. The description mentions no parameter at all, leaving serial vs deviceId vs deviceName, remotePath/localPath, and timeoutMs fully undocumented and ambiguous (three seemingly redundant device selectors).
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 (pull) and resource (file from Android device) plus the destination (local workspace). It is clear what the tool does, but it never differentiates itself from adb_push, which is the inverse operation and the most common confusion point.
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 instead of adb_shell, adb_push, or adb_devices. With six parameters including serial/deviceId/deviceName, the description offers nothing on how to select a target device or when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_pushPush file to AndroidCDestructive
Push a local workspace file to an Android device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| deviceId | No | ||
| localPath | Yes | ||
| timeoutMs | No | ||
| deviceName | No | ||
| remotePath | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description adds only that the source is a local workspace file and the target is an Android device; it does not mention overwrite behavior, permissions, device selection, timeout behavior, 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?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise structurally, even though it is incomplete 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?
For a destructive six-parameter file-transfer tool with no output schema and zero schema description coverage, one sentence is not enough. Critical context such as overwrite semantics, device-target selection, and timeout behavior is absent.
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 six parameters, so the description must carry the explanatory burden. It only hints at localPath and the Android device target; it does not explain remotePath, serial, deviceId, deviceName, timeoutMs, or which device identifier should be used when multiple are 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 states a specific verb and resource: "Push a local workspace file to an Android device." It makes the transfer direction clear and implicitly distinguishes this from adb_pull, but it does not explicitly name or differentiate against 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 no guidance on when to use this tool versus adb_pull, adb_install, or other Android/file tools. It also does not explain device selection, prerequisites, or conditions where an alternative is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenshotCapture Android screenshotCDestructive
Capture the current Android screen through adb exec-out and return it as an MCP image.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| deviceId | No | ||
| maxBytes | No | ||
| savePath | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false, but the description never explains what could be destroyed — a screenshot appears read-only, yet savePath implies writing/overwriting a file on disk, which is left unstated. The mechanism detail (adb exec-out, MCP image return) adds some value beyond annotations, but the destructive side effect is unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence, front-loaded with the action and return type, with no wasted words. It is structurally clean, though the brevity contributes to the missing parameter and usage guidance.
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 five undocumented parameters, a destructiveHint=true annotation that is never elaborated, and no output schema, the description leaves an agent without enough to call it correctly or safely. Only the surface purpose is covered.
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?
Five parameters with 0% schema description coverage, and the description covers none of them. An agent gets no help on how to target a device (serial/deviceId/deviceName), what maxBytes bounds, or that savePath writes the image to disk.
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 ('capture the current Android screen') and even names the mechanism ('adb exec-out'), plus the return medium ('MCP image'). It does not distinguish itself from close siblings such as screenshot_capture or android_app_snapshot, so an agent cannot tell from the text alone which screenshot tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the many other capture/observation siblings (screenshot_capture, android_app_snapshot, adb_ui_dump, visual_compare). No prerequisites, no exclusions, no routing guidance at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_shellRun Android shell commandCDestructive
Run a command through adb shell on an optional target device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| command | Yes | ||
| deviceId | No | ||
| timeoutMs | No | ||
| deviceName | No | ||
| maxOutputBytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds only the minor note that the target device is optional, and says nothing about the arbitrary-command risk surface, timeouts, or output truncation, so it is minimum-viable against the annotation bar.
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, which is efficient. The terseness is arguably under-specification rather than good concision, but structurally it is clean.
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 tool with a defaulted timeout (120000 ms), an output byte cap, and three different device-identifier fields and no output schema, one sentence is insufficient. It leaves an agent unable to distinguish serial, deviceId, and deviceName or to understand output truncation 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?
Schema description coverage is 0% across six parameters, so the description carries the burden and fails: 'optional target device' hints at serial/deviceId/deviceName but never disambiguates, and command, timeoutMs, and maxOutputBytes are entirely unexplained. The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Run) and resource (a command through adb shell), which is clear on its own. However, it does not differentiate itself from the sibling shell_run or the other adb_* tools, so an agent cannot tell from the description alone why it should pick this over shell_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as shell_run or the more specific adb_install/adb_pull siblings. The agent gets no routing information beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_ui_dumpRead Android UI treeCRead-only
Run uiautomator dump and return structured UI nodes with text, resourceId, content description, bounds and interaction flags.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| deviceId | No | ||
| deviceName | No | ||
| includeXml | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the output is a structured node tree with text, resourceId, content description, bounds, and interaction flags, which is useful. It omits caveats such as dump latency or device-targeting behavior, so it 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?
A single front-loaded sentence that states the command and the exact shape of the return value with zero filler. 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 tool with four undocumented parameters, three of which appear to be redundant device selectors and one an output-format switch, the description is materially incomplete. It partially covers return values (helpful since there is no output schema) but says nothing about how to target a device or control includeXml.
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 all four parameters (serial, deviceId, deviceName, includeXml) are undocumented in the schema. The description mentions no parameters at all, so it completely fails to compensate for the coverage gap, leaving the agent to guess how to select a device or request raw XML.
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+resource ('Run uiautomator dump', 'Android UI tree') and enumerates the returned node fields, so an agent knows what the tool produces. It does not, however, distinguish this dump from the similarly oriented sibling 'android_app_snapshot' or 'adb_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 only states what the tool does; it gives no when-to-use conditions, no alternatives comparison (e.g., adb_screenshot vs this for text extraction), and no prerequisites. Usage is only implied by the title and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_uninstallUninstall Android packageBDestructive
Uninstall an Android package, optionally retaining its data.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| deviceId | No | ||
| keepData | No | ||
| timeoutMs | No | ||
| deviceName | No | ||
| packageName | 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 agent knows this is a destructive write. The description usefully adds that package data can be retained, which is real behavioral context beyond the annotations, but it never says what is actually removed, whether the uninstall is reversible, 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?
A single front-loaded sentence with zero filler. The core action leads and the one behavioral caveat follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, multi-device tool with six undocumented parameters and no output schema, the description is too thin: it omits device selection semantics, timeout behavior, and failure/return expectations. Annotations cover the safety profile, but the invocation-relevant gaps remain.
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% across 6 parameters, so the description carries the full burden and largely fails it. It alludes to the keepData option ('retaining its data') without naming it, and says nothing about serial, deviceId, deviceName, or timeoutMs, leaving device targeting and timeouts undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Uninstall an Android package'), which clearly separates it from adb_install, adb_packages, and adb_app. It does not explicitly name or contrast a sibling tool, 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?
No when-to-use guidance, no prerequisites (e.g., whether the device must be connected/selected), and no alternatives named. The only conditional hint is 'optionally retaining its data', which is a capability note rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_app_snapshotAndroid app state snapshotBRead-only
Return package version, PID, resumed activity and relevant crash-buffer state for one Android package.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | ||
| deviceId | No | ||
| crashLines | No | ||
| deviceName | No | ||
| packageName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds useful context by naming the returned state fields, but it does not explain device targeting behavior, crash-buffer retrieval limits, or any operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the return contents and scope without any wasted 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?
With five parameters, 0% schema description coverage, and no output schema, the description is not complete enough. It names some returned fields but does not compensate for the missing parameter semantics or device-selection 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?
Schema description coverage is 0%, and the description only vaguely implies packageName and crash-buffer state. It does not explain serial, deviceId, deviceName, packageName format, or the crashLines default and maximum, leaving most parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: return package version, PID, resumed activity, and crash-buffer state for one Android package. The scope is clear, though it does not explicitly distinguish itself from sibling tools such as adb_app or adb_packages.
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 snapshot versus alternatives like adb_app, adb_packages, or adb_shell. Usage is only implied by the word 'snapshot' and the returned fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
android_dev_cycleAndroid development cycleCDestructive
Build, install a development APK, restart it, wait for startup, assert UI text, inspect crash state, and verify an optional production package was not changed.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| smoke | No | ||
| runner | No | default | |
| serial | No | ||
| apkPath | Yes | ||
| activity | No | ||
| deviceId | No | ||
| textMatch | No | contains | |
| crashLines | No | ||
| deviceName | No | ||
| packageName | Yes | ||
| buildCommand | Yes | ||
| expectedTexts | No | ||
| buildTimeoutMs | No | ||
| grantPermissions | No | ||
| installTimeoutMs | No | ||
| startupTimeoutMs | No | ||
| productionPackage | No | ||
| preserveProduction | No | ||
| maxBuildOutputBytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds genuinely new behavioral content beyond that: the exact pipeline order, the startup wait, the UI-text assertion step, and the fact that an optional production package is checked for modification. It still omits what 'destructive' concretely means here (app overwrite/reinstall, data loss), permission/auth needs, and failure behavior for a 20-parameter mutating pipeline.
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 zero filler, and the clauses are ordered to match execution, so it reads as a pipeline rather than a word salad. It is a long grocery-list construction rather than structured prose, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 20-parameter, no-output-schema, destructive orchestration tool, the description is far too thin: it says nothing about what the pipeline returns on success, how partial failures (build ok / install ok / assertion fail) are surfaced, or which optional stages the many boolean/enum knobs toggle.
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% across 20 parameters, so the description carries the full burden and largely fails it. It only obliquely maps to a handful of inputs (buildCommand, apkPath, expectedTexts, crashLines, productionPackage), leaving cwd, runner, serial, deviceId/deviceName, activity, textMatch, grantPermissions, preserveProduction, all three timeout knobs, maxBuildOutputBytes and smoke completely unexplained.
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, ordered sequence of verbs over one resource family (build → install APK → restart → wait → assert UI text → inspect crash → verify production package), which is far more than a tautology. It is clear what the tool does, but it never distinguishes itself from the many lower-level siblings (adb_install, adb_shell, adb_ui_dump, adb_app) it evidently orchestrates.
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 or when-not-to-use guidance, and no alternatives are named. The name 'cycle' plus the verb list implies it is the one-shot path over the granular adb_* tools, but the agent must infer that entirely; no conditions, prerequisites, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_cache_clearClear build cacheCDestructive
Clear one content-addressed build-cache key or the entire cache.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the danger is covered. The description adds the useful scope fact that clearing can range from one key to the entire cache, but says nothing about permissions, irreversibility, or how deviceId/deviceName affect the target.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action front-loaded and no filler. It is efficient, though arguably too terse given the parameter and safety burden it must carry.
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 mutation tool with no output schema and 0% parameter coverage, the description is too thin. It omits what 'clear' actually destroys, the effect of omitting key, and the role of the device parameters, leaving an agent unable to invoke it confidently beyond the simplest 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 description coverage is 0% across 3 parameters, so the description carries the burden. It hints at the 'key' parameter ('one content-addressed build-cache key') and implies omission clears everything, but deviceId and deviceName are entirely unexplained in both schema and 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?
States a specific verb (clear) and resource (build cache) with two clear scopes: a single content-addressed key or the entire cache. It is naturally distinguishable from siblings build_cache_run and build_cache_stats, though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to clear a single key versus the whole cache, no prerequisites, and no reference to alternative tools. The two modes are mentioned but the selection criteria between them is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_cache_runRun cached buildBDestructive
Hash declared inputs and command, restore cached outputs on hit, or run and cache outputs on miss.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| force | No | ||
| inputs | No | ||
| command | Yes | ||
| outputs | No | ||
| restore | No | ||
| deviceId | No | ||
| timeoutMs | No | ||
| deviceName | No | ||
| environment | No | ||
| maxOutputBytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true, so the agent already knows this runs something with side effects. The description adds genuinely useful cache semantics (hash-based key, restore-on-hit, write-on-miss), which goes beyond the annotations, but it never states what 'restore cached outputs' overwrites, what happens on a failed run, or that an arbitrary command is executed with disk writes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the mechanism and walks through hit and miss paths. No filler, no 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 an 11-parameter, destructive, open-world build runner with no output schema and 0% parameter documentation, the description is too thin. It does not explain parameter behavior, cache-key composition beyond 'declared inputs', failure handling, or what a caller should expect to get back.
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% across 11 parameters, and the description only alludes to three of them (command, inputs, outputs). Key controls like force, restore, cwd, environment, timeoutMs, maxOutputBytes, deviceId and deviceName are undocumented in both schema and description, leaving most of the surface unexplained.
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 mechanism with concrete verbs and resources: hash inputs+command, restore outputs on hit, run and cache on miss. An agent can immediately tell this is a cached build runner. It does not, however, explicitly differentiate itself from near-siblings like build_cache_clear, build_cache_stats, or project_build_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?
There is no explicit when-to-use guidance, no mention of when a cache hit vs miss matters to the caller, and no routing to alternatives such as build_cache_clear or shell_run. Usage is only implied by the description of the hit/miss mechanics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_cache_statsBuild cache statisticsBRead-only
List build-cache entries, hit counts and disk usage.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | 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 by structured data. The description adds what data is surfaced (entries, hit counts, disk usage), which is useful, but says nothing about filtering by device, scoping, or result volume.
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 names the verb and the exact data returned with zero 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 read-only stats tool with no output schema, naming the returned data is largely sufficient. However, the unexplained deviceId/deviceName parameters and the absence of any device-scoping statement leave a 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?
Schema description coverage is 0% and the two parameters (deviceId, deviceName) are entirely undocumented in both schema and description. The description mentions no parameters at all, so it does not compensate for the coverage gap; an agent cannot tell whether these are filters or required identifiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (build-cache entries, hit counts, disk usage), so an agent can immediately tell what the tool returns. It does not explicitly contrast itself with siblings like build_cache_clear or build_cache_run, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the closely related build_cache_clear and build_cache_run tools, nor any prerequisites mentioned. The agent must infer the 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.
cloudflare_deploy_verifyCloudflare deploy and verifyCDestructive
Run one deployment command, wait for a new deployment/version condition, capture values, optionally activate traffic using captured values, then run secret-aware HTTP/API assertions.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| probes | No | ||
| runner | No | default | |
| deviceId | No | ||
| deviceName | No | ||
| versionProbe | No | ||
| deployCommand | Yes | ||
| activateRunner | No | default | |
| maxOutputBytes | No | ||
| activateCommand | No | ||
| deployTimeoutMs | No | ||
| activateTimeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, openWorldHint=true, so the risk profile is covered. The description adds genuine pipeline context the annotations cannot convey: it waits on a version/deployment condition, captures values, conditionally activates traffic with those values, and performs 'secret-aware' assertions (matching the secretRef schema). However it omits what gets destroyed, whether activation is irreversible, and how failures mid-pipeline 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?
A single front-loaded sentence that walks the pipeline in execution order with no filler or repetition. It is efficient, though the comma-chained clauses make it dense for a tool with this much surface area.
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 12-parameter, deeply nested orchestration tool with no output schema and no annotation detail, one sentence is insufficient. It omits failure/rollback behavior, what captured values are and how they feed activation, and how secret references are resolved – all of which an agent needs before invoking a destructive, open-world pipeline.
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% across 12 parameters with heavy nesting, so the description carries the full burden. It loosely gestures at deployCommand, versionProbe/capture, activateCommand, and probes/assertions, but leaves cwd, runner, deviceId, deviceName, all timeouts, and maxOutputBytes unexplained, and adds no format or meaning beyond parameter 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 names a concrete verb sequence (run deploy → wait for version condition → capture → activate → assert) on a named resource (Cloudflare deployment), so the composite purpose is clear. It does not explicitly contrast with siblings like http_probe, wait_until, shell_run, or dev_pipeline_start, which all overlap with sub-steps of this workflow, so sibling differentiation is missing.
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 statement of when to use this orchestrated tool versus the individual siblings that do the same steps (shell_run for the deploy command, http_probe for assertions, wait_until for condition polling). Usage is only implied by the step list; no prerequisites, preconditions, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_fileCopy file or directoryCDestructive
Copy a file or directory recursively.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| destination | 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 mutation profile is covered. The word 'recursively' adds real behavioral context (whole subtree is copied), but the description omits critical traits: whether an existing destination is overwritten, whether it fails or merges, and permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though arguably underspecified rather than optimally concise for a destructive mutation 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?
No output schema, no parameter documentation, and only an annotation-level safety signal. For a destructive recursive copy with device-targeting parameters, an agent still lacks overwrite semantics, failure behavior, and any parameter meaning.
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 adds nothing about the four parameters. Two non-obvious fields (deviceId, deviceName) are left completely unexplained as to what they target or whether they are optional. It does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (copy) and resource (file or directory) plus the recursive scope, which distinguishes it from a shallow single-file copy. It does not explicitly name siblings like move_file or delete_path, but the copy verb naturally separates it from those.
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 versus move_file, fs_write_* alternatives, or device-targeted transfer tools (adb_push). Nothing about prerequisites, destination existence, or overwrite conditions is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_directoryCreate directoryCDestructive
Create a directory recursively.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare `readOnlyHint=false`, `destructiveHint=true`, and `openWorldHint=false`, so the agent knows this is a mutating, potentially destructive operation. The description adds one behavioral detail—that creation is recursive—but does not explain what gets destroyed, whether existing directories are overwritten, or what permissions are required, leaving meaningful gaps.
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 with the verb front-loaded and zero filler. It contains no redundant or vague phrasing.
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 three parameters (one required, two optional), no output schema, and no schema descriptions, the description is far too sparse. It omits parameter semantics, error behavior, and any elaboration on the `destructiveHint` annotation, leaving the agent under-informed about how to call 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% for three parameters (`path`, `deviceId`, `deviceName`), and the description adds no meaning to any of them. It does not clarify the expected path format, whether `path` is absolute or relative, or what the optional device parameters are 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 specific verb ('Create') and resource ('directory'), making the tool's basic purpose immediately clear. It does not, however, distinguish itself from sibling tools or clarify scope beyond the word 'recursively'.
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 versus alternatives like `list_directory`, `write_file`, or other filesystem operations. The adverb 'recursively' hints at a condition (creating parent directories) but does not constitute usage guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_executeExecute SQLite statementBDestructive
Execute mutating SQLite SQL or a parameterized statement.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| file | Yes | ||
| params | No | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, and the description's 'mutating' is consistent with them. It adds the parameterized-statement capability but says nothing about transaction semantics, what data can be destroyed, permission requirements, or error behavior for a destructive open-world operation.
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 redundancy. It is efficient, though its brevity borders on under-specification for a five-parameter destructive 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?
A destructive mutation with five undocumented parameters and no output schema warrants more than one clause. Nothing tells the agent which database file is targeted, how params binds, or what a successful execution returns.
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% with five parameters, so the description carries the full burden. 'Parameterized statement' hints at the params field but file, deviceId, and deviceName are left entirely undefined in both schema and prose.
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 (Execute) plus resource (SQLite SQL / parameterized statement), and the word 'mutating' carves out the write side. It does not name the sibling it is distinct from, so an agent must infer the split against db_query_start on its own.
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 'mutating' implies this is for writes rather than reads, which is a weak but real usage signal. There is no explicit when/when-not and no reference to db_query_start/db_query_next/db_info as the read-path alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_infoInspect SQLite databaseBRead-only
Inspect SQLite schema and basic page/database metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| deviceId | No | ||
| deviceName | 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 that it returns schema plus page/database metadata, but says nothing about permissions, the file being opened read-only, or failure modes. With annotations carrying the safety bar, 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?
A single tight sentence with no filler, front-loaded on the verb and resource. Nothing wastes space.
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 inspection tool with full annotation coverage and no output schema, the description is broadly adequate, but it leaves the file/deviceId/deviceName parameters entirely unexplained, which is a notable gap for invocation correctness.
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 explains none of the three parameters. It never clarifies what "file" points to (a path? on which device?) or what deviceId/deviceName are for, leaving a real ambiguity an agent must guess at.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Inspect") and resource ("SQLite schema and basic page/database metadata"), which clearly distinguishes it from query-execution siblings like db_execute and db_query_start. It does not explicitly name those alternatives, but the read-only inspection framing 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 when-to-use guidance, no prerequisites, and no routing to alternatives such as db_execute or db_query_start. The agent is left to infer that this is the read-only structural-inspection tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_query_closeClose SQLite queryBRead-only
Close a retained SQLite query session and database handle.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| sessionId | Yes | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful scope by saying both the session and the database handle are released, but omits idempotency, error behavior for an unknown/expired sessionId, and whether other sessions are affected. Note the mild tension between 'Close' (a state change) and readOnlyHint=true, though this is resource cleanup rather than data mutation, so it is not a true 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 front-loaded sentence with no filler. Every word carries information about the operation and its targets.
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 lifecycle/cleanup tool with no output schema and zero parameter documentation, the description is too thin: it never explains the session lifecycle, the role of the optional device parameters, or failure modes. An agent can guess the call but not call it confidently in 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% across three parameters. The word 'session' loosely implies sessionId, but deviceId and deviceName are entirely undocumented in both schema and description, and nothing explains how the three relate or which must be supplied. The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Close) and resource (retained SQLite query session and database handle), which is clearly distinguishable from the db_query_start/db_query_next/db_query_sessions siblings in the same family. It stops short of naming the sibling that creates the session it closes, so differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance: it does not say to call this after db_query_next is exhausted, whether closing is mandatory for cleanup, or what happens if the session is still active. The agent must infer the lifecycle role 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.
db_query_nextRead next SQLite query batchCRead-only
Read the next rows from a retained SQLite streaming query iterator.
| Name | Required | Description | Default |
|---|---|---|---|
| maxRows | No | ||
| deviceId | No | ||
| sessionId | Yes | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The phrase 'retained streaming query iterator' usefully signals server-side session state that persists across calls, but the description does not disclose drain/termination behavior or lifecycle coupling to db_query_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 tight sentence with the key qualifiers ('next', 'retained', 'streaming') front-loaded. It is not padded, though it is arguably too terse for a 4-parameter stateful 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 stateful iteration tool with no output schema and 0% schema description coverage, the description leaves critical gaps: how batches are bounded, how completion is signaled, and how the sessionId relates to db_query_start/db_query_close. Annotations cover only the safety profile, not the iteration contract.
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% across 4 parameters, so the description must carry the load, and it adds nothing: sessionId's required-ness and origin, maxRows' default of 500 and max of 100000, and the deviceId/deviceName roles are all unexplained. An agent must guess that sessionId comes from db_query_start.
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 (Read) and resource (next rows from a retained SQLite streaming query iterator), which clearly distinguishes it from db_query_start, db_query_sessions, and db_query_close among the siblings. It does not explicitly name which sibling precedes it, but the 'next' framing makes the pagination role inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to call this versus db_query_start, db_query_close, or db_execute, nor that a prior db_query_start session must exist. Nothing states termination conditions or what to do when the iterator is exhausted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_query_sessionsList SQLite query sessionsCRead-only
List currently retained SQLite streaming query sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that only currently retained streaming sessions are returned, which is useful context, but says nothing about return format, pagination, or how sessions become retained.
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, which fits a simple list operation. It is efficient, though its brevity contributes to the missing usage and parameter context.
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 two undocumented optional filter parameters, no output schema, and closely related siblings (db_query_start/next/close, list_sessions), the definition leaves key gaps: what 'retained' means, whether filters are required together, and when this tool belongs in a query workflow.
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 is completely silent on deviceId and deviceName, so the agent gets no hint that these are optional filters or how they interact. This fails to compensate 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?
States a specific verb (List) and resource (SQLite streaming query sessions), and 'currently retained' narrows scope. It is clearer than the generic sibling list_sessions, but does not explicitly distinguish itself from db_query_start/db_query_next/db_query_close or explain what a retained session is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives, and no condition telling the agent to prefer this over list_sessions or the other db_query_* tools. 'Currently retained' implies a context but does not instruct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_query_startStart streaming SQLite queryBRead-only
Prepare a SQLite query, return its first batch, and retain the iterator for subsequent batches.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| file | Yes | ||
| params | No | ||
| deviceId | No | ||
| readOnly | No | ||
| batchRows | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only, non-destructive, and closed-world. The description adds meaningful behavioral context beyond that: it returns only the first batch and retains an iterator for later batches, which is a non-obvious side effect. It still omits iterator cleanup and error behavior, but the added disclosure is strong for a single sentence.
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 front-loaded sentence with no filler. Every phrase adds information: query preparation, first-batch return, and iterator retention.
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, 0% schema description coverage, and 7 parameters, the description is insufficient for correct invocation. It covers the core streaming purpose but omits parameter semantics, follow-up batch mechanics, and when to use this versus sibling query 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?
The schema has 0% description coverage across 7 parameters, so the description carries the full burden of explaining parameter meaning. It says nothing about sql, file, params, deviceId, readOnly, batchRows, or deviceName, leaving them documented only by 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 and resource: prepare a SQLite query, return the first batch, and retain the iterator. This clearly distinguishes it from a simple execute tool and implies a streaming workflow, though it does not explicitly name db_query_next or db_query_close as the follow-up 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 implies usage context by mentioning 'first batch' and 'subsequent batches,' so an agent can infer this is for streaming/paginated queries. However, it gives no explicit when-to-use guidance versus db_execute, db_query_next, or db_query_close.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pathDelete pathCDestructive
Delete a file or directory recursively.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| deviceId | No | ||
| recursive | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered externally. The description adds only the word 'recursively', and that claim is misleading since the schema exposes a `recursive` boolean defaulting to false, implying recursion is opt-in rather than automatic. No mention of permanence, protection, or auth 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?
A single short sentence that is front-loaded and wastes no words. However, the brevity reflects under-specification rather than tightness, leaving the most important details unstated.
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, 4-parameter tool with no output schema and no annotation-level guidance on irreversibility or permissions, the description is far too thin. An agent cannot determine device scoping or that recursion is optional from the text 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?
Schema description coverage is 0% for 4 parameters (path, deviceId, recursive, deviceName). The description touches on the file/directory distinction and recursion but does not document deviceId, deviceName, or the optional nature of `recursive`, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (file or directory) with a scope qualifier (recursively). It is clearly distinguishable as the destructive-delete operation, though it does not name or contrast with any sibling 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?
There is no indication of when to use this tool versus alternatives such as fs_write_text, move_file, or copy_file, nor any prerequisites or cautions about when not to use it. The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_actionsRun Windows desktop actionsADestructive
Run a batch of Windows mouse, keyboard, scroll, wait and window-activation actions. Foreground control is acquired automatically, a visible AI-control overlay is shown for the whole batch, heartbeat is maintained, and the lease is released when complete. Pass leaseId only when intentionally joining a manually acquired foreground-control session.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | 操作电脑 | |
| owner | No | ChatGPT | |
| ttlMs | No | ||
| actions | Yes | ||
| leaseId | No | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: auto foreground-control acquisition, a visible AI-control overlay for the whole batch, continuous heartbeat, and automatic lease release on completion. These lifecycle traits are genuinely extra context the destructiveHint/openWorldHint flags don't 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?
Three front-loaded sentences: purpose first, then lifecycle guarantees, then the conditional leaseId rule. 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?
No output schema, so the agent relies on the description for return behavior, which it partly covers via the batch lifecycle (overlay, lease release). Combined with annotations carrying the safety profile, it is mostly complete, though the action variants and the meaning of task/ttlMs remain unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 params, and the description only clarifies leaseId semantics. The core 'actions' structure, task, owner, ttlMs, deviceId and deviceName are left entirely to schema inference, so it adds meaning for only one 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?
States a specific verb (Run) and resource (a batch of Windows mouse, keyboard, scroll, wait and window-activation actions), enumerating the action categories the tool covers. This is enough to distinguish it from the foreground_control_* and adb_input siblings 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 implicitly routes the agent away from foreground_control_acquire by stating control is acquired automatically, and gives an explicit condition for leaseId ('only when intentionally joining a manually acquired foreground-control session'). It does not explicitly state when-not to use it or contrast with Android/process-injection siblings, keeping it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_windowsList Windows desktop windowsARead-only
List visible top-level Windows windows with title, process ID and native handle. This is read-only and does not claim foreground control.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral scope beyond that: it lists only *visible top-level* windows, names the returned fields, and explicitly disclaims foreground control. It does not cover enumeration limits, ordering, or failure modes, so it falls short of a 5.
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 verb and resource front-loaded, and no filler. The second sentence is a useful constraint rather than padding, though it could have been folded into the first for tighter 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?
No output schema exists, and the description does disclose the return shape (title, PID, handle), so return-value burden is met. What is missing is any guidance on the two parameters, a minor but real gap for a tool with 0% schema coverage.
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 says nothing about deviceId or deviceName. With two undocumented parameters, the description does not compensate for the gap; an agent cannot tell whether deviceId scopes the enumeration to a remote device or is optional/ignored when omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List visible top-level Windows windows' plus the returned fields (title, process ID, native handle). It also carves itself away from the foreground-control family, though it stops short of naming a specific sibling tool. Clear and actionable, but sibling differentiation is indirect.
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 clause 'does not claim foreground control' implies this is a passive inspection tool and hints that foreground_control_acquire is the alternative for control, but no explicit when-to-use or alternative is named. Usage is only implied, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dev_pipeline_cancelBDestructive
Cancel queued nodes and terminate owned process trees. Already-started external side effects are not automatically rolled back. Poll state until active nodes settle.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| confirmInterrupted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: it clarifies the scope ('owned process trees') and warns that 'Already-started external side effects are not automatically rolled back' and that active nodes settle asynchronously.
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, front-loaded sentences that each carry distinct information: the action, the rollback caveat, and the settling behavior. 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 destructive mutation with annotations covering safety, the description discloses the key non-obvious traits (no rollback, eventual settling). However, with 0% schema coverage and no output schema, the parameters remain entirely undocumented, which is a notable gap for a 4-param 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% across 4 parameters (runId, deviceId, deviceName, confirmInterrupted), yet the description explains none of them. It doesn't clarify what runId identifies, when deviceId/deviceName are needed, or what confirmInterrupted gates — leaving the entire param surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Cancel queued nodes and terminate owned process trees.' Clear within the dev_pipeline family that this is the cancellation tool. It doesn't explicitly contrast with sibling alternatives like force_terminate or dev_pipeline_wait, so sibling differentiation is only implicit.
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?
'Poll state until active nodes settle' gives an implied follow-up workflow (poll dev_pipeline_status), but the description never states when to use this vs dev_pipeline_wait or force_terminate, nor any preconditions for cancellation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dev_pipeline_listCRead-only
List persistent pipeline runs, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and a closed world, so the safety profile is covered. The description adds one real behavioral fact beyond the annotations – ordering is newest-first – but says nothing about pagination, how many runs exist, or what a 'persistent' run is.
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 compact sentence with the ordering constraint front-loaded and no wasted words. Efficient, though the brevity is partly achieved by omitting needed content rather than by tight editing.
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 list tool with no output schema, the description carries no information about filtering parameters, result shape, or default limits despite three undocumented parameters. An agent has to guess how deviceId/deviceName narrow the 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?
Schema description coverage is 0% for three parameters (limit, deviceId, deviceName), and the description mentions none of them. It does not explain that results can be scoped by device or capped by limit, so it fails to compensate for the documentation 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?
Clear verb+resource: 'List persistent pipeline runs.' An agent can distinguish this from dev_pipeline_status (single run) and dev_pipeline_logs without opening a schema. However, 'persistent' is ambiguous and no sibling is named explicitly, 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 statement of when to use this versus dev_pipeline_status, dev_pipeline_logs, or dev_pipeline_wait, nor any prerequisites. Usage context is left entirely to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dev_pipeline_logsBRead-only
Read bounded persisted node logs. Logs may contain command output; no automatic secret scrubbing.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| nodeId | Yes | ||
| offset | No | ||
| attempt | No | ||
| deviceId | No | ||
| maxBytes | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read profile (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description still adds real value beyond them: logs may contain command output and there is no automatic secret scrubbing, a genuine security-relevant disclosure an agent should act on.
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 front-loaded and the safety caveat second. No wasted 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 7-parameter tool with no schema descriptions and no output schema, the definition is too thin. It does not explain how logs are keyed, how to page via offset/maxBytes, or the relationship of attempt and device parameters, so an agent cannot call it precisely.
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 7 parameters with 0% schema description coverage, so the description carries the full burden and falls short. It never explains runId/nodeId selection, or the offset/attempt/maxBytes/deviceId/deviceName parameters, leaving pagination and device targeting entirely opaque.
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 (Read) and resource (bounded persisted node logs) with meaningful scope words 'bounded' and 'persisted'. It is distinguishable from siblings like dev_pipeline_status or read_process_output, though it does not explicitly name the pipeline family or contrast with 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?
No when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must infer from the resource noun alone that this retrieves logs for a pipeline node rather than live process output or pipeline status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dev_pipeline_resumeADestructive
Retry selected nodes and their descendants, preserving other completed results. Interrupted executions require reconciliation before confirmInterrupted=true. Resume does not change commands; submit a new graph to change them.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | No | ||
| runId | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| confirmInterrupted | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: non-selected completed results are preserved, interrupted runs require a reconciliation gate before confirmInterrupted=true, and commands are immutable across resume. With destructiveHint=true already declared, it usefully clarifies blast radius, though it doesn't state what happens to failed (non-completed) nodes.
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 dense sentences, zero filler, with the core retry semantics front-loaded and the reconciliation caveat and command-immutability follow-up each earning their 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 5-param mutation tool with no output schema, the description covers the nontrivial resume semantics and the confirmInterrupted gate well. It is not fully complete because device/run identifier parameters are undocumented anywhere.
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 schema documents nothing and the description must carry the load. It gives meaning to nodes ('selected nodes and their descendants') and indirectly to confirmInterrupted, but leaves runId, deviceId, and deviceName completely unexplained.
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 (retry/resume) and resource (selected pipeline nodes and descendants) with the key scoping constraint of preserving other completed results. It is clearly distinct from dev_pipeline_start via the 'submit a new graph' note, though it never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-condition ('Interrupted executions require reconciliation before confirmInterrupted=true') and routes the change-command case to a new graph instead of this tool. It stops short of an explicit when-not/alternatives sentence naming dev_pipeline_start or dev_pipeline_cancel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dev_pipeline_startBDestructive
Start a persistent background DAG. Returns immediately. Locks coordinate pipelines in this service; use matching lock names for shared resources. Retries require idempotent nodes.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| pipeline | Yes | ||
| deviceName | No | ||
| idempotencyKey | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (not read-only, open-world, destructive); the description adds genuinely useful behavior beyond them: the call returns immediately (async), the DAG persists in the background, lock names coordinate shared resources, and retries are only safe for idempotent nodes. It still does not explain what the destructive aspect is or how results are later retrieved.
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 short sentences, each carrying a distinct operational fact, with the core behavior ('Returns immediately') front-loaded. 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 tool with a large nested schema, no output schema, and 0% parameter documentation, the description is far too thin: it omits how to observe the run (dev_pipeline_status/logs/wait), what the returned handle is, and most node configuration semantics. The runtime behavior notes help but do not cover the calling surface.
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% across a 4-parameter schema with a deeply nested pipeline object (nodes with dependsOn, retries, timeoutMs, capture, retryUntil, etc.). The description only touches node 'locks' and node 'idempotent'; deviceId, deviceName, idempotencyKey, pipeline.name, cwd, parallelism and the bulk of node fields are unexplained anywhere.
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 ('Start a persistent background DAG') that an agent can distinguish from validate/status/list/wait siblings. It does not, however, differentiate itself from dev_pipeline_resume or process_start, which also launch work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'persistent background DAG' hints this is for fire-and-forget orchestration, and the lock/idempotency notes give modeling guidance. There is no explicit 'use this instead of X' or precondition statement against the many sibling pipeline tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dev_pipeline_statusCRead-only
Read pipeline state, bounded result tails and artifact paths.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that result tails are 'bounded' (i.e., truncated output), but says nothing about permissions, latency, 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?
A single front-loaded sentence with no filler. It is efficient, though bordering on under-specification rather than genuinely tight.
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 taking a required run identifier plus device scoping, the description never explains what the parameters select or what a caller should expect to receive. No output schema exists, so the description should carry more of this burden than it does.
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% across three parameters, and the description adds no meaning for runId, deviceId, or deviceName. With a required UUID runId and two undocumented optional device parameters, the description fails to compensate for the schema gap at all.
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) and resource (pipeline state) plus what it surfaces (result tails, artifact paths), which is clearer than a bare name restatement. However, it does not distinguish itself from close siblings like dev_pipeline_logs, dev_pipeline_wait, or dev_pipeline_list, so an agent cannot confidently route between them from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no preconditions, and no named alternative. With six sibling dev_pipeline_* tools sharing this namespace, the absence of any routing signal is a meaningful gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dev_pipeline_validateARead-only
Validate a persistent task DAG with variable capture, safe conditions, retryUntil polling, locks and explicit runners without executing it.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| pipeline | Yes | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description corroborates this by promising no execution. It goes further to enumerate the constructs it validates (variable capture, conditions, retryUntil polling, locks, explicit runners), giving the agent a real sense of validation scope.
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; the non-execution qualifier appears at the end where it lands with impact. Dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool validating a 256-node DAG schema with many nested options and no output schema, the description omits what a validation result contains (error list, schema violations) and how failures are reported. Adequate 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 on a deeply nested pipeline object, the description must carry the burden. Its feature list (capture, conditions, retryUntil, locks, runners) loosely maps to nested fields but gives no syntax, constraints, or guidance on the deviceId/deviceName 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?
States a specific verb (validate) and resource (persistent task DAG) and adds the crucial scope qualifier 'without executing it.' This implicitly separates it from execution siblings like dev_pipeline_start, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without executing it' implies this is a dry-run/pre-flight check, but the description never states when to prefer it over dev_pipeline_start or what a passing/failing result should trigger. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dev_pipeline_waitBRead-only
Wait up to 30s for revision change or completion; supply last revision to avoid polling unchanged state. Tasks continue if this request disconnects.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | ||
| waitMs | No | ||
| deviceId | No | ||
| deviceName | No | ||
| afterRevision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful non-annotation context: the 30s ceiling and, crucially, that 'tasks continue if this request disconnects' — a server-side async behavior an agent cannot infer from 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?
Two efficient clauses with the behavioral payoff (wait scope, revision hint, disconnect safety) front-loaded and no filler. Slightly compressed to the point of omitting needed detail, but structurally sound.
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, 5 params at 0% coverage, and a timing-sensitive tool, the description should clarify what is returned on timeout vs. completion and the role of the device params. It conveys the wait semantics well but leaves the parameter surface and timeout outcome 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?
Schema description coverage is 0%, so the description must carry parameter meaning, but it only addresses two of five params indirectly (the '30s' cap maps to waitMs, 'last revision' maps to afterRevision). runId, deviceId, and deviceName are left entirely unexplained in both schema and prose.
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+resource ('wait' on a dev pipeline revision/completion) and its scoping behavior ('up to 30s'). An agent can tell it is a long-poll wait tool, but the description never names the sibling it complements (dev_pipeline_status) or contrasts with wait_until, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives conditional guidance for one parameter ('supply last revision to avoid polling unchanged state'), which implies usage, but never states when to prefer this over dev_pipeline_status or wait_until, nor any prerequisites for calling it. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_blockEdit blockCDestructive
Perform exact text replacement, DOCX XML replacement, or Excel range update.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | ||
| content | No | ||
| deviceId | No | ||
| file_path | Yes | ||
| deviceName | No | ||
| new_string | No | ||
| old_string | No | ||
| expected_replacements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the write/mutation nature is covered structurally. The description adds almost nothing beyond that: it does not say matches must be exact and unique, what happens when old_string is missing or ambiguous, how expected_replacements guards against unintended edits, or how DOCX/Excel edits alter the underlying file. For a destructive multi-mode editor this is a significant 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 tight sentence with no filler, and the three modes are front-loaded so an agent can scan it quickly. It is terse rather than padded, though the brevity reflects under-specification rather than disciplined 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 an 8-parameter, destructive, multi-format edit tool with 0% schema documentation and no output schema, one sentence is not enough. An agent cannot reliably determine mode selection, required companion parameters, or failure behavior from what is provided.
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 8 parameters, so the description carries the full burden and largely fails. It hints that old_string/new_string/expected_replacements drive text replacement and that range/content drive Excel updates, but it never explains how parameters map to modes, what 'content' accepts, or the role of deviceId/deviceName. Only partial compensation for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('edit') and enumerates three distinct operation modes (exact text replacement, DOCX XML replacement, Excel range update), which tells an agent what the tool can do. However, it offers no differentiation from closely related siblings such as fs_write_text, fs_apply_patch_many, or write_file, leaving mode selection ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this tool over the many file-mutation siblings, nor any prerequisites, exclusions, or guidance on which of the three modes applies to which file type. An agent must infer everything from the one-sentence mode list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
force_terminateForce terminate managed processCDestructive
Terminate a persistent process started through Raccoon.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful scoping fact that the target is a Raccoon-managed persistent process, but it does not explain what 'force' means (SIGKILL vs. graceful signal), whether buffered output is lost, or whether the process must be currently running.
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 and no redundant restatement of the title. Its terseness is arguably the flaw, but it is not padded or poorly structured.
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, 3-parameter mutation tool with 0% schema coverage, no output schema, and multiple competing kill/stop siblings, the description is too thin. It omits force-vs-graceful semantics, required process identity beyond a bare pid, and any indication of failure modes when the pid is not Raccoon-managed.
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% across 3 parameters, so the description carries the full burden and does not compensate: it never mentions pid, deviceId, or deviceName, nor how to disambiguate a process on one device versus another. It only implies that some process identifier is the target.
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 (Terminate) and resource (persistent process) and narrows the scope with 'started through Raccoon', which implicitly separates it from generic OS-level killers. However, the sibling set contains kill_process, process_kill, and stop_search, and the description never explicitly contrasts itself with them, so an agent must infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all, despite several overlapping termination/stop siblings (kill_process, process_kill, stop_search). Nothing states the precondition that the process must be one tracked by Raccoon, nor when force termination is preferable to a graceful stop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreground_control_acquireAcquire foreground controlCDestructive
Reserve the human-interaction foreground for AI GUI work and show a topmost Windows overlay until released or heartbeat expiry.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | 操作电脑 | |
| owner | No | ChatGPT | |
| ttlMs | No | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false. The description adds genuinely useful context beyond them: a topmost Windows overlay is created and the hold is lease-based, ending on release or heartbeat expiry. It still omits the critical conflict case (what happens if the foreground is already held) and any permission/error 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 front-loaded sentence that states purpose and termination condition with no filler. Efficient, though for a 5-parameter lease tool the brevity borders on under-specification rather than being purely 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 5-parameter, zero-coverage, no-output-schema tool, the description leaves major gaps: parameter meanings, conflict/preemption behavior, and acquisition failure modes are all unstated. Annotations carry the safety profile, but the functional contract is thin.
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% across 5 parameters. The description clarifies none of them – task, owner, deviceId, deviceName are unexplained, and ttlMs is only obliquely implied by 'heartbeat expiry' with no units, bounds, or default noted. The description does little to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reserve/acquire) and resource (the human-interaction foreground) plus the visible effect (topmost Windows overlay), so the agent knows exactly what this does. It is clearly the 'acquire' member of the foreground_control_* family, though it never names those siblings to sharpen 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?
No explicit when-to-use, preconditions, or alternatives are given. The lifecycle phrase 'until released or heartbeat expiry' hints that release/heartbeat must follow, but the agent must infer that from the sibling names rather than from any stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreground_control_heartbeatHeartbeat foreground controlCDestructive
Renew the current foreground-control lease and optionally update the task shown in the overlay.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| leaseId | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds useful context that the task update is optional (overlay content changes only when 'task' is supplied), but it never explains why the operation is flagged destructive or what state is lost on expiry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the primary action first and the optional side effect clearly marked. No waste, though it is arguably too terse for a mutation 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 mutating lease tool with four undocumented parameters, no output schema, and a surprising destructiveHint=true, the description omits lease lifetime/failure semantics, device parameter meaning, and any indication of required permissions.
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 carries the burden and only partially compensates: it implies the 'leaseId' renewal and the 'task' overlay text, but says nothing about 'deviceId' or 'deviceName', leaving two of four parameters undocumented anywhere.
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 ('Renew') and resource ('foreground-control lease'), plus the optional secondary effect on the overlay task. This clearly separates it from foreground_control_acquire/release/pause, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of the sibling tools, and nothing about the heartbeat cadence, lease expiry window, or what happens if the lease has already lapsed. The agent is left to infer that this is a periodic keep-alive call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreground_control_pausePause or resume foreground controlCDestructive
Pause or resume the active AI foreground-control lease. GUI automation should refuse input while paused.
| Name | Required | Description | Default |
|---|---|---|---|
| paused | No | ||
| leaseId | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, readOnlyHint=false and openWorldHint=false, so the risk profile is partly covered. The description adds genuinely new behavioral context — that pausing suppresses GUI input — but says nothing about reversibility, whether the lease must be held first, or effect on device scoping. Modest added value over 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, front-loaded with the action and followed by the operative effect. No filler, though the extreme brevity leaves little structure to speak of.
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, four-parameter lease-manipulation tool with 0% schema coverage and no output schema, the description does not supply enough to call it safely. It omits how the lease is identified, how device scoping works, and what state results from the toggle.
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% across four parameters, so the description carries the full burden and fails it. It never explains leaseId (required), paused (default true), or the deviceId/deviceName scoping pair; only the words "pause or resume" loosely imply the paused flag.
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 pair (pause/resume) and a specific resource (the active AI foreground-control lease), which cleanly separates it from acquire/heartbeat/release/status siblings by name. It doesn't explicitly name those alternatives, but the operation is identifiable without reading 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?
Offers a consequence ("GUI automation should refuse input while paused") but no guidance on when to pause versus release or heartbeat the lease, and no prerequisites. Choosing between this and foreground_control_release is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreground_control_releaseRelease foreground controlBDestructive
Release the active foreground-control lease and dismiss the Windows overlay.
| Name | Required | Description | Default |
|---|---|---|---|
| leaseId | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, lowering the disclosure bar. The description adds a useful user-visible side effect ('dismiss the Windows overlay'), but does not say whether the lease is invalidated, whether an unacquired/stale leaseId errors, or whether the operation is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb front-loaded and no filler. Nothing is wasted, though this concision is partly achieved by omitting needed 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 destructive mutation tool with 0% parameter coverage and no output schema, the description is too thin. It omits lease-lifecycle semantics, error/idempotency behavior, and the meaning of the device parameters that an agent needs to call 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% across 3 parameters. The description sheds no light on leaseId (the sole required param), or on what deviceId/deviceName are used for, so it fails to compensate for a schema that documents none of its parameters beyond types.
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 ('Release') and resource ('the active foreground-control lease') plus the concrete side effect of dismissing the Windows overlay. It clearly reads as the inverse of foreground_control_acquire, but it never names that sibling or the pause/heartbeat alternatives, so differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use context is given. It does not tell the agent that this must pair with a prior foreground_control_acquire, nor whether to use it versus foreground_control_pause, heartbeat, or status. The agent must infer the lifecycle position entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
foreground_control_statusForeground control statusBRead-only
Return the current foreground-control owner, task, pause state and heartbeat expiry.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, non-destructive, closed-world profile, so the burden is lighter. The description adds the payload contents (owner, task, pause state, heartbeat expiry), which is useful behavioral context, but says nothing about staleness, expiry semantics, or what happens when no owner 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 that enumerates the returned fields with zero filler. Nothing is repeated or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the enumeration of returned fields is genuinely valuable, but the description does not compensate for the total absence of parameter documentation or the device-targeting behavior. Adequate but with clear gaps for a status tool whose main question is which device to 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?
Two parameters with 0% schema description coverage, and the description adds no meaning for deviceId or deviceName — not even whether they are optional or mutually exclusive. With no params the baseline would be 4; here the description leaves the selection of device entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') plus resource ('foreground-control owner, task, pause state and heartbeat expiry'), so an agent knows exactly what is being read. It does not explicitly distinguish itself from the sibling family (foreground_control_acquire/heartbeat/pause/release), though the name and phrasing make it obviously the read-only counterpart.
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 call this versus foreground_control_acquire, foreground_control_pause, or foreground_control_release, and no stated prerequisites or exclusions. The sibling names hint at a state-machine workflow, but the description never tells the agent where this read fits in it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_apply_patch_manyApply many exact-text patchesADestructive
Apply validated exact-text replacements to many files in one call. main.cs requires fs_transaction with compile validation. A file is not written if any replacement for that file fails validation.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | ||
| dryRun | No | ||
| deviceId | No | ||
| deviceName | No | ||
| concurrency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and readOnly=false, so the safety profile is covered. The description adds genuinely new behavior: replacements are validated and a file is not written if any of its replacements fail, which tells the agent about the per-file atomicity granularity. It says nothing about dryRun, concurrency, or cross-file atomicity.
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, front-loaded sentences with zero filler. The primary action comes first, the sibling constraint second, and the atomicity guarantee last.
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?
It covers the core semantic and the per-file failure rule, but for a destructive 5-parameter mutation tool with no output schema and no parameter descriptions, it omits dryRun behavior, concurrency implications, device targeting, and any error/return expectations. Adequate minimum, 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% across 5 parameters, so the description must carry the load and largely does not. It never mentions dryRun, concurrency, deviceId/deviceName, or the oldText/newText/replaceAll structure of a replacement.
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 (apply exact-text replacements) plus scope (many files, one call), which cleanly distinguishes it from fs_write_many and edit_block. It does not explicitly name those siblings, but the 'exact-text replacement' framing is precise enough for 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?
Gives a concrete when-not rule: main.cs requires fs_transaction with compile validation instead. That is a real routing condition, though it covers only one special case and says nothing about when to prefer this over fs_write_many or edit_block.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_listList filesBRead-only
List one directory. Accepts absolute paths when RACCOON_FILESYSTEM_UNRESTRICTED=1; relative paths start at RACCOON_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | No | . | |
| limit | No | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, non-destructive, closed-world read. The description goes beyond them by disclosing the path-resolution model: absolute paths are only allowed when RACCOON_FILESYSTEM_UNRESTRICTED=1, and relative paths anchor at RACCOON_ROOT. That environmental constraint is genuinely useful and not derivable from 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?
Two tight sentences with the core action front-loaded and the path-resolution caveat immediately after. 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?
Annotations cover the safety profile and there is no output schema, lowering the burden, but the description still omits how `limit` behaves, what `deviceId`/`deviceName` do, and whether results are paginated. For a tool with four undocumented parameters this is only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, so the description must compensate, and it only partially covers `dir` (absolute vs relative resolution). It says nothing about `limit` (1–1,000,000), `deviceId`, or `deviceName`, leaving half the surface 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 gives a specific verb and resource ("List one directory"), which is more precise than the bare title. However, it does not distinguish itself from the near-identical sibling `list_directory`, so an agent cannot tell the two apart from the text alone.
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 `list_directory`, `fs_read_many`, or `get_file_info`. It states the path-resolution rule but never explains the selection context, leaving the agent to guess between competing filesystem tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_read_chunkRead file chunkARead-only
Read an arbitrary byte range from a text or binary file. Repeated calls can read files of any size without loading the whole file into memory.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| offset | No | ||
| deviceId | No | ||
| encoding | No | utf8 | |
| maxBytes | No | ||
| deviceName | 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 genuinely useful behavioral context about memory behavior and repeat-call chunking, though it omits bounds semantics and any concurrency/rate notes.
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, front-loaded with the core capability and followed by the use case rationale. 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 read-only tool whose annotations cover safety, the description is serviceable but thin against a 6-parameter schema at 0% coverage. The device-selection parameters and encoding semantics remain unexplained, so an agent could call it ambiguously for cross-device reads.
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 all six parameters. It loosely implies offset/maxBytes ('byte range') and encoding ('text or binary'), but says nothing about deviceId, deviceName, the utf8/base64 enum meanings, or the unusual negative offset bounds - leaving half the parameters 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 states a specific verb and resource ('Read an arbitrary byte range from a text or binary file'), which clearly frames this as a partial/chunked read rather than a whole-file read. It implicitly distinguishes itself from full-read siblings like read_file, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Repeated calls can read files of any size without loading the whole file into memory' hints this is for large files, but it never states when to prefer this over read_file or fs_read_many, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_read_manyRead many text filesBRead-only
Read multiple UTF-8 files in one call using byte budgets instead of line limits.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| concurrency | No | ||
| maxTotalBytes | No | ||
| maxBytesPerFile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds the important behavioral idea that truncation is governed by byte budgets rather than lines, but omits what happens when the budget is exceeded, whether per-file failures abort the batch, and in what order results are returned.
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-formed sentence with the verb and the differentiating mechanism front-loaded. Nothing is padded or repeated.
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 batch tool with zero schema descriptions and no output schema, the description is far too thin: it says nothing about device targeting, concurrency, truncation signals, or partial failure semantics. An agent could call it, but could not predict its results.
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, yet it only gestures at paths and the byte-budget parameters. concurrency, deviceId and deviceName — three of six parameters — have no meaning explained anywhere, and even the budget parameters get no guidance on defaults or interaction between maxTotalBytes and maxBytesPerFile.
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 ('Read multiple UTF-8 files') plus the key scoping trait 'in one call', which separates it from single-file reads. It does not name a sibling (e.g. fs_read_chunk or read_multiple_files) explicitly, so differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Using byte budgets instead of line limits' implicitly contrasts this with line-based read tools and hints that it should be chosen for batch reads, but it never names an alternative or states when not to use it. Usage must be inferred from a single clause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_transactionTransactional multi-file patchBDestructive
Transactional source edits: main.cs requires validate.command to compile its project. Strict UTF-8 input, persistent byte backup, forced UTF-8 BOM, integrity statistics, atomic replacement and read-back verification; compile failure restores exact original bytes. Other files support optional validation.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | ||
| dryRun | No | ||
| deviceId | No | ||
| validate | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, and the description delivers real added value beyond that: strict UTF-8 input, persistent byte backup, forced BOM, atomic replacement, read-back verification, and — critically — that a compile failure restores exact original bytes. That rollback guarantee is exactly the behavioral detail an agent needs before invoking 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?
One dense semicolon-chained sentence front-loads the core concept, but the fragment 'main.cs requires validate.command to compile its project' reads like extracted example text and muddies rather than clarifies. Tight, but not cleanly structured.
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 multi-file mutation with nested objects and no output schema, the description richly covers behavioral traits but omits several parameters and never says what the 'integrity statistics' or read-back results look like. Enough to understand intent, insufficient to configure 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 coverage is 0% across five parameters including nested replacement and validate objects, so the description carries the full burden and mostly fails. It references validate.command and files implicitly, but says nothing about dryRun, deviceId, deviceName, replaceAll, or oldText/newText semantics, leaving them undocumented everywhere.
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?
Opening phrase 'Transactional source edits' names a specific verb and resource, and the description adds the atomic-replacement/rollback characteristic that separates it from plain writers like fs_write_many or fs_apply_patch_many. It stops short of naming any sibling explicitly, so an agent must infer the boundary itself.
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 'use this when / use X instead' guidance anywhere. The only usage-flavored statement, 'Other files support optional validation,' describes behavior rather than a selection condition across the many file-editing siblings (edit_block, fs_apply_patch_many, fs_write_many).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_write_chunkWrite file chunkBDestructive
Write UTF-8 or base64 data by rewrite, append, or absolute byte offset. Chunked calls remove any practical whole-file size limit.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| mode | No | append | |
| offset | No | ||
| content | Yes | ||
| deviceId | No | ||
| encoding | No | utf8 | |
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the encoding options and the chunking/size claim, but does not state key behavioral details such as whether 'rewrite' truncates existing content, whether 'at' requires a valid offset, or whether a missing file is created.
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 dense sentences with no filler, and the write modes are front-loaded. It is appropriately sized, though slightly terse given the number of parameters it could have clarified.
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 7-parameter mutation tool with 0% schema coverage and no output schema, the description covers the core write concept and the chunking rationale but omits device targeting, the offset requirement for 'at' mode, and truncation behavior on rewrite. 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 must compensate. It does explain the semantics behind the 'mode' enum (rewrite/append/at byte offset) and the 'encoding' enum (UTF-8 vs base64), but leaves file, content, offset constraints, deviceId, and deviceName undocumented, covering only part of the 7 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 (Write) and resource (file chunk) and enumerates the three write modes (rewrite, append, absolute byte offset), so an agent knows what the tool does. It does not, however, differentiate from close siblings like fs_write_text, fs_write_many, or edit_block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Chunked calls remove any practical whole-file size limit' hints that this tool is for large writes that need chunking, but it never names fs_write_text or fs_write_many as alternatives nor states when a single whole-file write is preferable. No explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_write_manyWrite many text filesADestructive
Create or replace many UTF-8 text files concurrently while preserving per-file locking.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| concurrency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, so safety is covered structurally. The description adds useful behavioral context: create-or-replace semantics, UTF-8 text handling, concurrent execution, and per-file locking. It does not cover partial-failure behavior or rollback, but that is beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no redundant or filler text. It efficiently states the action, scope, and key behavioral traits.
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 four-parameter mutation tool with nested file objects and no output schema, the description is too thin. It omits parameter semantics for deviceId, deviceName, and concurrency, and says nothing about failure handling across multiple files.
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 only alludes to 'many UTF-8 text files' and 'concurrently,' leaving files' nested structure, deviceId, deviceName, and concurrency unexplained.
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: 'Create or replace many UTF-8 text files.' It also adds distinguishing scope ('many') relative to single-file siblings like fs_write_text, and notes concurrency and per-file locking.
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 implies use for batch file writing but never states when to prefer this over fs_write_text, fs_write_chunk, fs_apply_patch_many, or write_file. No exclusions or alternative-selection guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_write_textWrite text fileADestructive
Create or replace a UTF-8 text file. main.cs requires fs_transaction with a compile validation command. Accepts absolute paths when RACCOON_FILESYSTEM_UNRESTRICTED=1; relative paths start at RACCOON_ROOT.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| content | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false and destructiveHint=true, and 'Create or replace' is consistent with that overwrite semantics. The description adds value beyond the annotations by explaining path resolution (absolute paths gated behind RACCOON_FILESYSTEM_UNRESTRICTED=1, relative paths rooted at RACCOON_ROOT) and the validation requirement for main.cs. It does not describe encoding edge cases or atomicity, so it stops short of a 5.
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 compact sentences with the core action front-loaded, and each sentence adds distinct information (action, validation constraint, path rules). The middle main.cs sentence is tersely phrased but not wasteful.
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 write tool with no output schema and 0% parameter coverage, the description covers path resolution and one special-case constraint, which is helpful. It still omits any explanation of the device parameters and content handling, so gaps remain for an agent calling 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 must carry parameter meaning, and it only partially covers the `file` parameter via the absolute/relative path rules. The `content`, `deviceId`, and `deviceName` parameters are left entirely undocumented in both schema and description, leaving most of the surface unexplained.
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 opening sentence gives a specific verb+resource: 'Create or replace a UTF-8 text file,' which is clear and scoped. However, it does not differentiate itself from near-identical siblings such as write_file, fs_write_chunk, or fs_write_many, so an agent still needs schema inspection to pick correctly.
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 routes one specific case away from this tool: editing main.cs should go through fs_transaction with a compile validation command. That is a genuine when-not-use/alternative signal, but it covers only a single file and offers no general guidance on when to prefer this over the other write tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configGet configurationBRead-only
Get Raccoon runtime, host, workspace and compatibility configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the bar is lower. The description adds the useful detail that four configuration domains are returned, but says nothing about scoping, freshness, or whether secrets are redacted — relevant since a secret_list sibling 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 padding. It is efficient, though slightly terse given the undocumented 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?
With no output schema, the description is the only hint about the return shape, and it only names the domains without indicating structure or nesting. Combined with zero parameter documentation, an agent can call this safely (read-only, zero required params) but cannot predict what it will get back or what the device parameters do.
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 two parameters (deviceId, deviceName), and the description never mentions them. The agent cannot tell whether these select which device's config to fetch or are filters on the response, which is a material ambiguity for a config-reading 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?
Specific verb (Get) plus resource (configuration), and it enumerates the domains covered: runtime, host, workspace, compatibility. That is clearer than a bare name restatement, but it never distinguishes itself from the write-side sibling set_config_value, so an agent must infer that this is the read counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus set_config_value, nor any prerequisite or context. Nothing tells the agent whether this reads global config or per-device config, which matters given the optional deviceId/deviceName parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_infoGet file infoBRead-only
Get file metadata, text line counts, and Excel sheet dimensions.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the return-content categories, but it says nothing about the deviceId/deviceName parameters implying access to files on a remote/connected device — a notable behavior left undisclosed.
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 clause adds information about what is returned.
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 0% parameter description coverage, the description should compensate further. It names return categories at a high level but leaves the two device parameters and the shape of the returned metadata entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for three parameters and explains none of them. 'path' is self-evident, but deviceId and deviceName are unexplained in both the schema and 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?
States a specific verb ('Get') and resource ('file') and enumerates what it returns: metadata, text line counts, and Excel sheet dimensions. That distinguishes it in substance from read_file or fs_read_chunk (content vs. metadata), but it never names a sibling, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or named alternative. The enumerated return values imply the use case (inspect a file before reading it), which is implied rather than stated usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_more_search_resultsGet search resultsCRead-only
Read a range of results from a progressive search.
| Name | Required | Description | Default |
|---|---|---|---|
| length | No | ||
| offset | No | ||
| deviceId | No | ||
| sessionId | Yes | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The phrase "progressive search" adds the useful hint that results accumulate against a session, but nothing is said about whether results expire, whether the session can be re-read, or how pagination terminates, so the added value beyond annotations is modest.
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-formed sentence with no filler, so nothing is wasted. But the brevity here reads as under-specification rather than economy — it is short because it omits information rather than because it is dense.
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 5 parameters, two undocumented string identifiers, and no output schema, the description is too thin for the tool's complexity. It does not describe the shape of the returned range or how an agent should page through results, which is the tool's entire job.
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% across 5 parameters, so the description carries the burden and fails to compensate. "Range" loosely gestures at offset/length, but sessionId, deviceId, and deviceName are never explained, and the default/maximum bounds are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Read") and resource ("a range of results from a progressive search"), which is meaningfully clearer than a bare name restatement. However, it does not name or contrast with the obvious siblings start_search, list_searches, or stop_search, so the agent must infer that this is the pagination step for a session started elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives. The description never says the sessionId must come from start_search, nor when to call this versus list_searches or stop_search, leaving a 5-parameter tool with wholly implicit usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_promptsGet onboarding promptCRead-only
Retrieve one of Raccoon's five built-in onboarding prompts.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| deviceId | No | ||
| promptId | Yes | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is already covered. The description adds only the mildly useful facts that the prompt set is fixed at five and that it is onboarding-oriented. It says nothing about return format, whether the prompt ID space is enumerable, or how deviceId/deviceName affect the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding or redundancy. It is appropriately sized for what it says, though the terseness reflects omitted content rather than disciplined editing.
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, no parameter documentation, and only one sentence of prose for a four-parameter tool. An agent cannot know which prompt IDs are valid, what a retrieved prompt looks like, or what role deviceId and deviceName play. The definition is under-specified for the tool's actual surface.
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% across four parameters, so the description must carry the burden and it largely does not. 'One of five' faintly implies promptId is a selector, but no valid IDs, format, or meaning of deviceId/deviceName is given, and the required action constant is never mentioned. This leaves the two undocumented optional parameters completely opaque.
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: retrieves one of five built-in onboarding prompts. The count and 'onboarding' qualifier scope it precisely, which is enough to tell it apart from the large sibling list, none of which deal with prompts. It stops short of naming any alternative, which keeps it at 4 rather than 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 when-to-use guidance, no prerequisites, and no alternatives named. The agent must infer from the name alone that this is the tool for fetching built-in onboarding prompts. There is no indication of when this is preferable to, say, give_feedback_to_raccoon or another config-style call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_tool_callsGet recent tool callsBRead-only
Get recent in-memory Raccoon tool calls with arguments, results, status and duration.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ||
| deviceId | No | ||
| toolName | No | ||
| deviceName | No | ||
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false. The description adds one useful behavioral trait — that the data is 'in-memory' (ephemeral, non-persistent) — which is genuinely beyond the annotations, but it says nothing about filtering behavior or result volume.
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 that conveys purpose, scope and returned fields.
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?
No output schema exists, so the description's list of returned fields helps, but with five undocumented optional filters and no mention of pagination or result limits (maxResults default 50), the description is not fully complete for a filtering 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% and all five parameters (since, deviceId, toolName, deviceName, maxResults) are undocumented in the schema. The description only lists return fields and hints at recency via 'recent', leaving the filter semantics entirely unexplained.
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 recent' and a specific resource 'in-memory Raccoon tool calls', plus what is returned (args, results, status, duration). It is clearly distinguishable from process/search siblings, though it doesn't name an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives such as get_usage_stats or process logs. Usage is only implied by the phrase 'recent tool calls'; no exclusions or conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_statsGet usage statsCRead-only
Get Raccoon tool usage, success/failure and performance statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the categories of statistics (usage, success/failure, performance) but says nothing about filtering, time scoping, or refresh behavior, so it clears the lower annotation-adjusted bar only marginally.
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 the resource front-loaded and no filler. It is appropriately sized, though the brevity comes at the cost of the missing detail noted elsewhere.
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, undocumented-schema tool with no output schema, the description leaves both parameters unexplained and gives no usage context. An agent could call it, but cannot know what deviceId/deviceName select or whether results are scoped.
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 both deviceId and deviceName, and the description does not mention them at all, so it fails to compensate for the coverage gap. The agent cannot tell whether these params scope the stats or 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?
States a specific verb (Get) plus a concrete resource (Raccoon tool usage, success/failure and performance statistics), so the agent knows exactly what it returns. It does not, however, distinguish itself from similar diagnostics siblings such as build_cache_stats or resource_governor_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?
There is no statement of when to reach for this tool, what triggers it, or which sibling to prefer for related telemetry. The agent 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.
git_commit_scopeScoped Git commitADestructive
Stage and commit only explicit files/directories. Refuses to run when unrelated changes are already staged and verifies the staged set before commit.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| paths | Yes | ||
| message | Yes | ||
| deviceId | No | ||
| allowEmpty | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the write/mutation nature is covered. The description adds genuine behavioral context beyond that: it discloses a refusal condition (unrelated changes staged) and a verification step (verifies the staged set before commit). These are useful safety-relevant traits an agent cannot get from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and followed by the safety constraint. No filler; each sentence earns its place, though the second sentence could be marginally sharper.
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 mutation with annotations but no output schema, the behavioral coverage (refusal + verification) is decent, so return values need not be explained. However, with 6 parameters at 0% schema coverage, the description leaves several parameters (cwd, deviceId, deviceName, allowEmpty) entirely unintroduced, making it incomplete 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% across 6 parameters, so the description carries the full burden. It only implicitly covers 'paths' ('explicit files/directories') and 'message'; it says nothing about cwd, deviceId, deviceName, or allowEmpty, and adds no format/semantic detail for paths or message beyond the schema. Substantial compensation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair ('Stage and commit') with a clear scope modifier ('only explicit files/directories'), distinguishing it from a general git commit. Combined with the title 'Scoped Git commit', an agent immediately understands this is a constrained commit operation, and the only git sibling (git_summary) is a read/report tool, so there is no confusion.
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 (scoped commits rather than blanket commits) and gives a precondition – it refuses when unrelated changes are already staged. However, it never names an alternative tool or explicitly states when NOT to use it, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_summaryGit status and diff summaryBRead-only
Return branch/status plus working-tree and staged diff summaries without invoking an arbitrary shell.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| deviceId | No | ||
| deviceName | No | ||
| includePatch | No | ||
| maxPatchBytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that this avoids an arbitrary shell, a meaningful value-add. It does not disclose return shape, patch-size truncation, or pagination behavior, which would raise it further.
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-formed sentence with the verb and scope front-loaded and no filler. It is efficient, though as one terse sentence it does not carry the structural load the sparse schema leaves to it.
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 no annotation coverage of parameters, so the description carries the full burden. For a 5-parameter tool it omits what each parameter does and what the return looks like, which is a substantial gap 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?
Schema description coverage is 0% across 5 parameters, so the schema names them but explains none. The description nods at "diff summaries" (implying includePatch) but leaves cwd, deviceId, deviceName, and maxPatchBytes entirely undefined. With no compensation for the coverage gap, this cannot reach the baseline 3.
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+resource: "Return branch/status plus working-tree and staged diff summaries." This is clearly distinguishable from shell_run and process tools by its git-specific scope. The phrase "without invoking an arbitrary shell" hints at why it exists over a general shell, but does not name a sibling tool, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of operating "without invoking an arbitrary shell" implies the safe-read use case, which is a soft signal for when to reach for it. However, there is no explicit when-to-use, no prerequisites, and no reference to the sibling git_commit_scope, leaving the alternative selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
give_feedback_to_desktop_commanderCompatibility feedback actionCDestructive
Compatibility alias that opens the Raccoon feedback page.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply readOnlyHint=false, openWorldHint=false and destructiveHint=true, so the safety profile is partly covered structurally, but the description adds nothing beyond them. Calling something that merely 'opens a page' destructive is an unexplained tension the description should have resolved (what state changes? what is destroyed?). With annotations present the bar is lower, but zero added context here.
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 with no filler, and the alias framing is front-loaded. But the terseness shades into under-specification: the sentence is too small to carry the purpose, usage and parameter burden this tool has.
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, two undocumented parameters, and a near-duplicate sibling, the description should be doing meaningful work; instead one sentence leaves the agent guessing about routing, parameter meaning, and the destructive side effect flagged 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?
Two parameters at 0% schema description coverage, and the description says nothing about deviceId or deviceName. The names are self-descriptive, which keeps this above the floor, but the description makes no attempt to explain which device identifier matters or what happens if they are omitted (both are optional).
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 concrete action ('opens the Raccoon feedback page') and labels itself a 'compatibility alias', which hints at its relationship to give_feedback_to_raccoon. However, it never says what the feedback actually is or what the tool does with deviceId/deviceName, so the purpose stays only roughly sketched.
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 a near-identical sibling, give_feedback_to_raccoon, and the description does not say when an agent should pick this alias over that one, nor whether both should be called. No prerequisites, no exclusions, no context about deprecation or preferred alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
give_feedback_to_raccoonGive feedback to RaccoonCDestructive
Open the Raccoon GitHub issue form in the default browser.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=false, so the safety profile is partially covered structurally. The description adds the meaningful behavioral fact that the action launches the default browser and targets a GitHub issue form, but it does not reconcile why the operation is flagged destructive or what user-visible side effects (window focus, unsent form) 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?
A single front-loaded sentence with no filler or repetition. It is efficient, though the extreme brevity leaves nothing for the other dimensions to build on.
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 two undocumented parameters, a destructive annotation and no output schema, the description is thin: it does not explain the parameter roles, what the agent or user should expect after the browser opens, or whether any state is modified.
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 carries the full burden for deviceId and deviceName, yet it mentions neither. With 2 undocumented parameters that plausibly identify the reporting device, the description leaves the caller guessing why they exist and whether they 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 destination: 'Open the Raccoon GitHub issue form in the default browser.' That is clearly distinguishable from the similarly named sibling give_feedback_to_desktop_commander by naming the Raccoon product, though it does not explicitly call out that 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?
There is no guidance on when to use this tool versus the sibling give_feedback_to_desktop_commander, nor any prerequisite or trigger condition. The agent must infer the routing from the product name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
http_probeHTTP/API probeCDestructive
Call an HTTP endpoint with optional secret references, structured assertions and bounded retry. Resolved secret values are never returned in tool output.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| body | No | ||
| method | No | GET | |
| headers | No | ||
| deviceId | No | ||
| jsonBody | No | ||
| redirect | No | follow | |
| timeoutMs | No | ||
| assertions | No | ||
| deviceName | No | ||
| intervalMs | No | ||
| maxAttempts | No | ||
| authorization | No | ||
| maxResponseBytes | No | ||
| requestTimeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true and destructiveHint=true, so the agent knows this touches external state. The description adds one genuinely new behavioral fact — resolved secret values never appear in output — which meaningfully affects how the agent can use results. However, it never warns that DELETE/POST/PUT can mutate remote resources, nor describes retry/backoff semantics or what a failed assertion yields.
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. Length is appropriate, though the second sentence (secret-leak guarantee) is arguably the only content-bearing clause and the rest is terse 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?
A 15-parameter tool with nested objects, 0% schema descriptions, no output schema, and destructive semantics gets only two sentences. The agent has no way to learn what success/failure looks like, what assertions do on mismatch, or how retry interacts with assertions — substantial 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?
Schema coverage is 0% across 15 parameters, so the description must compensate and largely does not. It gestures at authorization.secretRef, assertions, and maxAttempts/intervalMs, but leaves body vs jsonBody, deviceId/deviceName, redirect, maxResponseBytes, and the ambiguous pair timeoutMs vs requestTimeoutMs entirely unexplained.
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 concrete verb and resource ("Call an HTTP endpoint") plus three distinguishing capabilities: secret references, assertions, bounded retry. No sibling tool in the list does HTTP probing, so the agent can place it easily. It stops short of saying what class of task it is for (API smoke tests, health checks), but the core 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 rather than shell_run (curl), wait_until, or the dev_pipeline_* tools — both plausible substitutes for endpoint checks. The phrase "structured assertions and bounded retry" implies a verification use case, but no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interact_with_processInteract with processCDestructive
Send input to a managed process/REPL and wait for its response.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | ||
| input | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| timeout_ms | No | ||
| verbose_timing | No | ||
| wait_for_prompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=false, so the safety profile is covered. The description adds one useful behavioral trait beyond annotations: the call blocks and waits for a response. It does not explain timeout behavior, what happens on timeout, or the prompt-waiting model, so it is only a modest addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core action front-loaded and zero filler. It is efficiently written, though arguably under-specified rather than genuinely 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 7-parameter mutation tool with no output schema and 0% parameter coverage, the description is far too thin. It omits timeout semantics, prompt-waiting behavior, and device targeting, leaving an agent unable to invoke it correctly beyond the two required fields.
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% across 7 parameters, so the description carries the full burden and does not compensate. The non-obvious parameters (timeout_ms with its 8s default/10s cap, wait_for_prompt, verbose_timing, deviceId/deviceName) are entirely unexplained in both schema and 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?
States a specific verb+resource ('Send input to a managed process/REPL') plus a clear behavioral outcome ('wait for its response'). However, it does not differentiate itself from the sibling 'process_write', which reads as an almost identical operation, so an agent cannot confidently choose between 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 versus process_write, process_read, or shell_run, and no prerequisites or exclusions are stated. The agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_processKill system processBDestructive
Forcefully terminate an operating-system process by PID.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is carried by structured data. The word 'Forcefully' adds real value beyond that by signalling an abrupt kill with no graceful termination, but the description says nothing about lost output, cleanup, or whether the PID must belong to a known session.
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. The killing verb and the PID key both appear immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is an irreversible destructive operation with three parameters at 0% schema coverage and no output schema. The description omits return behavior (exit status?), device targeting semantics, and how it differs from force_terminate/process_kill, so an agent cannot call it reliably without trial and error.
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% across three parameters. The description only implicitly explains 'pid'; deviceId and deviceName are completely undocumented in both the schema and the text, so an agent cannot tell whether they are required for remote/device targeting.
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 ('forcefully terminate an operating-system process') plus the addressing key (PID), which is more precise than a bare name restatement. However, it never distinguishes itself from sibling tools with near-identical names such as force_terminate and process_kill, leaving the agent unable to pick among them from the text alone.
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 versus force_terminate, process_kill, or stop_search, and no stated preconditions (e.g. process must be running, must belong to the current session). The description only says what it does, never when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_devicesList devicesBRead-only
List the local Raccoon node and configured federated Raccoon peers with online/offline state.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description usefully adds that each entry carries online/offline state, which is behavioral context beyond the annotations. Beyond that it does not describe return shape or any auth/rate constraints, so it 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?
A single, front-loaded sentence with no wasted words. It is appropriately sized for a simple list tool, though it sacrifices parameter coverage for brevity.
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 list tool with no output schema, the description covers the core purpose and the state values returned. However, it omits any explanation of the two filter parameters and offers no usage context, leaving minor but real 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 for the two optional parameters (deviceId, deviceName) — and it names neither. It does not clarify whether these act as filters, nor what forms they take, leaving the agent unable to use them confidently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (local Raccoon node + federated peers), and mentions the returned state (online/offline). It is distinguishable from adb_devices, which covers Android devices rather than Raccoon peers. No explicit sibling differentiation is offered, but the resource is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, when not to, or which sibling covers a similar need. The agent must infer the 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.
list_directoryList directoryCRead-only
List a directory recursively with depth control and nested overflow protection.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| depth | No | ||
| deviceId | No | ||
| deviceName | No | ||
| maxEntriesPerDirectory | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, so safety is covered. The description adds meaningful behavior beyond that: recursion, depth control, and 'nested overflow protection'. It stops short of explaining what overflow protection actually does (truncation vs. error), so credit is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words; the recursive scope and depth control come first. It is efficient, though brevity here edges toward under-specification for a 5-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotation coverage of return values, the description should explain what a listing returns and how depth/overflow limits affect results. It omits both, and gives no guidance on device targeting, leaving the agent under-equipped for a 5-parameter 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% across 5 parameters, so the description must carry the load. It hints at 'depth' and 'nested overflow' (maxEntriesPerDirectory) but says nothing about path semantics or the deviceId/deviceName targeting parameters, leaving most parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List a directory') and adds the recursive scope plus depth control, so an agent knows it is a recursive lister. However, it does not differentiate itself from the closely-named sibling fs_list, leaving the agent to guess which one to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the alternatives (fs_list stands out as the obvious candidate). The agent gets no help deciding between this and other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_processesList system processesBRead-only
List all operating-system processes with PID, CPU and memory details.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered externally. The description adds the returned fields (PID, CPU, memory), which is useful since no output schema exists, but says nothing about scope (local vs. a specific device) or volume of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence naming the action, resource, and payload fields with zero waste. Appropriately sized for a simple read 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 basic read tool whose annotations cover safety, the description is minimally adequate, but it leaves the two input parameters entirely unexplained and does not distinguish this tool from very similar siblings.
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 two parameters (deviceId, deviceName), and the description mentions neither. Since the tool can presumably be scoped to a device, this is a meaningful gap 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?
States a specific verb ('List') and resource ('operating-system processes') with the fields returned (PID, CPU, memory). However, it offers no differentiation from the near-identical sibling 'process_list' (or 'get_usage_stats'), so an agent cannot tell which of the two to pick from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives despite multiple overlapping siblings (process_list, get_usage_stats, list_sessions). The agent is left to infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_searchesList searchesCRead-only
List retained progressive search sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds only that sessions are 'retained,' but does not explain what a search session contains, whether results are included, how results are paginated, or any filtering 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?
The description is a single clean sentence with no wasted words and the core action is front-loaded. It is appropriately sized for a listing tool, though its brevity contributes to the gaps 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?
Given two undocumented parameters, no output schema, and no explanation of what a 'retained progressive search session' actually is, the description leaves significant gaps for an agent trying to call this tool correctly. It does not cover filtering or return content.
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 two parameters (deviceId, deviceName) are undocumented in the schema. The description does not mention either parameter or clarify whether they are filters or required, so it provides no semantic meaning at all.
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 verb (list) and resource (retained progressive search sessions), but 'progressive search sessions' is undefined jargon and there is no explicit differentiation from siblings like start_search, get_more_search_results, or stop_search. An agent can infer it retrieves past searches, but the exact scope is vague.
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 start_search or get_more_search_results, and no exclusions or prerequisites are mentioned. The only implied usage comes from the word 'retained,' which is not enough to route an agent reliably.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsList terminal sessionsCRead-only
List retained Raccoon process sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description's only extra signal is the word 'retained', which hints at persisted/historical sessions, but it does not say whether live sessions are included, how results are ordered or paginated, or what a session record contains.
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 padding, so it is concise, but it is terse to the point of under-specification. Nothing is front-loaded beyond the bare 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?
With no output schema, zero parameter documentation, and an ambiguous core noun ('session'), the description leaves too much for the agent to infer. Given the dense sibling list of process and session tools, it needs to define scope and filtering behavior and 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?
Schema description coverage is 0% for both deviceId and deviceName, so the schema supplies no meaning at all, and the description does not compensate by explaining whether these are filters, what format a deviceId takes, or whether omitting them returns all devices' sessions.
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 has a clear verb+resource ('List ... sessions'), but the noun 'Raccoon process sessions' is undefined and it never distinguishes itself from the many near-identical siblings such as list_processes, process_list, and db_query_sessions. An agent cannot tell from this text what a 'session' is versus a 'process'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of any alternative tool. The sibling set contains at least three plausible substitutes (list_processes, process_list, db_query_sessions), and nothing here routes the agent to or away from them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fileMove fileCDestructive
Move or rename a file or directory.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds nothing beyond this—it does not mention overwrite behavior on collision, cross-device move semantics, or whether renaming within a directory differs from relocating across paths.
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 single sentence is front-loaded and completely free of padding, which is appropriate. It is short to the point of under-specification rather than verbose, so length itself is not the problem.
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 4-parameter, destructive, path-based operation with no output schema and zero schema coverage, the description supplies far too little. It omits the required-parameter semantics and any collision or destructive consequence detail the agent needs to invoke it safely.
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 4 parameters, and the description mentions none of them. It never clarifies that 'source' and 'destination' are required paths, nor what the optional deviceId/deviceName selectors do, leaving the agent with no semantic guidance beyond bare property 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?
States a specific verb (move/rename) and resource (file or directory), so the agent knows exactly what the tool operates on. However, it offers no differentiation from adjacent siblings like copy_file or delete_path, which an agent choosing among filesystem operations would benefit from.
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 versus copy_file, delete_path, or fs_transaction, and no prerequisites or conditional context are given. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingPingBRead-only
Verify that Raccoon is online locally or on a configured federated device.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: it says nothing about timeouts, latency, what a failed ping means, or what happens when a federated device is unreachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; it is appropriately sized for a simple probe tool. It does not pad or bury the point.
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 ping tool with annotations covering safety and no output schema, the description is broadly adequate. However, the two parameters remain entirely undefined in both schema and description, which is a real gap for target selection.
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 neither parameter (deviceId, deviceName) is explained in the description. The phrase 'configured federated device' hints that a device can be targeted, but it doesn't clarify how deviceId/deviceName select that target or what happens if both are omitted.
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 (verify) and resource (Raccoon online status) with scope ('locally or on a configured federated device'). It is clear on its own, though it does not distinguish itself from siblings like system_info or who_am_i, which also relate to environment/identity 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?
Usage is only implied: an agent can infer this is a connectivity/health check before other operations, but the description gives no explicit when-to-use, exclusions, or named alternatives relative to the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_killKill persistent processBDestructive
Terminate a process session started by Raccoon. Requires RACCOON_ENABLE_SHELL=1.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| sessionId | Yes | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description usefully adds the scope constraint (only Raccoon-started sessions) and the RACCOON_ENABLE_SHELL=1 prerequisite, but says nothing about what state is lost on termination or what an error vs success looks like.
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 compact sentences, front-loaded with the core action, with zero filler. The prerequisite is placed after the action, which is the correct priority order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, three-parameter tool with 0% schema coverage and no output schema, the description is thin: it never documents the parameters or their interaction, and gives no routing guidance among the near-identical kill/terminate siblings. The annotations carry the destructive signal, but the description still leaves key invocation details missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters (sessionId, deviceId, deviceName), and the description compensates almost nothing - only the word 'session' loosely maps to sessionId. It never explains what deviceId/deviceName do or whether they are alternatives to sessionId, so the parameter gap is largely unaddressed.
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 ('Terminate') and resource ('process session started by Raccoon'), so the operation is unambiguous. However, it does not differentiate itself from close siblings such as 'kill_process' or 'force_terminate', leaving the agent unable to distinguish this tool from those without opening the 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 a real precondition ('Requires RACCOON_ENABLE_SHELL=1'), which implies context for when the tool is usable. But it offers no guidance on when to choose this over the very similarly named 'kill_process' or 'force_terminate', nor any when-not guidance, so selection between siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_listList process sessionsBRead-only
List persistent process sessions currently retained by Raccoon.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that the sessions are 'persistent' and 'currently retained', giving some sense of scope, but says nothing about filtering, ordering, or result size.
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, front-loaded with the verb and resource. It is appropriately sized, though it is arguably under-specified rather than deliberately terse.
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 annotated read-only listing tool this is close to adequate, but the two undocumented filter parameters and the absence of any sibling differentiation leave real gaps an agent must guess at.
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?
Both parameters (deviceId, deviceName) have 0% schema description coverage, and the description never explains what they do or whether they filter the listing. With low coverage the description is expected to compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (List) and a specific resource (persistent process sessions retained by Raccoon). It does not, however, differentiate itself from very similar siblings such as list_sessions and list_processes, so an agent cannot distinguish them from the description alone.
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 call this versus the near-identical list_sessions/list_processes siblings, nor any mention of prerequisites or filtering conditions. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_readRead persistent process outputBRead-only
Read new stdout/stderr events from a process session using a cursor. Can wait briefly for new output.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| waitMs | No | ||
| deviceId | No | ||
| maxBytes | No | ||
| sessionId | Yes | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds real value by disclosing cursor-based incremental semantics and that the call may block briefly for new output — behavior not visible in annotations. It does not disclose what happens on an invalid or stale cursor, whether output is truncated by maxBytes, or how waiting interacts with defaults.
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 with no filler, and the core read semantics and cursor mechanism are front-loaded. Slightly under-informative rather than verbose, which is the right failure direction but leaves gaps.
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?
Six parameters, 0% schema coverage, and no output schema, yet the description says nothing about the return shape — the agent cannot tell whether the new cursor is echoed back, how stdout and stderr are separated, or how truncation is signalled. For a cursor-based streaming read where the returned cursor is essential to the next call, that is a meaningful omission.
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% with 6 parameters, so the description must carry weight; it explains the cursor parameter's role and implicitly the wait behavior (waitMs). It says nothing about sessionId being required, maxBytes truncation, or deviceId/deviceName, leaving half the surface to name inference.
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 ('Read new stdout/stderr events from a process session') plus the incremental mechanism ('using a cursor'), so the agent knows this is a delta-read rather than a full dump. It does not differentiate itself from the very similarly named sibling read_process_output, leaving some ambiguity about which reader to pick.
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?
'Can wait briefly for new output' implies long-poll / tail-style usage, which is useful implied guidance. But there is no explicit statement of when to choose this over read_process_output, process_write, or a plain shell run, and no exclusion guidance for the closely-related sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_resource_snapshotProcess resource snapshotBRead-only
Sample CPU, memory, handles, threads and priority for one PID.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | ||
| deviceId | No | ||
| sampleMs | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds meaningful context via 'Sample', implying a one-shot point-in-time read rather than continuous monitoring (differentiating it from the watch tools). It does not disclose sampling duration, rate limits, or whether it blocks for sampleMs, so it adds only partial behavioral value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Everything stated carries information; nothing needs trimming.
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 4-parameter tool with no output schema and 0% schema coverage, the description is too thin. It fails to explain the device-targeting params, the sampling window behavior, or what a 'snapshot' returns, which an agent needs to call and interpret this 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 must carry the load, and it only reinforces the single required 'pid' parameter ('for one PID'). The other three parameters (deviceId, deviceName, sampleMs with its 50-5000ms range and 250ms default) are undocumented in both schema and description, leaving the sampling timing and multi-device targeting entirely opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Sample') and enumerates the exact resource classes measured (CPU, memory, handles, threads, priority) scoped to 'one PID'. This clearly distinguishes it from process-lifecycle siblings like start_process or kill_process. However, it doesn't differentiate it from closely related siblings such as resource_snapshot or process_resource_watch_read, which likely overlap in intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives. With siblings like resource_snapshot, process_resource_watch_start/read/stop, and process_list present, an agent gets no signal for choosing this one-shot sampler over the continuous watch variants. The only implied usage is 'you have a PID and want its stats.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_resource_watch_listList process resource watchesCRead-only
List active resource watches.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false. The description adds no behavioral context beyond that, such as return format, pagination, or what 'active' signifies.
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 single sentence is brief but under-specified rather than appropriately concise. It omits essential information about scope, filtering, and sibling differentiation.
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 list tool with safe annotations and no output schema, the description still fails to explain the deviceId/deviceName filtering, what 'active' means, or how it relates to sibling watch operations. It 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?
The two optional parameters (deviceId, deviceName) have 0% schema description coverage and are not mentioned in the description at all. No meaning or usage guidance is added for 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?
States the verb 'List' and resource 'active resource watches', so the operation is clear. However, it does not differentiate from sibling tools such as process_resource_watch_read or process_resource_watch_start, leaving ambiguity about its distinct 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?
Provides no guidance on when to use this tool versus alternatives like process_resource_watch_read or process_resource_watch_start. There are no prerequisites, context, or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_resource_watch_readRead process resource watchCRead-only
Read recent resource samples and threshold violations from a process watch.
| Name | Required | Description | Default |
|---|---|---|---|
| tail | No | ||
| watchId | Yes | ||
| deviceId | No | ||
| deviceName | 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 that samples AND threshold violations are returned, which is real context, but says nothing about the tail/retention semantics or what happens when no samples 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?
A single front-loaded sentence with no filler. It is efficient, though the brevity comes at the cost of the parameter and usage detail an agent needs.
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?
A read tool with four params at 0% schema coverage and no output schema needs to explain the tail limit and the deviceId/deviceName filter relationship, and it does none of that. Only the safety profile is carried elsewhere (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?
Schema description coverage is 0% across 4 parameters, so the description carries the full burden. It never explains watchId, the tail limit (how many samples), or why both deviceId and deviceName exist as filters. Genuine gap for a tool whose filtering behavior is entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (process resource watch), and even previews the payload: 'recent resource samples and threshold violations'. An agent can tell what it returns, though it doesn't explicitly distinguish itself from process_resource_watch_list or process_resource_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?
No when-to-use guidance, no prerequisites, and no mention of the sibling tools (process_resource_watch_start/stop/list) that an agent must coordinate with. Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_resource_watch_startStart process resource watchCDestructive
Continuously sample one PID and optionally lower priority or terminate it when CPU/memory thresholds are exceeded.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | ||
| action | No | none | |
| deviceId | No | ||
| priority | No | BelowNormal | |
| deviceName | No | ||
| intervalMs | No | ||
| maxSamples | No | ||
| maxCpuPercent | No | ||
| maxMemoryBytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description usefully clarifies the condition under which destruction occurs ('when CPU/memory thresholds are exceeded'), which supports the annotation. It still omits operational traits an agent would want: whether the call blocks or returns immediately, how sampling frequency relates to the run, and where results are later read.
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; the core behavior and its optional effects are stated immediately. It is efficient, though minimal given the tool's complexity.
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 9-parameter, non-read-only tool with no output schema and 0% schema coverage, the description is too thin. It fails to explain defaults, the polling/termination lifecycle, or how the watch is subsequently read or stopped via the sibling 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 carries the full burden. It only loosely implies pid, action, priority, and the CPU/memory thresholds while leaving intervalMs, maxSamples, deviceId, and deviceName entirely unexplained. With 9 undocumented parameters, this is a real 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 gives a specific verb and scope ('Continuously sample one PID') plus the two optional consequential actions (lower priority, terminate). It clearly conveys what the tool does. However, it does not differentiate itself from closely related siblings such as resource_governor_configure or the watch_read/stop/list family, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no naming of alternatives like resource_governor_configure or process_resource_snapshot. The 'start' framing implies it kicks off a monitoring session, but the agent gets no explicit signal for choosing this over the governor or snapshot tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_resource_watch_stopStop process resource watchCDestructive
Stop and remove a process resource watch.
| Name | Required | Description | Default |
|---|---|---|---|
| watchId | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value by clarifying that stopping also removes the watch (not merely pauses it), but it says nothing about whether removal is recoverable or what happens to an in-flight watch.
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 with the key action front-loaded and no filler. It is efficient, though arguably under-specified rather than optimally sized for a 3-parameter mutation 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 destructive tool with 0% schema coverage and no output schema, the description should explain parameter roles and the lifecycle relationship to process_resource_watch_start/list. It supplies none of that, leaving the agent to guess how to identify the watch to stop.
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% across all 3 parameters, so the description carries the full burden and adds nothing — it never mentions watchId, deviceId, or deviceName. The optional deviceId/deviceName parameters (presumably disambiguators) are left completely unexplained.
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 compound verb ('stop and remove') and the resource ('process resource watch'), so the agent knows the target object. It does not explicitly differentiate from siblings like process_resource_watch_start/read/list, but the resource noun is unambiguous enough to place it in that 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?
There is no when-to-use guidance, no prerequisites (e.g. that the watch must exist), and no reference to the sibling tools that create or list watches. The agent must infer the workflow entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_startStart persistent processADestructive
Start a long-running shell process and return a session ID for incremental output reads. Requires RACCOON_ENABLE_SHELL=1.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| runner | No | default | |
| command | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| maxLogBytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and readOnlyHint=false. The description adds genuinely new behavioral context beyond them: the session-ID return model and the RACCOON_ENABLE_SHELL=1 feature gate, which signals the tool may be unavailable. It does not describe resource costs of a long-running process, but the added gate/return info is 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?
Two tight sentences with the purpose and the return contract front-loaded and the prerequisite appended. Every clause earns its place with zero 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 6-parameter, destructive, open-world tool with no output schema, the description gives an adequate high-level picture (what it returns, feature gate) but leaves all six parameters undocumented and says nothing about interactions with the process lifecycle siblings. It is minimally viable but has 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% across 6 parameters, so the description must carry parameter meaning, yet it names none of them (command, cwd, runner, deviceId, deviceName, maxLogBytes). The runner enum and the maxLogBytes byte-budget cap are especially non-obvious and unexplained.
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 (Start) and resource (long-running shell process), plus its key return contract: a session ID for incremental output reads. This clearly conveys what the tool does, though it does not explicitly differentiate itself from the close sibling 'start_process' or 'shell_run'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'long-running shell process', so an agent can infer it is for persistent/interactive sessions rather than one-shot shell_run. However, there is no explicit when-to-use-vs-alternatives guidance, and it never names the sibling tools (read_process_output, force_terminate) it pairs with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_writeWrite to persistent process stdinCDestructive
Send input to a running process session. Requires RACCOON_ENABLE_SHELL=1.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| deviceId | No | ||
| sessionId | Yes | ||
| deviceName | No | ||
| appendNewline | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the safety profile is covered. The description adds the environment-variable gate, which is genuine extra context, but says nothing about what the write mutates, newline handling, or irreversibility beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action followed by the constraint. Nothing is wasted, though it is arguably too terse given the undocumented 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 destructive, open-world mutation tool with 5 parameters at 0% schema coverage and no output schema, the description is far too thin. The env-var gate is a good start, but parameter meaning, interaction with the process lifecycle, and differentiation from interact_with_process are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description carries the full burden. It names nothing: sessionId, deviceId, deviceName, input, and appendNewline are all left to their bare types, and 'send input' does not even clarify the required 'input' semantics or the appendNewline default behavior.
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+resource: sending input to a running process session, which is distinguishable from read-side siblings like read_process_output. However, it does not differentiate itself from the near-sibling interact_with_process, leaving the agent to guess which to call.
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 a real prerequisite (RACCOON_ENABLE_SHELL=1) which is useful gating context, but gives no when-to-use vs interact_with_process guidance and no exclusions. Usage 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.
project_build_testRun project workflowCDestructive
Run a sequence of build/test/lint commands in one call and return compact per-step results. Requires RACCOON_ENABLE_SHELL=1.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| steps | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| parallelism | No | ||
| stopOnFailure | No | ||
| timeoutMsPerStep | No | ||
| maxOutputBytesPerStep | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the safety profile is mostly structured. The description adds a genuine prerequisite (requires RACCOON_ENABLE_SHELL=1) and hints that output is 'compact per-step results', which is useful context. It does not explain that arbitrary shell commands execute or how step failures 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 dense sentences with the core action front-loaded and no filler. It is appropriately sized, though the single trailing prerequisite clause is the only additional 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 an 8-parameter tool with a nested step array, no output schema, and 0% schema coverage, the description is thin. Critical execution controls (stopOnFailure, parallelism, timeouts, output caps) go entirely unexplained, leaving real gaps an agent must fill by 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% across 8 parameters, including behaviorally important ones like stopOnFailure, parallelism, timeoutMsPerStep, and maxOutputBytesPerStep. The description mentions none of them and adds no meaning beyond the schema, leaving the agent to infer semantics from bare names and defaults.
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: 'Run a sequence of build/test/lint commands in one call.' The 'in one call' scope implicitly separates it from single-command siblings like shell_run and process_start. It does not, however, explicitly name an alternative it should be chosen over.
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 explicit when-to-use/when-not guidance or alternatives (shell_run, build_cache_run, dev_pipeline_start) in this large sibling set. 'In one call' weakly implies batch scenarios, but the agent is left to infer the selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileRead file or URLBRead-only
Read text with line pagination, Excel ranges, images, PDF pages, DOCX outline/XML, or a URL.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| isUrl | No | ||
| range | No | ||
| sheet | No | ||
| length | No | ||
| offset | No | ||
| options | No | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context by disclosing the supported formats and that pagination is line-based, but it omits size limits, error behavior, and any note on how the URL path (openWorldHint=false) is constrained.
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 packs the verb, resource, and format coverage with zero filler. 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?
Annotations cover the safety profile and there is no output schema, but for a 9-parameter tool with 0% schema description coverage the description is thin: it gives no guidance on pagination defaults, range/sheet syntax, or how the device parameters interact. 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 coverage is 0% across 9 parameters, so the description must carry the load. It implicitly maps to several params (range/sheet for Excel, offset/length for line pagination, isUrl for URL), which is useful, but it leaves deviceId, deviceName, and options entirely unexplained.
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 (read) and resource (file/URL) and enumerates the content types it handles (text, Excel, images, PDF, DOCX, URL), which is more than a restatement of the name. It does not, however, distinguish itself from sibling readers like fs_read_chunk, fs_read_many, or read_multiple_files, so an agent still has to guess which reader applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this tool versus the many sibling readers (fs_read_chunk, fs_read_many, read_multiple_files) or when-not to. Usage is only implied by the format list. No prerequisites or selection conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_multiple_filesRead multiple filesCRead-only
Read multiple local files concurrently, including viewable images, without failing the whole batch.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| concurrency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description does add one useful non-annotated trait — 'without failing the whole batch' implies partial-failure tolerance, and it notes image support. But it omits what happens to failed paths, retry behavior, and result 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?
A single efficient sentence, front-loaded with the core action and carrying two meaningful modifiers (concurrency, batch tolerance). No wasted text, though it is arguably too terse given the undocumented 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 4-parameter tool with no output schema and 0% schema coverage, one sentence is insufficient. Path format, concurrency semantics, device targeting, and per-file failure behavior are all unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 4 parameters, so the description must compensate and does not. Nothing explains the paths array format/limits, the concurrency knob (default 32), or what deviceId/deviceName select.
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 clear verb (read) and resource (multiple local files) plus the concurrency trait. However, it does not distinguish itself from close siblings like read_file or fs_read_many, leaving the agent to guess which read tool 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?
No guidance on when to use this batch reader versus read_file or fs_read_many, nor when the concurrency or device parameters matter. The reader must infer selection criteria entirely from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_process_outputRead process outputCRead-only
Read managed process output with new-output, absolute and tail line pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | ||
| length | No | ||
| offset | No | ||
| deviceId | No | ||
| deviceName | No | ||
| timeout_ms | No | ||
| verbose_timing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds that output can be read via new-output, absolute, and tail line pagination, which is useful behavioral context, but it does not explain how these modes behave, whether reads block, or what the return format looks like.
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. However, the pagination phrase is dense and cryptic, slightly reducing clarity for the amount of information it needs 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 7 parameters, no output schema, and no parameter descriptions, the description is incomplete. It covers the basic purpose and hints at pagination but gives an agent little help in actually invoking the tool correctly or interpreting its results.
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 7 parameters, so the description must compensate. It only vaguely alludes to pagination modes and does not explain pid, length, offset, deviceId, deviceName, timeout_ms, or verbose_timing, leaving most parameters 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 states a specific verb and resource: 'Read managed process output', and adds the pagination dimensions it supports. It clearly identifies the tool's function, but does not differentiate it from sibling tools like process_read or interact_with_process.
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, no conditions for selecting this tool over process_read or interact_with_process, and no exclusions. The purpose implies a read scenario, but no usage guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resource_governor_configureConfigure resource governorBDestructive
Enable/disable automatic admission throttling for heavy shell/build work based on CPU, memory and concurrency.
| Name | Required | Description | Default |
|---|---|---|---|
| pollMs | No | ||
| enabled | No | ||
| deviceId | No | ||
| deviceName | No | ||
| minFreeMemoryBytes | No | ||
| maxSystemCpuPercent | No | ||
| maxConcurrentHeavyOps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false and destructiveHint=true, so the mutation risk profile is covered. The description adds domain context about what is being throttled and on what signals, but says nothing about persistence, effect on in-flight operations, or what happens when disabled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first and zero filler. Nothing needs to be moved or cut.
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 7-parameter configuration tool with 0% schema description coverage and no output schema, the definition is too thin: parameters, units, defaults, and persistence behavior are all absent, leaving the agent under-equipped to call 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 coverage is 0% across 7 parameters. The description gestures at the domain (CPU, memory, concurrency) but does not map to any specific field such as pollMs, deviceId, minFreeMemoryBytes, or the max* thresholds, leaving their meaning and units unexplained.
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 (enable/disable) on a specific mechanism (automatic admission throttling) and names the triggering dimensions (CPU, memory, concurrency). It is clearly a configuration tool, distinguishable in intent from resource_governor_status, though it never names 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?
No when-to-use guidance, no prerequisites, and no mention of the related resource_governor_status or watch tools. The agent must infer the operational context (managing heavy build/shell load) entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resource_governor_statusResource governor statusBRead-only
Return automatic throttling configuration, active heavy operations and queued work.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | 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 content about what is actually returned (throttling config, heavy operations, queued work), but says nothing about scoping behavior or whether the device params change the result set.
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-formed sentence that front-loads the return content with no filler. Efficient, though there is no structural separation of scope or usage constraints.
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 correctly carries the burden of describing return values, and does so at a high level. However it omits device-scoping semantics and any usage context, leaving gaps for a tool with two undocumented parameters.
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?
Two device-scoping parameters (deviceId, deviceName) at 0% schema coverage are never mentioned in the description. It is unclear whether they are alternatives, whether both are needed, or what happens when both are omitted (0 required params). The description does not 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?
States a specific verb ('Return') and enumerates the resources returned: throttling configuration, active heavy operations, and queued work. This clearly distinguishes it from the mutation sibling resource_governor_configure, though it never names that distinction explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and does not point to resource_governor_configure as the tool for changing these settings. An agent must infer the read-vs-write split 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.
resource_snapshotSystem resource snapshotCRead-only
Sample system CPU/memory and return top memory-consuming processes plus governor state.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| deviceId | No | ||
| sampleMs | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that sampling occurs over a window (implied by 'Sample') and that output includes top processes and governor state, but it does not describe cost, latency, or sampling behavior beyond that.
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 names the action and the payload with no filler. It is efficient, though extremely terse given the number of undocumented 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 4-parameter tool with 0% schema coverage and no output schema, the description is too thin: it never explains device targeting (deviceId/deviceName), the sampling window, or the top-count limit, and provides no usage context against overlapping siblings.
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% across 4 parameters, so the description must carry the burden. It only loosely implies 'top' (count of processes) and 'sampleMs' via the word 'Sample'; deviceId and deviceName receive no mention at all, leaving half the parameters unexplained.
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 (Sample) and resource (system CPU/memory) and names what is returned (top memory-consuming processes, governor state). It is clear on its own but never names or contrasts with close siblings such as system_info, get_usage_stats, or process_resource_snapshot, so an agent must infer 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?
There is no when-to-use guidance, no exclusions, and no mention of alternatives, despite several overlapping siblings (system_info, get_usage_stats, process_resource_snapshot, resource_governor_status). The agent gets a description of the operation but no routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshot_captureCapture Windows screenshotCDestructive
Capture the virtual desktop or one monitor and return the PNG directly as an MCP image.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| savePath | No | ||
| deviceName | No | ||
| monitorIndex | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=false, so the safety profile is partly covered. The description adds real value by specifying the return format (PNG delivered directly as an MCP image rather than a file path), but it never explains why the tool is destructive or how savePath interacts with that return mode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, and every clause carries information. It is efficient if slightly thin for a four-parameter 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?
Four undocumented parameters, no output schema, and an unexplained destructiveHint leave significant gaps. The unresolved question of whether output is returned inline or written to savePath is exactly the ambiguity an agent would hit at call time.
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% across four parameters, so the description must carry the load and it largely does not. 'One monitor' loosely gestures at monitorIndex, but deviceId, deviceName, and savePath are left entirely undefined, and savePath even sits in tension with 'return the PNG directly'.
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+resource (capture the virtual desktop or one monitor) and the return medium (PNG as an MCP image). It is distinguishable from sibling adb_screenshot by naming the desktop/monitor scope, though it never explicitly contrasts 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?
No when-to-use guidance, no prerequisites, and no mention of the near-identical sibling adb_screenshot or visual_compare. Usage is only inferable from the tool name and the 'desktop or one monitor' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
secret_listList configured secret referencesBRead-only
List names from the protected Raccoon secret store without returning secret values.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real value beyond them by disclosing what the tool returns (names only) and, critically, what it deliberately withholds (secret values), which is a meaningful data-exposure guarantee.
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 written sentence that front-loads the verb and resource and ends with the most important constraint. No filler, nothing to cut.
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 enumeration tool with no output schema, the description covers the return semantics well (names, no values) but leaves the two filtering parameters unexplained. Adequate for the core call, incomplete for parameter usage.
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 two parameters (deviceId, deviceName) are entirely undocumented in both schema and description. The description offers no hint that these act as filters or how they combine, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (names from the protected Raccoon secret store) and clarifies the scope (names only, not values). It is clearly distinguishable from all listed siblings, none of which touch secrets, though it does not name a sibling to contrast with.
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 named alternative. The phrase 'without returning secret values' implies this is for enumeration rather than retrieval, but the agent must infer when to call it versus anything else.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_config_valueSet configuration valueCDestructive
Set a mutable Raccoon compatibility setting.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=false, so the safety profile is covered structurally. The description's word 'mutable' merely restates that, adding nothing about persistence, scope, whether the prior value is overwritten, or device-scoping behavior — all important for a destructive mutation.
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 padding, so it is concise. But it is under-specified rather than efficient-the sentence is small because it omits necessary content, not because it is tight.
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, non-read-only mutation with four undocumented parameters and no output schema, a single generic sentence is inadequate. An agent cannot determine valid keys, value typing, or the effect of the device parameters from this definition.
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% across four parameters (key, value, deviceId, deviceName), so the description carries the full burden of explaining them. It mentions none — not even the format of key/value or what deviceId/deviceName do in a device-scoped config write.
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 verb (Set) and a resource (a mutable Raccoon compatibility setting), so the basic operation is inferable. However, "Raccoon compatibility setting" is vague about what settings exist or where they live, and it gives no differentiation from siblings like get_config or resource_governor_configure.
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, when-not-to-use, or alternative named. The only implied guidance is that a 'set' tool changes a value; nothing tells the agent when this tool is preferable to editing a config file or using resource_governor_configure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shell_runRun shell commandBDestructive
Run one shell command in the specified working directory. Requires RACCOON_ENABLE_SHELL=1. Absolute working directories are allowed when RACCOON_FILESYSTEM_UNRESTRICTED=1.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| runner | No | default | |
| command | Yes | ||
| deviceId | No | ||
| timeoutMs | No | ||
| deviceName | No | ||
| maxOutputBytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and readOnlyHint=false, so the danger profile is covered. The description adds value beyond that with the two environment gating conditions and the cwd restriction, though it omits timeout default behavior and output truncation semantics.
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 dense sentences with the core action front-loaded and prerequisites following. Every sentence carries information 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 7-parameter tool with 0% schema coverage and no output schema, the description leaves too much unexplained: six of seven parameters, the enum runner choices, and the return shape (stdout/stderr/exit code) are all absent. Annotations cover safety but not the invocation details an agent needs.
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 the burden, but it only implicitly touches cwd ('specified working directory') and command. The runner enum, deviceId/deviceName, timeoutMs, and maxOutputBytes parameters are never explained anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Run one shell command') plus the working-directory scope, so the agent knows exactly what the call does. It stops short of distinguishing this from long-running siblings like process_start or adb_shell, which a 'one shell command' phrasing only implies rather than states.
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 states gating prerequisites (RACCOON_ENABLE_SHELL=1, and RACCOON_FILESYSTEM_UNRESTRICTED=1 for absolute cwd), which is real context. However it gives no when-to-use-this-vs-alternatives guidance against the many process/adb siblings, so selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shutdownShutdown RaccoonCDestructive
Gracefully request shutdown of the current Raccoon server.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=false, so the agent knows this is a destructive, local operation. The description adds that the shutdown is 'graceful' (as opposed to forced), which is useful behavioral context beyond the annotations, but it omits what happens to in-flight work, whether the request can be declined, and whether confirmation is required.
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, which is structurally clean. It is arguably too terse for a destructive multi-parameter tool, but there is no wasted verbiage.
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, unannotated-parameter mutation with no output schema, the description should explain target selection and shutdown consequences. It provides neither, so an agent cannot confidently call it with or without the device parameters.
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?
Two parameters (deviceId, deviceName) have 0% schema description coverage, and the description never mentions them at all. Worse, its 'current Raccoon server' framing conflicts with the existence of device-targeting parameters, leaving the agent unable to infer how to select a target.
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 ('request shutdown of the current Raccoon server') with an added qualifier ('gracefully'). It is distinguishable from force-style siblings like force_terminate and kill_process, though it never names them explicitly. The phrase 'current Raccoon server' is somewhat at odds with the deviceId/deviceName parameters, which imply targeting arbitrary 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?
No when-to-use guidance and no alternatives named. The word 'gracefully' hints at a contrast with force_terminate/kill_process, but the description never states when to prefer this over a forced kill or what prerequisites exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_processStart processCDestructive
Start a persistent process/REPL and return its PID, initial output and state.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| shell | No | ||
| command | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| timeout_ms | No | ||
| verbose_timing | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, destructive, and closed-world semantics, so the safety profile is covered. The description usefully adds that the process is persistent and returns a PID plus initial output/state, but omits timeout behavior, the fact that started processes must be explicitly terminated, and any auth/permission context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb, resource, and key return values come first. It is efficient, though arguably too terse for a seven-parameter 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 7-parameter, destructive, session-creating tool with no output schema and no schema descriptions, the description leaves major gaps: no parameter meaning, no timeout/cwd/shell semantics, and no lifecycle guidance. Only the bare purpose is conveyed.
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 across 7 parameters and the description explains none of them. Meaning for cwd, shell, deviceId, deviceName, timeout_ms, and verbose_timing is absent from both schema and description, so the required compensation for low coverage is entirely missing.
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 ('Start a persistent process/REPL') and even names return values (PID, initial output, state). However it does nothing to distinguish itself from the near-identical sibling 'process_start', leaving an agent unsure which of the two to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusion of alternatives, and no mention of the lifecycle it implies (that the process later needs read_process_output/interact_with_process and termination via kill_process/force_terminate). The agent must infer all routing from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_searchStart searchCRead-only
Start a progressive file-name or file-content search.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| pattern | Yes | ||
| deviceId | No | ||
| deviceName | No | ||
| ignoreCase | No | ||
| maxResults | No | ||
| searchType | No | files | |
| timeout_ms | No | ||
| filePattern | No | ||
| contextLines | No | ||
| includeHidden | No | ||
| literalSearch | No | ||
| earlyTermination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. Beyond that the description adds only the ambiguous word 'progressive' and discloses nothing about the async lifecycle, result retrieval, early termination, or timeouts, despite a timeout_ms parameter implying long-running 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 short sentence, but this is under-specification rather than conciseness. The sentence is front-loaded with the verb, yet it omits information essential for a 13-parameter 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 tool with 13 parameters, zero schema descriptions, no output schema, and an implied async/progressive result flow, one sentence is not sufficient. The agent cannot know how to retrieve results or when the search terminates.
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% across 13 parameters, so the description carries the full burden and fails it. It hints at two search modes but says nothing about pattern, path, contextLines, maxResults, filePattern, includeHidden, literalSearch, or earlyTermination.
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 ('Start ... search') and distinguishes two modes, file-name vs file-content, which maps to the searchType enum. However, it does not differentiate itself from closely related siblings such as stop_search, get_more_search_results, or list_searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. The word 'progressive' implies an async/multi-step flow, but the description never tells the agent to poll get_more_search_results or how to stop via stop_search, which is exactly the routing information an agent needs here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_searchStop searchCDestructive
Stop a progressive search while retaining its results briefly.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| sessionId | Yes | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive, non-read operation. The description adds that results are retained briefly, which is a useful behavioral detail beyond annotations, but it does not explain what exactly gets destroyed or any prerequisites.
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 waste. It is appropriately concise, though its brevity contributes to the gaps in parameter and usage guidance.
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 tool with three undocumented parameters (one required), no output schema, and no usage or parameter details, the description is insufficiently complete. It omits vital context an agent needs 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?
Schema description coverage is 0%, and the description mentions no parameters. It does not explain the roles of sessionId, deviceId, or deviceName, leaving the agent to guess their meanings and which 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?
States a specific verb ('Stop') and resource ('progressive search'), clearly distinguishing it from sibling tools like start_search and get_more_search_results. However, it does not explicitly name those alternatives or differentiate further in the text.
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 no guidance on when to use this tool versus alternatives such as start_search or list_searches. There is no mention of prerequisites or conditions for stopping a search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_infoSystem infoBRead-only
Return basic host and Raccoon runtime information.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds only the vague phrase 'basic host and Raccoon runtime information,' without detailing fields returned, permissions, or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though arguably too terse given the undocumented 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 simple read-only info tool with annotations covering safety and no output schema, the description is minimally adequate. It does not explain expected return values beyond 'basic' information, nor does it clarify the two optional parameters.
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?
Both parameters, deviceId and deviceName, have 0% schema description coverage, and the description does not mention them at all. Their names suggest target-device selection, but the definition provides no semantic 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?
States a specific verb and resource: 'Return basic host and Raccoon runtime information.' An agent can tell it returns system/host details, but it does not distinguish itself from siblings such as who_am_i, get_usage_stats, or list_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, and no prerequisites or exclusions are mentioned. The agent must infer usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visual_compareCompare screenshotsCDestructive
Compute pixel-level visual change metrics and optionally save a red-channel difference image.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| afterPath | Yes | ||
| threshold | No | ||
| beforePath | Yes | ||
| deviceName | No | ||
| diffSavePath | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true; the description adds the crucial context of why it is a write operation — it can save a difference image to disk. However, it does not warn that writing to diffSavePath may overwrite an existing file, nor does it describe what the returned metrics contain or how threshold affects 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?
A single front-loaded sentence with no filler. It is arguably too terse for a 6-parameter tool, but every word earns its place and the core action leads.
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 6 parameters, no output schema and no schema descriptions, the description should at minimum explain the compared inputs, the threshold semantics and the diff-image output. None of this is present, so an agent cannot call it confidently beyond the two required paths.
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% across 6 parameters, so the description carries the full burden and fails to compensate. Only diffSavePath is obliquely referenced ('save a ... difference image'); threshold, beforePath, afterPath, deviceId and deviceName are never explained, and the threshold's 0-255 default of 24 is left opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('compute pixel-level visual change metrics') plus an optional side effect ('save a red-channel difference image'), which is enough to distinguish it from screenshot_capture, adb_screenshot and other capture siblings. It never explicitly says the metrics are computed between the two screenshot paths, but the before/after pairing is strongly implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (both required paths must exist), and no hint about when the optional diff image is worth producing versus just reading metrics. The agent gets no routing help against the many screenshot-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_untilBDestructive
Run an idempotent command repeatedly until a structured stdout/stderr/JSON condition matches or a timeout/attempt limit is reached. Replaces model-side polling loops.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| runner | No | default | |
| command | Yes | ||
| deviceId | No | ||
| condition | No | ||
| timeoutMs | No | ||
| deviceName | No | ||
| idempotent | No | ||
| intervalMs | No | ||
| maxAttempts | No | ||
| maxOutputBytes | No | ||
| commandTimeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond annotations: it explains retry-until-condition semantics and that timeout and attempt limits bound execution. However it asserts the command is 'idempotent' while the schema's idempotent parameter defaults to false and annotations declare destructiveHint=true; it doesn't warn that repeated execution of a non-idempotent command is destructive.
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 with no filler. The poll-until semantics come before the comparison clause, making it efficient and 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?
For a 12-parameter, destructive, open-world tool with nested condition logic and no output schema, two sentences are far from sufficient. It omits condition syntax, retry/backoff behavior, per-attempt vs overall timeout interaction, and safety implications of repeated execution.
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% across 12 parameters, including a nested condition object with 7 sub-fields (stdoutRegex, jsonPathEquals, jsonPathExists, etc.). The description explains no parameter semantics at all, leaving the central 'condition' object undocumented in prose.
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: repeatedly running a command until a structured stdout/stderr/JSON condition matches or timeout/attempt limit. The clause 'Replaces model-side polling loops' distinguishes it from plain shell_run, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Replaces model-side polling loops' gives a usage rationale but no explicit when-to-use/when-not or comparison against alternatives like shell_run, start_process, or dev_pipeline_wait. The agent must infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
who_am_iWho am ICRead-only
Return the operating-system identity running Raccoon and local tool usage.
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is fully covered structurally. The description adds almost nothing beyond that: no note on whether "local tool usage" requires consent, how it is scoped, or what period it covers. It is a read-only lookup, so the risk is low, but the description contributes no extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is partly the source of the gaps noted elsewhere rather than deliberate compression.
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, so the description carries the burden of explaining what comes back, and it only gestures vaguely at "OS identity" and "local tool usage." Combined with undocumented parameters and no alternative routing, the definition is not complete enough for an agent to call this confidently over system_info.
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 two parameters (deviceId, deviceName), and the description never mentions them. An agent has no way to know whether these select a device to query, are optional filters, or are ignored. This is the case where the description must compensate for the schema gap, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a verb ("Return") and a resource ("operating-system identity running Raccoon and local tool usage"), so the general intent is graspable. However, "operating-system identity" is vague — user account? host? platform? — and the description does nothing to separate this from the sibling system_info or get_usage_stats, so an agent cannot disambiguate. That is a clear purpose gap.
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 contains no when-to-use guidance, no prerequisites, and no reference to alternatives. With closely-related siblings such as system_info, get_usage_stats, and get_config present, the absence of any routing information is a meaningful omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worktree_taskIsolated Git worktree taskADestructive
Create, list or remove Raccoon-managed Git worktrees so concurrent AI chats can develop on isolated branches without sharing one working tree.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | . | |
| force | No | ||
| action | Yes | ||
| branch | No | ||
| taskId | No | ||
| baseRef | No | HEAD | |
| deviceId | No | ||
| deviceName | No | ||
| deleteBranch | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the isolation purpose but omits what remove actually destroys, whether branches are deleted, and what force does — meaningful gaps for a multi-action destructive tool, though the annotation lowers the bar.
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-formed sentence with the action verbs front-loaded and no filler. 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 destructive, multi-action tool with 9 undocumented parameters and no output schema, the description is far too thin. It explains the concept but not what any action requires, returns, or destroys, leaving the agent unable to invoke create or remove safely.
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% across 9 parameters, so the description carries the full burden and largely fails it. Only weak mapping exists: the verbs 'create/list/remove' correspond to the action enum, but branch, taskId, baseRef, force, deleteBranch, cwd, and the device fields are entirely unexplained.
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 three specific verbs (Create, list, remove) against a specific resource (Raccoon-managed Git worktrees) and adds the intent (isolated branches for concurrent AI chats). No sibling tool deals with worktrees, so the agent can distinguish it immediately.
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 the motivating scenario ('concurrent AI chats can develop on isolated branches'), which implies when the tool is useful, but it never says when to prefer create vs list vs remove, nor any alternative or exclusion. Usage is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileWrite fileCDestructive
Write or append text; create Excel workbooks from JSON arrays; create DOCX from markdown-like text.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | rewrite | |
| path | Yes | ||
| content | Yes | ||
| deviceId | No | ||
| deviceName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, covering the safety profile, and the description's 'write or append' is consistent with them. The description adds useful format-conversion behavior (JSON arrays to Excel, markdown-like text to DOCX) that annotations cannot convey. It stops short of saying what happens to an existing file when overwriting, or what deviceId/deviceName control.
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 semicolon-separated clauses that wastes no words. It is dense but readable, and the primary text-writing purpose comes first. Slight cramming of three distinct behaviors into one line costs it the top mark.
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 5-parameter, destructive mutation tool with no output schema and 0% schema coverage, this is thin: no overwrite/append semantics, no error or permission behavior, and no explanation of the device parameters. An agent would need to trial-and-error 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?
Schema description coverage is 0%, so the description carries the full burden, yet it only obliquely covers mode ('write or append') and content (format hints). Path, deviceId, and deviceName are completely undocumented in both schema and description, leaving the agent guessing how to target a specific device.
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 concrete verb+resource (write/append text) and adds format-specific capabilities (Excel from JSON arrays, DOCX from markdown). It is clearly a file-writing tool. However, it never distinguishes itself from close siblings like fs_write_text, fs_write_chunk, or fs_write_many, which an agent must choose between.
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 the many other write tools in the sibling list, no mention of prerequisites (deviceId/deviceName), and no note on when append vs rewrite is appropriate. Usage must be entirely inferred from the name and enum.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_pdfWrite PDFCDestructive
Create a PDF from markdown/HTML/CSS/SVG or modify an existing PDF with insert/delete operations.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes | ||
| options | No | ||
| deviceId | No | ||
| deviceName | No | ||
| outputPath | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds useful context by disclosing the supported input formats and the insert/delete modify modes, but does not explain what delete operations affect, overwrite semantics, or auth/permission requirements beyond what the annotation implies.
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; the create-vs-modify distinction is stated up front. It is efficient, though the bare enumeration could be marginally better structured.
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 complex tool that both creates and destructively modifies files with 6 parameters and no output schema, the one-line description is thin. It omits parameter guidance, output/return behavior, and the consequences of the destructive modify path, leaving significant gaps for an agent to call 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% across 6 parameters, so the description must carry the load. It only hints at the 'content' parameter via the supported formats (markdown/HTML/CSS/SVG) and leaves path, options, deviceId, deviceName, and outputPath completely unexplained.
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 (create a PDF / modify an existing PDF) and enumerates supported input formats (markdown/HTML/CSS/SVG) plus the modify modes (insert/delete). This is clear and distinctive, though there is no explicit sibling differentiation, which is largely unnecessary given no other PDF tool appears 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?
The description says what the tool does but never states when to use it, when not to, prerequisites, or any alternative tool for overlapping tasks (e.g., write_file). An agent must infer usage entirely.
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.
105 tool updates
v0.8.0- First observed
adb_app - First observed
adb_devices - First observed
adb_find_and_tap - First observed
adb_input - First observed
adb_install - First observed
adb_logcat_start - First observed
adb_packages - First observed
adb_pull - First observed
adb_push - First observed
adb_screenshot - First observed
adb_shell - First observed
adb_ui_dump - First observed
adb_uninstall - First observed
android_app_snapshot - First observed
android_dev_cycle - First observed
build_cache_clear - First observed
build_cache_run - First observed
build_cache_stats - First observed
cloudflare_deploy_verify - First observed
copy_file - First observed
create_directory - First observed
db_execute - First observed
db_info - First observed
db_query_close - First observed
db_query_next - First observed
db_query_sessions - First observed
db_query_start - First observed
delete_path - First observed
desktop_actions - First observed
desktop_windows - First observed
dev_pipeline_cancel - First observed
dev_pipeline_list - First observed
dev_pipeline_logs - First observed
dev_pipeline_resume - First observed
dev_pipeline_start - First observed
dev_pipeline_status - First observed
dev_pipeline_validate - First observed
dev_pipeline_wait - First observed
edit_block - First observed
force_terminate - First observed
foreground_control_acquire - First observed
foreground_control_heartbeat - First observed
foreground_control_pause - First observed
foreground_control_release - First observed
foreground_control_status - First observed
fs_apply_patch_many - First observed
fs_list - First observed
fs_read_chunk - First observed
fs_read_many - First observed
fs_transaction - First observed
fs_write_chunk - First observed
fs_write_many - First observed
fs_write_text - First observed
get_config - First observed
get_file_info - First observed
get_more_search_results - First observed
get_prompts - First observed
get_recent_tool_calls - First observed
get_usage_stats - First observed
git_commit_scope - First observed
git_summary - First observed
give_feedback_to_desktop_commander - First observed
give_feedback_to_raccoon - First observed
http_probe - First observed
interact_with_process - First observed
kill_process - First observed
list_devices - First observed
list_directory - First observed
list_processes - First observed
list_searches - First observed
list_sessions - First observed
move_file - First observed
ping - First observed
process_kill - First observed
process_list - First observed
process_read - First observed
process_resource_snapshot - First observed
process_resource_watch_list - First observed
process_resource_watch_read - First observed
process_resource_watch_start - First observed
process_resource_watch_stop - First observed
process_start - First observed
process_write - First observed
project_build_test - First observed
read_file - First observed
read_multiple_files - First observed
read_process_output - First observed
resource_governor_configure - First observed
resource_governor_status - First observed
resource_snapshot - First observed
screenshot_capture - First observed
secret_list - First observed
set_config_value - First observed
shell_run - First observed
shutdown - First observed
start_process - First observed
start_search - First observed
stop_search - First observed
system_info - First observed
visual_compare - First observed
wait_until - First observed
who_am_i - First observed
worktree_task - First observed
write_file - First observed
write_pdf
TDQS
Scored across 105 tools
The toolset contains numerous overlapping tools across process management (start_process vs process_start, list_sessions vs process_list), file operations (fs_read_many vs read_multiple_files, fs_write_text vs write_file), and feedback aliases, making it hard to pick the right tool without deep inspection. While descriptions sometimes differentiate (e.g., recursive vs non-recursive listing), the sheer volume and redundancy cause frequent ambiguity.
Names are mostly snake_case but follow inconsistent patterns: some use domain prefixes (fs_, process_, adb_, dev_pipeline_), while similar operations use bare verb_noun (read_file, write_file) or noun_verb (process_start vs start_process). The mixed conventions, especially duplicate families for the same domain, reduce predictability.
With 105 tools, the surface is far beyond the recommended 3-15 range and even the 25+ threshold for 'too many,' indicating severe over-scoping. The server would be very difficult for an agent to navigate and likely contains many redundant or rarely used tools.
Coverage is broad and deep across file system, process, ADB, desktop, git, build, pipeline, database, and configuration domains, with full lifecycle tools in many areas. Minor gaps exist (e.g., no explicit secret set/delete, limited git operations), but shell_run can often compensate when enabled.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive Model Context Protocol server implementation that enables AI assistants to interact with file systems, databases, GitHub repositories, web resources, and system tools while maintaining security and control.18 npm2MIT
- FlicenseNot gradedqualityCmaintenanceA secure Model Context Protocol server providing HTTP endpoints for AI agent tool execution, including file system operations, shell commands, and LLM-based code generation.1-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that connects multiple AI models into a single workflow, enabling multi-model orchestration, conversation continuity, and tools like code review, planning, and CLI-to-CLI bridging.-
- AlicenseAqualityDmaintenanceA Model Context Protocol server for secure local system operations, enabling shell command execution and file management via a standardized interface.141Apache 2.0