hyprland-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., "@hyprland-mcpFind the 'Login' button on my screen and click it."
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.
hyprland-mcp
MCP server for Hyprland desktop automation. Gives AI assistants the ability to see the screen, control mouse and keyboard, manage windows, and interact with the desktop — all through Hyprland's native Wayland tools.
Built for Claude Code, but works with any MCP client.
What it does
Screenshots — Capture the full desktop, a specific monitor, window, or region. Images are automatically resized and JPEG-compressed to fit within MCP output limits. Every screenshot includes a coordinate mapping so the AI knows how to translate image positions to screen coordinates.
OCR — Find and click text on screen using Tesseract.
click_text("Send")captures a screenshot, runs OCR, finds the text, and clicks it — all in one tool call. Auto-scopes to the active window for better accuracy.Mouse — Move, click, scroll, and drag. Positioning uses Hyprland's native
movecursor(pixel-accurate, no mouse acceleration issues).Keyboard — Type text or send key combinations. Shortcuts can target specific windows without focusing them.
Window management — List, focus, close, move, resize, fullscreen, and float windows.
Workspaces & monitors — List workspaces, switch between them, query monitor layout and cursor position.
Clipboard — Read and write clipboard text.
App launching — Launch applications through Hyprland (detached, no shell expansion).
Related MCP server: openowl
Requirements
Hyprland (Wayland compositor)
Python 3.10+
System tools:
grim,wtype,ydotool,wl-clipboard,tesseract
The install script checks for all of these and offers to install any that are missing.
Installation
curl -sSL https://raw.githubusercontent.com/alderban107/hyprland-mcp/main/install.sh | bashThe install script handles everything automatically:
Detects your package manager (pacman, apt, dnf, zypper, xbps, emerge, nix)
Installs any missing system dependencies
Installs hyprland-mcp via pipx
Registers the MCP server with Claude Code
Restart Claude Code after installing.
Verify with claude mcp list — you should see hyprland: ✓ Connected.
pipx install git+https://github.com/alderban107/hyprland-mcp.git
claude mcp add --transport stdio --scope user hyprland -- hyprland-mcpOr from a local clone:
git clone https://github.com/alderban107/hyprland-mcp.git
cd hyprland-mcp
python3 -m venv .venv
.venv/bin/pip install -e .
claude mcp add --transport stdio --scope user hyprland -- /path/to/hyprland-mcp/.venv/bin/hyprland-mcpTools (27)
Screenshot & OCR
Tool | Description |
| Capture desktop, monitor, window, or region. Returns inline JPEG + coordinate mapping for translating image positions to screen coordinates. |
| Screenshot + OCR in one call. Returns the image and all detected text. Auto-scopes to active window. |
| Find text on screen via OCR and click it. One tool call replaces screenshot → parse → click. Auto-scopes to active window. |
| Find text on screen via OCR. Returns screen coordinates of all matches, ready for |
| Find a text input field by placeholder text, click it, type, and optionally press Enter. |
Mouse
Tool | Description |
| Move cursor to absolute coordinates (pixel-accurate via Hyprland's |
| Click at position or current location (left/right/middle, single/double) |
| Scroll wheel up/down at position or current location |
| Click-drag from one position to another |
Keyboard
Tool | Description |
| Type text as keyboard input (via |
| Press a key combination like |
| Send a shortcut with explicit modifiers and key, optionally targeting a specific window |
Window Management
Tool | Description |
| List all windows with class, title, size, position (filterable by workspace/monitor) |
| Get details about the currently focused window |
| Focus a window by class or title selector |
| Close a window (WM_CLOSE — apps can show save dialogs) |
| Move a window to a pixel position or workspace |
| Resize a window to exact pixel dimensions |
| Toggle fullscreen or maximize mode |
| Toggle floating mode |
Workspace & Monitor
Tool | Description |
| List connected monitors with resolution, position, refresh rate |
| List active workspaces with window counts |
| Switch to a workspace by name or number |
| Get current cursor position in absolute layout coordinates |
Clipboard & System
Tool | Description |
| Read current clipboard text |
| Write text to clipboard |
| Launch an application (detached, via |
How it works
Screenshot coordinate mapping
Multi-monitor setups and image scaling make coordinate translation tricky. Every screenshot call returns a coordinate mapping alongside the image:
Coordinate mapping: This 941x1030 image covers screen region
starting at absolute (5447, 38), native size 941x1030.
To convert image coordinates to absolute screen coordinates:
screen_x = image_x * 1.00 + 5447
screen_y = image_y * 1.00 + 38This prevents the AI from using image pixel positions directly as screen coordinates — a common failure mode on multi-monitor setups where monitors have different positions in the layout.
OCR and dark themes
Tesseract OCR was designed for black text on white paper. Most desktop apps use dark themes, which tanks OCR accuracy. hyprland-mcp automatically detects dark-background screenshots and inverts them before running OCR, significantly improving text detection.
OCR tools auto-scope to the active window by default (configurable with scope="full" for the entire desktop). Smaller capture area = better OCR accuracy = more reliable coordinate mapping.
Mouse positioning
Mouse movement uses hyprctl dispatch movecursor — Hyprland's native IPC command that sets the cursor to exact pixel coordinates. No mouse acceleration, no relative movement, no coordinate drift. ydotool is only used for click and scroll events (which don't involve positioning).
Screenshot sizing
Screenshots are automatically scaled to fit within MCP output limits. Default: max width 1024px, JPEG quality 60. A 2560x1440 desktop becomes ~80-100KB — small enough for inline display in the conversation.
For reading fine text or UI details, use the region parameter to capture a smaller area at full resolution, or capture a specific window.
Project structure
hyprland_mcp/
server.py # FastMCP instance, all tool definitions, entry point
hyprctl.py # Async wrappers for hyprctl IPC (query, dispatch, batch)
screenshot.py # grim capture + Pillow resize/compress + coordinate mapping
input.py # Mouse (movecursor + ydotool) and keyboard (wtype + sendshortcut)
clipboard.py # wl-copy / wl-paste wrappers
ocr.py # Tesseract OCR with dark-theme preprocessing
errors.py # Exception hierarchy + tool availability checksSafety
close_windowsends WM_CLOSE — apps can show "save changes?" dialogs. There is no force-kill tool.launch_appgoes throughhyprctl dispatch exec— detached from the MCP process, no shell expansion.No file system access — the MCP can see the screen and interact with it, but cannot read or write files.
Missing system tools produce clear error messages listing what to install.
License
MIT
Available Tools
27 toolsclick_textA
Find text on screen and click it — screenshot + OCR + click in one call.
By default, searches only the active window for better accuracy and speed.
Args: target: Text to find and click (case-insensitive) button: Mouse button ("left", "right", "middle") double: Whether to double-click monitor: Limit search to a specific monitor window: Limit search to a specific window (e.g. "class:discord") region: Limit search to a region "X,Y WxH" occurrence: Which match to click if multiple found (1 = first/best, 2 = second, etc.) scope: "auto" (default) searches the active window. "full" searches entire desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| button | No | left | |
| double | No | ||
| monitor | No | ||
| window | No | ||
| region | No | ||
| occurrence | No | ||
| scope | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it's a write/mutation tool (implied by 'click'), describes the default search scope ('active window'), mentions accuracy/speed trade-offs, and explains what happens with multiple matches ('occurrence' parameter). It doesn't cover error handling or permissions, but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured: a front-loaded summary sentence, a key behavioral note, then a well-organized parameter section. Every sentence earns its place with no redundancy. The two-sentence top section efficiently conveys core functionality and default behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 8-parameter tool with no annotations but an output schema, the description is nearly complete: it explains purpose, behavior, and all parameters thoroughly. The output schema presumably handles return values, so the description appropriately focuses on inputs and operation. It could mention error cases (e.g., no match found) but covers most essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for 8 parameters, the description compensates fully by explaining every parameter in the Args section with clear semantics: 'target: Text to find and click (case-insensitive)', 'occurrence: Which match to click if multiple found', etc. This adds crucial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Find text on screen and click it') and details the multi-step process ('screenshot + OCR + click in one call'). It distinguishes itself from siblings like 'find_text_on_screen' (which only finds) and 'mouse_click' (which only clicks), making the combined functionality explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('searches only the active window for better accuracy and speed' and 'scope: "auto" (default) searches the active window. "full" searches entire desktop.'). However, it doesn't explicitly mention when not to use it or name alternatives like 'find_text_on_screen' + 'mouse_click' for separate operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipboard_readA
Read the current clipboard contents as text.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the basic behavior (reading clipboard as text) but does not add context about potential limitations (e.g., platform dependencies, permissions needed, or handling of non-text content). The description is accurate but minimal, offering no extra behavioral traits beyond the core function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It is front-loaded with the core action and resource, making it easy to understand quickly. Every part of the sentence contributes directly to clarifying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, but with an output schema), the description is complete enough for a basic read operation. It specifies the output format ('as text'), and since an output schema exists, detailed return value explanation is unnecessary. However, it could benefit from mentioning any assumptions or constraints, but the gaps are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description does not add parameter semantics, but this is acceptable given the lack of parameters, aligning with the baseline of 4 for zero 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 clearly states the specific action ('Read') and target resource ('current clipboard contents as text'), distinguishing it from sibling tools like clipboard_write (which writes to clipboard) and other unrelated tools. It precisely communicates what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'current clipboard contents,' suggesting it retrieves whatever is currently copied. However, it does not explicitly state when to use this tool versus alternatives (e.g., if there are other clipboard-related tools beyond clipboard_write) or any prerequisites, so it lacks explicit exclusions or comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipboard_writeB
Write text to the clipboard.
Args: text: The text to copy to the clipboard
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action ('Write text to the clipboard') but lacks behavioral details such as platform dependencies, permissions required, whether it overwrites existing clipboard content, or any rate limits. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with the core purpose in the first sentence and parameter details in a brief 'Args' section. Every sentence earns its place without redundancy, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks context on behavioral aspects like side effects or prerequisites, which are important for a clipboard mutation tool with no 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?
The description adds meaningful context for the single parameter 'text' by explaining it's 'The text to copy to the clipboard', which clarifies its purpose beyond the schema's basic type definition. With 0% schema description coverage and only one parameter, this adequately compensates, though it could specify constraints like length limits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Write') and resource ('text to the clipboard'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'clipboard_read' or 'type_text', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention when to choose 'clipboard_write' over 'type_text' for input operations or how it relates to 'clipboard_read'. This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_windowA
Close a window (sends WM_CLOSE — apps can show save dialogs).
Args: target: Window selector (e.g. "class:firefox"). If omitted, closes the active window.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it sends WM_CLOSE (implying a graceful close request) and notes that apps can show save dialogs (important side effect). It doesn't mention permissions, rate limits, or error conditions, but covers the core mutation behavior adequately.
Agents need to know what a tool does to the 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 front-loaded with the core purpose in the first sentence, followed by a concise Args section. Every sentence earns its place by providing essential information without redundancy, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (mutation with one parameter), no annotations, and an output schema present, the description is mostly complete. It explains what the tool does, parameter usage, and behavioral implications, though it could briefly mention what the output might contain (e.g., success/failure status) since output schema exists but isn't described here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains the 'target' parameter as a 'Window selector' with an example ('class:firefox') and clarifies the default behavior when omitted. This fully compensates for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Close a window') and the mechanism ('sends WM_CLOSE — apps can show save dialogs'), distinguishing it from siblings like focus_window or move_window. It specifies the exact behavior rather than just restating the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use it (closing windows) and includes a default behavior (closes active window if target omitted). However, it doesn't explicitly state when not to use it or name alternatives among siblings like toggle_fullscreen for different window actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_text_on_screenA
Find text on screen using OCR. Returns matching locations in screen coordinates.
Take a screenshot, run OCR, and find all occurrences of the target text. Coordinates are in absolute screen space — ready to pass to mouse_click.
Args: target: Text to find (case-insensitive, supports multi-word) monitor: Limit search to a specific monitor window: Limit search to a specific window (e.g. "class:discord") region: Limit search to a region "X,Y WxH" scope: "auto" (default) captures just the active window for better accuracy. "full" captures the entire desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| monitor | No | ||
| window | No | ||
| region | No | ||
| scope | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well. It discloses key behaviors: takes a screenshot, runs OCR, returns coordinates in absolute screen space, case-insensitive search, supports multi-word targets, and accuracy implications of scope settings. It doesn't mention performance characteristics like speed or error rates, but covers the essential operational behavior adequately.
Agents need to know what a tool does to the 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 appropriately sized and front-loaded. The first sentence states the core purpose and output. Subsequent sentences explain the process and parameter details in a structured 'Args:' section. Every sentence adds value with no wasted words, making it easy for an agent to quickly understand and use the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (OCR-based search with multiple scoping options), no annotations, and an output schema (which handles return values), the description is complete. It covers purpose, behavior, all parameter meanings, and usage context. The presence of an output schema means the description doesn't need to explain return format, and it adequately addresses the gaps from missing 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%, so the description must compensate fully. It provides excellent parameter semantics: explains what 'target' is (case-insensitive, multi-word), clarifies 'monitor' and 'window' limit search scope, defines 'region' format ('X,Y WxH'), and details 'scope' options ('auto' vs 'full') with accuracy implications. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find text on screen using OCR. Returns matching locations in screen coordinates.' It specifies the verb (find), resource (text on screen), method (OCR), and output (locations in screen coordinates). It distinguishes from siblings like screenshot_with_ocr (which captures but doesn't search) and mouse_click (which acts on coordinates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: for finding text via OCR with coordinate results 'ready to pass to mouse_click.' It mentions scope options ('auto' vs 'full') for accuracy trade-offs. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings (e.g., screenshot_with_ocr for just OCR without search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
focus_windowB
Focus a window by class or title.
Args: target: Window selector — "class:firefox", "title:My Document", etc.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action ('focus a window') but lacks behavioral details: does it fail if the window doesn't exist? Does it require specific permissions? Is it idempotent? What happens on multi-monitor setups? The description is minimal and misses key operational context for a mutation 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?
The description is extremely concise and front-loaded: the first sentence states the core purpose, followed by a brief 'Args' section with a clear explanation and examples. Every sentence earns its place with no wasted words, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 parameter with 0% schema coverage, the description adequately covers parameter semantics. However, as a mutation tool with no annotations and an output schema (existence noted but content unknown), it lacks behavioral transparency and usage guidelines. The description is minimal but functional, leaving gaps in operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates well. It explains the single parameter 'target' as a 'window selector' with examples ('class:firefox', 'title:My Document', etc.), adding crucial syntax and format details beyond the bare schema. This effectively documents the parameter despite the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('focus') and resource ('a window'), specifying it works by 'class or title'. It distinguishes from siblings like 'get_active_window' (which reads) or 'close_window' (which destroys), but doesn't explicitly contrast with similar tools like 'move_window' or 'resize_window' that also target windows. The purpose is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to bring a window to the foreground, but provides no explicit guidance on when to use this versus alternatives like 'get_active_window' for inspection or 'switch_workspace' for context switching. It lacks prerequisites (e.g., window must exist) or exclusions (e.g., not for minimized windows). Usage is contextually implied but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_windowB
Get details about the currently focused window.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool retrieves details but doesn't disclose behavioral traits such as what specific details are returned, error conditions, permissions required, or performance characteristics. This leaves significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the core purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, output schema provided), the description is minimally adequate. However, with no annotations and an output schema that likely defines return values, the description could benefit from more context on what 'details' include or usage scenarios, leaving room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description doesn't add parameter semantics, but this is acceptable given the lack of parameters, warranting a baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get details about') and resource ('the currently focused window'). It distinguishes itself from siblings like 'list_windows' or 'focus_window' by targeting only the active window, though it doesn't explicitly 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?
The description implies usage when details about the active window are needed, but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'list_windows' or 'focus_window'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cursor_positionA
Get the current cursor position in absolute layout coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the tool's read-only nature by stating 'Get', but lacks details on permissions, rate limits, or what happens if no cursor is available. It adds basic context about coordinate type, but behavioral traits are minimally covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Get the current cursor position') and adds necessary detail ('in absolute layout coordinates') without any wasted words. It is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, output schema provided), the description is mostly complete. It specifies the coordinate type, which is helpful context. However, with no annotations, it could benefit from mentioning behavioral aspects like whether it requires specific permissions or works across all applications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description does not need to add parameter semantics, and it correctly avoids mentioning any parameters, earning a baseline score of 4 for this case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get') and resource ('current cursor position'), including the coordinate type ('absolute layout coordinates'). It distinguishes from siblings like mouse_move (which moves the cursor) or mouse_click (which clicks at a position).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving cursor coordinates, but does not explicitly state when to use this tool versus alternatives like mouse_move (which might return position after movement) or screenshot (which captures visual context). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
key_pressA
Press a key combination.
Uses Hyprland's native sendshortcut — can target specific windows without focusing them.
Args: keys: Key combo string like "ctrl+c", "alt+F4", "super+1", "Return" target: Optional window selector to send the key to (e.g. "class:firefox"). If omitted, sends to the active window.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | ||
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it uses Hyprland's native sendshortcut, can target windows without focusing them, and defaults to the active window if target is omitted. It lacks details on error handling or rate limits, but covers essential operational context effectively.
Agents need to know what a tool does to the 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 front-loaded with the core purpose, followed by technical context and parameter details in a structured format. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no annotations, but with an output schema), the description is largely complete: it explains what the tool does, when to use it, and parameter meanings. The output schema likely handles return values, so no need to detail them. It could improve by mentioning error cases or limitations, but covers the essentials well.
Complex tools with many parameters or behaviors need more documentation. 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, and it does by explaining both parameters: 'keys' with examples like 'ctrl+c' and 'target' with its optional nature and effect (sends to active window if omitted). It adds meaningful semantics beyond the bare schema, though it could specify format constraints more explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Press a key combination') and resource (keyboard input), distinguishing it from siblings like 'type_into' (continuous typing) and 'send_shortcut' (similar but not explicitly using Hyprland's native method). It provides a precise verb+resource combination that is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 includes clear context about when to use it ('can target specific windows without focusing them') and implies alternatives by mentioning Hyprland's native sendshortcut, but does not explicitly name when-not-to-use cases or compare with all siblings like 'send_shortcut'. It provides useful guidance without being exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_appB
Launch an application (detached, via Hyprland).
Args: command: The command to run (e.g. "firefox", "kitty", "nautilus ~/Documents")
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'detached' and 'via Hyprland', which gives some context about execution behavior, but lacks details on permissions, error handling, or what 'detached' implies (e.g., background process). More behavioral traits would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, followed by a clear 'Args' section. It's efficient with no wasted sentences, though the formatting could be slightly more polished (e.g., integrating the args into a single paragraph).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (implied by context signals), the description doesn't need to explain return values. However, as a mutation tool with no annotations and minimal behavioral details, it's adequate but leaves gaps in understanding full context like error cases or system dependencies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining the 'command' parameter with examples ('firefox', 'kitty', 'nautilus ~/Documents'), adding meaningful context beyond the bare schema. With only one parameter, this is sufficient for clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Launch an application') and the mechanism ('detached, via Hyprland'), which is specific. However, it doesn't explicitly differentiate from sibling tools like 'focus_window' or 'close_window', which are also window-related but serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used for opening new applications versus focusing existing ones, or how it relates to tools like 'send_shortcut' for launching apps via keyboard shortcuts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_monitorsA
List all connected monitors with resolution, position, and active workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it indicates this is a read operation ('List'), it doesn't mention potential side effects, permissions needed, rate limits, or what format the output takes. The description is minimal and lacks behavioral context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and immediately specifies the returned data attributes. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, read-only operation) and the presence of an output schema, the description is reasonably complete. It specifies what data will be returned, though it could benefit from more behavioral context about how the data is structured or formatted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters since none exist, maintaining focus on what the tool does rather than what it accepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all connected monitors') and specifies the exact data returned ('with resolution, position, and active workspace'). It distinguishes itself from siblings like 'list_windows' and 'list_workspaces' by focusing exclusively on monitor hardware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (when you need monitor information) but doesn't explicitly state when to use this tool versus alternatives like 'get_active_window' or 'screenshot'. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_windowsA
List all open windows with class, title, size, and position.
Args: workspace: Filter to a specific workspace number monitor: Filter to a specific monitor name
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | ||
| monitor | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes what the tool does but lacks behavioral details like whether it requires permissions, how it handles multiple desktops, if it's read-only, performance characteristics, or error conditions. For a tool that interacts with system windows, 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?
The description is front-loaded with the core purpose in the first sentence, followed by a clean 'Args:' section. Every sentence earns its place with no wasted words, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (listing system windows), no annotations, and an output schema exists (so return values are documented elsewhere), the description is reasonably complete. It covers purpose and parameters well but could benefit from more behavioral context given the lack of 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%, so the description must compensate. It adds meaningful semantics by explaining that 'workspace' filters to a specific workspace number and 'monitor' filters to a specific monitor name, which clarifies beyond the schema's generic titles. However, it doesn't specify format details (e.g., monitor name conventions).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb ('List') and resource ('all open windows') with detailed attributes (class, title, size, position). It distinguishes itself from siblings like 'get_active_window' (which gets only the active window) and 'list_monitors'/'list_workspaces' (which list different resources).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use it (to list open windows with specific attributes) and includes optional filtering parameters. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings (e.g., 'get_active_window' for just the active window).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesB
List all active workspaces with window counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'active workspaces' and 'window counts', but doesn't clarify what 'active' means, whether the list is paginated, if there are rate limits, or what permissions are required. This leaves significant gaps for a tool that likely interacts with system resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'List all active workspaces with window counts.' It is front-loaded with the core purpose and includes a useful detail ('with window counts') without any wasted words. Every part of the sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description doesn't need to explain return values or parameters. However, it lacks behavioral details (e.g., permissions, rate limits) and usage guidelines relative to siblings. For a simple list tool, it's minimally adequate but leaves gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, but it could have mentioned if any implicit filters or options exist. Since there are no parameters, a baseline of 4 is appropriate, as the description adequately covers the tool's scope without parameter confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all active workspaces with window counts.' It specifies the verb ('List'), resource ('active workspaces'), and includes additional detail ('with window counts'). However, it doesn't explicitly differentiate from sibling tools like 'list_windows' or 'list_monitors', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'list_windows' or 'list_monitors', nor does it specify any prerequisites, exclusions, or contextual triggers for usage. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_clickA
Click the mouse at a position (or current position if no coordinates given).
Args: button: "left", "right", or "middle" x: X coordinate to click at (optional — clicks at current position if omitted) y: Y coordinate to click at (optional) double: Whether to double-click
| Name | Required | Description | Default |
|---|---|---|---|
| button | No | left | |
| x | No | ||
| y | No | ||
| double | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the action (click) and optional parameters, but does not disclose behavioral traits such as whether it requires focus on a window, potential side effects (e.g., triggering UI events), or error conditions (e.g., invalid coordinates).
Agents need to know what a tool does to the 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 appropriately sized and front-loaded with the main action, followed by parameter details in a structured format. It avoids unnecessary fluff, though the parameter explanations could be slightly more 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?
Given no annotations, 0% schema coverage, and an output schema (which handles return values), the description covers the basic action and parameters but lacks context on behavioral aspects like permissions, side effects, or error handling, which are important for a mouse interaction tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining each parameter's purpose: button options, x/y as coordinates with default behavior, and double for double-clicking. However, it does not specify coordinate units (e.g., pixels) or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a mouse click action, specifying it can click at a given position or the current position if coordinates are omitted. It distinguishes from siblings like mouse_move (which moves without clicking) and mouse_drag (which drags).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for clicking at specific coordinates or the current position, but does not explicitly state when to use this versus alternatives like click_text (which clicks on text) or send_shortcut (which uses keyboard shortcuts). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_dragC
Drag from one position to another.
Args: start_x: Starting X coordinate start_y: Starting Y coordinate end_x: Ending X coordinate end_y: Ending Y coordinate button: Mouse button to hold during drag ("left", "right", "middle")
| Name | Required | Description | Default |
|---|---|---|---|
| start_x | Yes | ||
| start_y | Yes | ||
| end_x | Yes | ||
| end_y | Yes | ||
| button | No | left |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the action but lacks critical details: whether this requires focus on a specific window, if coordinates are screen-relative or window-relative, what happens if coordinates are out of bounds, whether it's a blocking operation, or if there are rate limits. The description is minimal and doesn't compensate for missing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The parameter explanations are listed efficiently without redundancy. However, the structure could be improved by integrating parameter details more naturally rather than as a separate 'Args:' section, and some sentences could be more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 5 parameters with 0% schema coverage and no annotations, the description is incomplete. It covers the basic action and parameters but lacks context on coordinate systems, behavioral constraints, and error conditions. The presence of an output schema (not detailed here) might help, but the description doesn't reference it or explain what the tool returns, leaving gaps for a UI automation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists all 5 parameters with brief explanations, adding meaning beyond the schema's titles. However, it doesn't specify coordinate systems (e.g., pixels, origin), units, or valid ranges for coordinates, nor does it explain the button enum values beyond listing them. The description partially compensates but leaves key semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Drag from one position to another,' which is a specific verb (drag) with clear spatial context. It distinguishes itself from sibling tools like mouse_click, mouse_move, and mouse_scroll by specifying a dragging action between coordinates. However, it doesn't explicitly mention what's being dragged (e.g., mouse cursor, UI elements), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose mouse_drag over mouse_click or mouse_move, nor does it specify prerequisites like needing a window to be focused or coordinates to be within screen bounds. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_moveA
Move the mouse cursor to absolute layout coordinates.
Uses Hyprland's native movecursor — pixel-accurate, no acceleration issues.
Args: x: Target X coordinate y: Target Y coordinate
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and adds valuable behavioral context: it specifies 'pixel-accurate' precision, mentions 'no acceleration issues,' and identifies the underlying implementation (Hyprland's native movecursor). However, it doesn't disclose potential side effects, error conditions, or performance characteristics.
Agents need to know what a tool does to the 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 perfectly front-loaded with the core purpose in the first sentence, followed by implementation details and parameter explanations. Every sentence earns its place with no wasted words, and the structure (purpose → behavior → parameters) is logical and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 simple parameters), no annotations, and the presence of an output schema (which handles return values), the description is mostly complete. It covers purpose, behavior, and parameters well, though it could benefit from mentioning coordinate system origin or screen boundaries for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by clearly explaining both parameters: 'x: Target X coordinate' and 'y: Target Y coordinate.' It adds meaning beyond the bare schema by specifying these are 'absolute layout coordinates' and 'target' positions, though it doesn't provide coordinate system details or range constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Move the mouse cursor') and target ('to absolute layout coordinates'), distinguishing it from siblings like mouse_click or mouse_drag. It uses precise language that leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for pixel-accurate cursor movement without acceleration, but doesn't explicitly state when to use this versus alternatives like mouse_drag or mouse_click. It mentions Hyprland's native implementation, which provides some context but no explicit guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_scrollB
Scroll the mouse wheel.
Args: direction: "up" or "down" amount: Number of scroll steps (default 3) x: X coordinate to scroll at (optional) y: Y coordinate to scroll at (optional)
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | down | |
| amount | No | ||
| x | No | ||
| y | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the basic action but doesn't disclose behavioral traits like whether scrolling requires focus on a specific window, what happens if coordinates are invalid, if there are rate limits, or system-specific constraints. The description is minimal beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured: a brief purpose statement followed by a clearly formatted parameter list. Every sentence earns its place with no wasted words, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters with 0% schema coverage and no annotations, the description provides basic parameter semantics but lacks behavioral context. The presence of an output schema (not shown) means return values don't need explanation, but for a tool that interacts with the UI system, more guidance on usage constraints would be helpful.
Complex tools with many parameters or behaviors need more documentation. 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 provides clear semantics for all 4 parameters: direction ('up' or 'down'), amount (scroll steps with default), and optional x/y coordinates. This adds meaningful context beyond the bare schema, though it doesn't explain coordinate systems or step units.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Scroll the mouse wheel') with the resource implied. It distinguishes from sibling tools like mouse_click or mouse_move by specifying scrolling behavior. However, it doesn't explicitly differentiate from all possible mouse interactions beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. The description doesn't mention when scrolling is appropriate versus other navigation methods or how it relates to sibling tools like mouse_move or key_press for navigation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_windowB
Move a window to a position or workspace.
Args: target: Window selector. If omitted, moves the active window. x: Target X position in pixels y: Target Y position in pixels workspace: Target workspace name/number to move the window to
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| x | No | ||
| y | No | ||
| workspace | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action ('move') but doesn't disclose important behavioral traits: whether this requires specific permissions, if it works on all window types, what happens when parameters conflict (e.g., both position and workspace specified), error conditions, or what the output contains. The description is minimal beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with a clear two-part structure: purpose statement followed by parameter explanations. Every sentence earns its place, though the formatting with 'Args:' could be slightly more integrated. It's front-loaded with the core functionality 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?
Given 4 parameters with 0% schema coverage and no annotations, the description does adequately explain parameter meanings. However, as a mutation tool with behavioral implications, it lacks context about permissions, constraints, and error handling. The presence of an output schema helps, but the description doesn't reference what the tool returns. It's minimally complete but misses important operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides clear semantic explanations for all 4 parameters: 'target' as window selector with default behavior, 'x' and 'y' as pixel positions, and 'workspace' as name/number. This adds meaningful context beyond the schema's bare titles ('Target', 'X', 'Y', 'Workspace'), though it doesn't specify format details for 'target' or 'workspace' values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Move a window to a position or workspace.' It specifies both spatial movement and workspace transfer capabilities. However, it doesn't explicitly differentiate from sibling tools like 'resize_window' or 'focus_window' beyond the core verb 'move'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'resize_window', 'focus_window', or 'switch_workspace', nor does it explain when moving vs. resizing or focusing is appropriate. The only implicit guidance is that it moves windows, but no context for selection among similar window manipulation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_windowB
Resize a window to exact pixel dimensions.
Args: width: Target width in pixels height: Target height in pixels target: Window selector. If omitted, resizes the active window.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it states the action ('Resize a window'), it doesn't describe what happens if the resize fails, whether it requires specific permissions, if there are size constraints, or what the response looks like. For a mutation tool with zero annotation coverage, this leaves significant behavioral 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 efficiently structured with a clear purpose statement followed by parameter explanations. Every sentence adds value: the first states what the tool does, and the subsequent lines clarify each parameter's role. There's no redundant information, and it's appropriately sized for a tool with three 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?
Given that there's an output schema (which means return values are documented elsewhere), the description covers the basic purpose and parameters adequately. However, as a mutation tool with no annotations, it should ideally mention more about behavioral aspects like error conditions or constraints. The presence of an output schema raises the baseline, but the lack of behavioral context keeps the score at a minimum viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the input schema. The schema has 0% description coverage, providing only titles and types. The description explains that width and height are 'Target width in pixels' and 'Target height in pixels', and clarifies that 'target' is a 'Window selector' with default behavior when omitted. This compensates well for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Resize') and resource ('a window'), and specifies the action is to exact pixel dimensions. It distinguishes itself from siblings like 'move_window' or 'toggle_fullscreen' by focusing specifically on dimension adjustment. However, it doesn't explicitly contrast with all possible window manipulation tools 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 provides some usage context by mentioning that if the 'target' parameter is omitted, it resizes the active window. This gives basic guidance on when to specify the target parameter. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'toggle_fullscreen' or 'move_window', nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotA
Take a screenshot and return it as an inline image with coordinate mapping.
Returns the image AND a coordinate mapping guide so you can convert image pixel positions to absolute screen coordinates for mouse tools.
Supports three capture modes:
Full desktop/monitor (default): overview at reduced resolution
Window: capture a specific window by class/title
Region: capture a specific rectangle at higher resolution
Args: monitor: Capture a specific monitor (e.g. "DP-1"). Default: all monitors. window: Capture a specific window by selector (e.g. "class:firefox") region: Capture a region as "X,Y WxH" (e.g. "100,200 800x600") max_width: Maximum output width in pixels (default 1024, lower = smaller output) quality: JPEG quality 1-100 (default 60, lower = smaller output) include_cursor: Whether to include the cursor in the screenshot
| Name | Required | Description | Default |
|---|---|---|---|
| monitor | No | ||
| window | No | ||
| region | No | ||
| max_width | No | ||
| quality | No | ||
| include_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of behavioral disclosure. It does an excellent job describing what the tool returns (image + coordinate mapping), the three capture modes with their characteristics, and default behaviors. It explains resolution differences between modes and output size/quality tradeoffs. The only minor gap is not mentioning potential failure modes or performance characteristics.
Agents need to know what a tool does to the 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 perfectly structured and concise. It starts with the core purpose, explains the return value, lists capture modes, then details each parameter with clear formatting. Every sentence adds value with no redundancy. The bullet points and parameter explanations are efficiently organized for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the description provides excellent coverage of inputs, behaviors, and outputs. It explains what the tool returns (image + coordinate mapping) and how to interpret it. The only minor gap is not explicitly describing the exact format of the coordinate mapping or providing example return values, which would be helpful given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must fully compensate, which it does excellently. It provides detailed explanations for all 6 parameters: what each controls, default values, format examples (e.g., '100,200 800x600'), value ranges (quality 1-100), and practical implications (lower quality = smaller output). The description adds substantial meaning beyond what the bare schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Take a screenshot and return it as an inline image with coordinate mapping.' It specifies the exact action (take screenshot) and output format (inline image with coordinate mapping), distinguishing it from sibling tools like 'screenshot_with_ocr' which implies OCR functionality. The description goes beyond just restating the name by explaining the coordinate mapping feature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool by explaining the three capture modes (full desktop, window, region) and their purposes. It distinguishes between default behavior and specialized options. However, it doesn't explicitly mention when NOT to use it or name specific alternatives like 'screenshot_with_ocr' for when OCR is needed, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshot_with_ocrA
Take a screenshot AND run OCR, returning both the image and extracted text.
More efficient than calling screenshot + find_text_on_screen separately. The text includes screen coordinates for every detected word.
Args: monitor: Capture a specific monitor window: Capture a specific window (e.g. "class:discord") region: Capture a region as "X,Y WxH" max_width: Maximum output width for the image (default 1024) quality: JPEG quality for the image (default 60) scope: "auto" (default) captures the active window. "full" captures entire desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor | No | ||
| window | No | ||
| region | No | ||
| max_width | No | ||
| quality | No | ||
| scope | No | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the tool performs both screenshot capture and OCR in one call, returns both image and text, includes screen coordinates for detected words, and has default values for parameters. However, it doesn't mention potential side effects, error conditions, or performance characteristics like execution time.
Agents need to know what a tool does to the 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 well-structured and front-loaded: the first sentence states the core purpose, the second explains efficiency benefit, the third adds text detail, then parameters are clearly listed with explanations. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters with 0% schema coverage and no output schema, the description does an excellent job explaining inputs and basic behavior. However, it doesn't describe the output format (what the returned image and text look like structurally) or error handling. For a tool with no output schema, this leaves some ambiguity about what the agent will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully. It provides detailed semantics for all 6 parameters: explains what 'monitor', 'window', and 'region' capture, defines 'max_width' and 'quality' with defaults, and clarifies 'scope' with 'auto' vs 'full' behavior. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Take a screenshot AND run OCR, returning both the image and extracted text.' It specifies the verb ('take' and 'run'), resource ('screenshot' and 'OCR'), and distinguishes from sibling tools by noting it's 'more efficient than calling screenshot + find_text_on_screen separately.' This is specific and differentiates from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'More efficient than calling screenshot + find_text_on_screen separately' directly compares to sibling tools. It also explains when to use specific parameters like 'scope: "auto" (default) captures the active window. "full" captures entire desktop,' giving clear context for parameter selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_shortcutB
Send a keyboard shortcut via Hyprland (can target specific windows).
Args: mods: Modifier keys (e.g. "CTRL", "SUPER SHIFT", "ALT CTRL", or "" for none) key: Key name (e.g. "c", "F4", "Return", "space") target: Optional window selector (e.g. "class:firefox"). Empty = active window.
| Name | Required | Description | Default |
|---|---|---|---|
| mods | Yes | ||
| key | Yes | ||
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions the action is 'via Hyprland' but doesn't disclose critical traits like whether this requires specific permissions, potential side effects (e.g., window focus changes), error conditions, or response format. The description doesn't contradict annotations, but fails to compensate for their absence.
Agents need to know what a tool does to the 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 efficiently structured with a purpose statement followed by parameter explanations. Each sentence adds value: the first sets context, and the Args section clarifies parameters without redundancy. It could be slightly more front-loaded by integrating key usage notes earlier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 3 parameters with 0% schema coverage and no annotations, the description does well on parameters but lacks behavioral context. The presence of an output schema (not shown here) means return values may be documented elsewhere, reducing burden. However, for a tool that interacts with window management, more guidance on effects and limitations would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides clear semantic explanations for all three parameters: 'mods' as modifier keys with examples, 'key' as key name with examples, and 'target' as an optional window selector with behavior clarification ('Empty = active window'). This adds substantial value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Send a keyboard shortcut') and target environment ('via Hyprland'), with a specific feature mention ('can target specific windows'). It distinguishes from sibling tools like 'key_press' or 'type_text' by focusing on shortcut combinations rather than individual key presses or text typing. However, it doesn't explicitly contrast with all similar siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through 'can target specific windows' and the target parameter explanation, suggesting when to use optional targeting. However, it lacks explicit guidance on when to choose this tool over alternatives like 'key_press' or 'type_text', and doesn't mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_workspaceB
Switch to a workspace by name or number.
Args: workspace: Workspace name or number (e.g. "1", "3", "special:scratchpad")
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions the action ('switch') but doesn't clarify effects: whether this changes the user's active workspace view, moves windows, requires specific permissions, or has side effects. The example parameter value ('special:scratchpad') hints at special workspace types but doesn't explain them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences: one stating the purpose and one explaining the parameter. The Args section is clearly separated, though the example could be more integrated. No wasted words, but could be slightly more front-loaded with 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?
Given 1 parameter with 0% schema coverage but good description compensation, and an output schema exists (so return values needn't be explained), the description is minimally adequate. However, as a workspace-switching tool with no annotations, it should better explain behavioral implications and relationships to sibling tools for full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value beyond the schema, which has 0% description coverage. It explains that the 'workspace' parameter accepts either a name or number, provides examples ('1', '3', 'special:scratchpad'), and clarifies the format. This compensates well for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('switch to') and target resource ('workspace'), specifying it can be done by name or number. However, it doesn't distinguish this tool from its sibling 'list_workspaces' or explain how switching workspaces relates to other window management tools like 'focus_window' or 'move_window'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing to know workspace names/numbers from 'list_workspaces'), nor does it explain what 'switching' entails in this context (e.g., changing active workspace vs. moving windows).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_floatingB
Toggle floating mode for a window.
Args: target: Window selector. If omitted, toggles the active window.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool toggles floating mode, implying a mutation operation, but doesn't disclose what floating mode entails, whether it requires specific permissions, what happens to window state, or any side effects. This leaves significant gaps in understanding the tool's behavior beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured: a clear purpose statement followed by a brief parameter explanation. Every sentence earns its place, with no wasted words. It's front-loaded with the main action, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there's an output schema (which should cover return values), the description doesn't need to explain outputs. However, for a mutation tool with no annotations, 0% schema description coverage, and one parameter, the description is minimal. It covers the basic action and parameter default but lacks details on behavior, error cases, or integration with sibling tools, making it 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?
The description adds meaningful context for the single parameter 'target', explaining that it's a 'Window selector' and specifying default behavior when omitted. Since schema description coverage is 0% (the schema only provides a title 'Target' without description), this compensates well. However, it doesn't detail what constitutes a valid 'Window selector' (e.g., format, examples), leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Toggle floating mode for a window.' It specifies the verb ('toggle') and resource ('floating mode for a window'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'toggle_fullscreen' or 'move_window', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance by explaining that if the 'target' argument is omitted, it toggles the active window. This gives some context on when to use default behavior. However, it lacks explicit guidance on when to use this tool versus alternatives like 'toggle_fullscreen' or other window management tools, and doesn't mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_fullscreenA
Toggle fullscreen for the active window.
Args: mode: "fullscreen" for real fullscreen, "maximize" for maximized (keeps bar)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fullscreen |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it explains the two mode behaviors ('fullscreen' vs 'maximize'), it doesn't mention permissions needed, whether the change is reversible, potential side effects, or what happens if no active window exists. For a window manipulation tool with zero annotation coverage, this leaves significant behavioral 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 appropriately sized with two sentences that each earn their place. The first sentence states the core purpose, and the second explains the parameter semantics. However, the structure could be slightly improved by front-loading the parameter explanation rather than placing it in a separate 'Args:' section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (window manipulation), no annotations, 1 parameter with 0% schema coverage, but with an output schema present, the description is reasonably complete. It explains what the tool does and parameter meanings, though it could benefit from more behavioral context about permissions, errors, or side effects that the output schema might not cover.
Complex tools with many parameters or behaviors need more documentation. 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 and only 1 parameter, the description fully compensates by explaining the 'mode' parameter's two possible values and their semantic differences ('real fullscreen' vs 'maximized (keeps bar)'). This adds meaningful context beyond what the bare schema provides, though it doesn't cover edge cases or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('toggle fullscreen') and target resource ('active window'), distinguishing it from sibling tools like 'resize_window' or 'maximize_window' (which doesn't exist). It provides a precise verb+resource combination that leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through 'active window' but doesn't explicitly state when to use this tool versus alternatives like 'resize_window' or 'maximize' (if available). It provides some guidance through parameter descriptions but lacks explicit when/when-not instructions or named alternatives for similar functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
type_intoA
Find a text input field, click it, type text, and optionally submit.
Combines focus + OCR + click + type + Enter into one action. Searches for placeholder text in the active window to find the input field.
Args: text: The text to type input_hint: Placeholder or label text near the input field to click on (e.g. "Type a message", "Search", "Message"). If omitted, tries common placeholders. submit: Whether to press Enter after typing (default False) window: Target a specific window (e.g. "class:signal"). Default: active window.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| input_hint | No | ||
| submit | No | ||
| window | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it performs OCR to find fields, searches the active window by default, tries common placeholders if input_hint is omitted, and includes a submit option. It doesn't mention error handling, performance characteristics, or platform dependencies, but covers core functionality adequately.
Agents need to know what a tool does to the 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 appropriately sized and front-loaded: the first sentence states the core purpose, followed by key behavioral context, then a well-structured parameter section. Every sentence adds value with zero waste, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no annotations, but has output schema), the description is mostly complete. It explains what the tool does, when to use it, and all parameters. Since an output schema exists, it doesn't need to explain return values. Minor gaps include lack of error cases or performance notes, but it's sufficient for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It successfully adds meaning for all 4 parameters: explains 'text' is the text to type, 'input_hint' is placeholder/label text for finding the field with examples, 'submit' controls Enter press with default, and 'window' targets specific windows with an example. This goes well beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs (find, click, type, submit) and resources (text input field). It distinguishes from siblings like 'type_text' by explaining it combines multiple actions (focus + OCR + click + type + Enter) and searches for placeholder text, making the scope and differentiation explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to type text into an input field with optional submission) and implies alternatives by mentioning it 'combines' multiple actions, suggesting it could replace separate tools like 'click_text' + 'type_text'. However, it lacks explicit when-not-to-use guidance or named alternatives 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.
type_textB
Type text as if from a keyboard.
Args: text: The text to type delay_ms: Delay between keystrokes in milliseconds (0 = instant)
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| delay_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool types text with a delay, implying a write operation, but lacks details on permissions needed, side effects (e.g., focus requirements), error conditions, or rate limits. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose statement, followed by concise parameter explanations. Every sentence earns its place by adding value, though the structure could be slightly improved by integrating usage context. It avoids redundancy and is appropriately sized for 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?
Given the tool's moderate complexity (2 parameters, no annotations, but with an output schema), the description is partially complete. It covers the basic action and parameters but lacks behavioral details like focus requirements or error handling. The presence of an output schema reduces the need to explain return values, but more context is needed for safe use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for both parameters beyond the schema's 0% coverage. It explains that 'text' is 'The text to type' and 'delay_ms' defines 'Delay between keystrokes in milliseconds (0 = instant)', clarifying their roles and the default behavior. This compensates well for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Type') and resource ('text'), and it distinguishes itself from siblings like 'key_press' (single keys) and 'type_into' (context-specific typing) by focusing on general keyboard text input. The phrase 'as if from a keyboard' adds clarity about the simulation aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'type_into', 'key_press', or 'send_shortcut'. It mentions no prerequisites, exclusions, or specific contexts, leaving the agent to infer usage from the tool name alone without explicit direction.
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.
27 tool updates
v0.1.0- First observed
click_text - First observed
clipboard_read - First observed
clipboard_write - First observed
close_window - First observed
find_text_on_screen - First observed
focus_window - First observed
get_active_window - First observed
get_cursor_position - First observed
key_press - First observed
launch_app - First observed
list_monitors - First observed
list_windows - First observed
list_workspaces - First observed
mouse_click - First observed
mouse_drag - First observed
mouse_move - First observed
mouse_scroll - First observed
move_window - First observed
resize_window - First observed
screenshot - First observed
screenshot_with_ocr - First observed
send_shortcut - First observed
switch_workspace - First observed
toggle_floating - First observed
toggle_fullscreen - First observed
type_into - First observed
type_text
TDQS
Scored across 27 tools
Most tools have distinct purposes, but there is some overlap between key_press and send_shortcut (both handle keyboard shortcuts) and between find_text_on_screen and screenshot_with_ocr (both involve OCR and text detection). However, descriptions clarify differences like send_shortcut using Hyprland's native method and screenshot_with_ocr combining screenshot and OCR in one call, preventing major confusion.
All tool names follow a consistent snake_case pattern with clear verb_noun structures (e.g., click_text, clipboard_read, focus_window). There are no deviations in naming style, making the set predictable and easy to parse for an agent.
With 27 tools, the count is borderline high for a Hyprland automation server, as it includes many granular actions (e.g., separate mouse_click, mouse_drag, mouse_move). While comprehensive, it may feel heavy and could potentially be streamlined without losing functionality.
The tool set provides extensive coverage for Hyprland window management and automation, including window control (focus, move, resize, close), input simulation (mouse, keyboard, typing), clipboard operations, workspace management, and OCR-based interactions. There are no obvious gaps; agents can perform complex workflows without dead ends.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA desktop automation MCP server that enables AI agents to interact with Linux environments through screenshots, window inspection, and input simulation. It provides tools for mouse control, keyboard input, and screen capture using xdotool and XDG Desktop Portals.MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that gives any AI assistant eyes and hands on your desktop — screenshots, clicking, typing, OCR, window management, accessibility-tree queries, workflow recording.5Apache 2.0
- FlicenseNot gradedqualityCmaintenanceAn MCP server that gives a model eyes and hands on a Linux Wayland desktop, enabling screenshot capture, mouse/keyboard control, OCR, and icon detection via OmniParser.1-
- AlicenseAqualityAmaintenanceAn MCP server for Hyprland that enables AI agents to control workspaces, windows, mouse, keyboard, and take screenshots on a Wayland desktop.14249 PyPI23MIT