Skip to main content
Glama
alderban107

hyprland-mcp

by alderban107

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 | bash

The install script handles everything automatically:

  1. Detects your package manager (pacman, apt, dnf, zypper, xbps, emerge, nix)

  2. Installs any missing system dependencies

  3. Installs hyprland-mcp via pipx

  4. 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-mcp

Or 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-mcp

Tools (27)

Screenshot & OCR

Tool

Description

screenshot

Capture desktop, monitor, window, or region. Returns inline JPEG + coordinate mapping for translating image positions to screen coordinates.

screenshot_with_ocr

Screenshot + OCR in one call. Returns the image and all detected text. Auto-scopes to active window.

click_text

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

Find text on screen via OCR. Returns screen coordinates of all matches, ready for mouse_click.

type_into

Find a text input field by placeholder text, click it, type, and optionally press Enter.

Mouse

Tool

Description

mouse_move

Move cursor to absolute coordinates (pixel-accurate via Hyprland's movecursor)

mouse_click

Click at position or current location (left/right/middle, single/double)

mouse_scroll

Scroll wheel up/down at position or current location

mouse_drag

Click-drag from one position to another

Keyboard

Tool

Description

type_text

Type text as keyboard input (via wtype)

key_press

Press a key combination like ctrl+c, alt+F4 (via Hyprland sendshortcut)

send_shortcut

Send a shortcut with explicit modifiers and key, optionally targeting a specific window

Window Management

Tool

Description

list_windows

List all windows with class, title, size, position (filterable by workspace/monitor)

get_active_window

Get details about the currently focused window

focus_window

Focus a window by class or title selector

close_window

Close a window (WM_CLOSE — apps can show save dialogs)

move_window

Move a window to a pixel position or workspace

resize_window

Resize a window to exact pixel dimensions

toggle_fullscreen

Toggle fullscreen or maximize mode

toggle_floating

Toggle floating mode

Workspace & Monitor

Tool

Description

list_monitors

List connected monitors with resolution, position, refresh rate

list_workspaces

List active workspaces with window counts

switch_workspace

Switch to a workspace by name or number

get_cursor_position

Get current cursor position in absolute layout coordinates

Clipboard & System

Tool

Description

clipboard_read

Read current clipboard text

clipboard_write

Write text to clipboard

launch_app

Launch an application (detached, via hyprctl dispatch exec)

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 + 38

This 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 checks

Safety

  • close_window sends WM_CLOSE — apps can show "save changes?" dialogs. There is no force-kill tool.

  • launch_app goes through hyprctl 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 tools
click_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
buttonNoleft
doubleNo
monitorNo
windowNo
regionNo
occurrenceNo
scopeNoauto

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
monitorNo
windowNo
regionNo
scopeNoauto

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysYes
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, 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.

Purpose5/5

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.

Usage Guidelines4/5

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")

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceNo
monitorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It 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

ParametersJSON Schema
NameRequiredDescriptionDefault
buttonNoleft
xNo
yNo
doubleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It 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.

Purpose5/5

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.

Usage Guidelines3/5

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")

ParametersJSON Schema
NameRequiredDescriptionDefault
start_xYes
start_yYes
end_xYes
end_yYes
buttonNoleft

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It 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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It 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

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
directionNodown
amountNo
xNo
yNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It 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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
xNo
yNo
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It 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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
monitorNo
windowNo
regionNo
max_widthNo
qualityNo
include_cursorNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
monitorNo
windowNo
regionNo
max_widthNo
qualityNo
scopeNoauto

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate 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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modsYes
keyYes
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It 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.

Purpose4/5

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.

Usage Guidelines3/5

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")

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNofullscreen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
input_hintNo
submitNo
windowNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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

Schema description coverage is 0%, so the description must 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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
delay_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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.

  1. 27 tool updatesv0.1.0
    • First observedclick_text
    • First observedclipboard_read
    • First observedclipboard_write
    • First observedclose_window
    • First observedfind_text_on_screen
    • First observedfocus_window
    • First observedget_active_window
    • First observedget_cursor_position
    • First observedkey_press
    • First observedlaunch_app
    • First observedlist_monitors
    • First observedlist_windows
    • First observedlist_workspaces
    • First observedmouse_click
    • First observedmouse_drag
    • First observedmouse_move
    • First observedmouse_scroll
    • First observedmove_window
    • First observedresize_window
    • First observedscreenshot
    • First observedscreenshot_with_ocr
    • First observedsend_shortcut
    • First observedswitch_workspace
    • First observedtoggle_floating
    • First observedtoggle_fullscreen
    • First observedtype_into
    • First observedtype_text

TDQS

A3.7/5.0

Scored across 27 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that gives any AI assistant eyes and hands on your desktop — screenshots, clicking, typing, OCR, window management, accessibility-tree queries, workflow recording.
    5
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    An 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
    -
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server for Hyprland that enables AI agents to control workspaces, windows, mouse, keyboard, and take screenshots on a Wayland desktop.
    14
    249 PyPI
    23
    MIT