Skip to main content
Glama

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation4/5

    Most tools target distinct resource-action pairs (mouse, keyboard, window, app, clipboard). The observation/verification trio (find_text, wait, verify) has overlapping text-matching concepts, but descriptions clearly delineate fuzzy search vs exact wait vs assertion, so agents can select correctly.

    Naming Consistency4/5

    The set uses a consistent underscore style but mixes noun-verb (window_list, mouse_move) with verb-noun (get_state, find_text) and bare verbs/nouns (wait, screenshot). Within each domain (mouse, clipboard, window, app) the pattern is consistent, so it's predictable overall.

    Tool Count4/5

    22 tools is on the high end, but the server's scope is broad GUI automation (input, observation, window management, clipboard, verification), so each tool covers a distinct capability and the count is justifiable.

    Completeness5/5

    The tool surface covers the full interactive loop: observe (screenshot, get_ui_tree, find_text), act (mouse, keyboard, clipboard), manage windows/apps, and verify outcomes (wait, verify). No obvious dead ends; sequences allow batching.

  • Average 4/5 across 22 of 22 tools scored. Lowest: 3.3/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 6 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description must carry the burden of behavioral disclosure. It does not explicitly state that the tool is read-only or side-effect-free, but the wording 'Re-orientation' and the act of listing state items strongly imply a non-destructive observation. It also fails to mention aspects like whether include_history affects output or how metadata is returned, leaving some behavioral ambiguity.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is a single concise sentence, front-loading the purpose with 'Re-orientation' and listing the key state components without redundancy or filler. Every word contributes meaningful information.

    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?

    The tool has low complexity (one optional parameter, no output schema), and the description lists the main state categories, which provides a basic understanding. However, it lacks details about the form of the outputs (e.g., whether cursor position includes coordinates, what 'displays' means, how history is structured) and does not explain the include_history parameter, leaving the description incomplete for an agent to anticipate exact return values.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

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

    The schema has one optional parameter, include_history, with type, default, and range but no semantic explanation. The description mentions 'recent action history' as part of the state, but does not link it to the parameter or clarify how the integer value controls history inclusion (e.g., whether 0 means none). With 0% schema description coverage, the description should compensate, but it does not adequately explain parameter behavior.

    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 identifies the tool as a state/orientation snapshot, enumerating specific contents: cursor position, displays, last screenshot metadata, kill-switch status, and recent action history. It distinguishes itself from sibling action tools by listing these unique state components, though it lacks an explicit verb like 'retrieve' or 'get', relying on the tool name.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

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

    The term 'Re-orientation' implies using this tool when an agent needs to determine current state, but it does not explicitly state when to use versus alternatives or provide exclusions. There are no alternative tool names or scenarios mentioned, leaving the usage context somewhat implicit.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior2/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries full transparency burden. It states the basic action but omits critical behavioral details: what happens if both 'text' and 'image_b64' are provided, whether they are mutually exclusive, size limits (though schema has maxLength for text), and error behavior. The absence of these disclosures leaves ambiguity for the agent.

    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, focused sentence that communicates the core function without any wasted words. It is appropriately sized for a simple tool and immediately front-loads the purpose.

    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?

    For a simple clipboard setter, the description covers the essential function, but gaps remain: no mention of mutual exclusivity or precedence of parameters, no handling of empty input, and no note about whether the operation is synchronous or has side effects. These missing edge cases make it adequate but not fully complete.

    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?

    The schema covers 0% of parameter descriptions, so the description must compensate. It successfully maps 'text' to text content and 'image_b64' to a base64 PNG, and the word 'or' implies mutual exclusivity. However, it doesn't explain constraints (e.g., max length, encoding requirements) or clarify what happens if neither parameter is provided.

    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 uses a specific verb ('Set') and resource ('the clipboard'), clearly distinguishing it from siblings like clipboard_get and clipboard_paste. It also enumerates the two supported content types (text, base64 PNG), making the tool's scope unmistakable.

    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 when to use the tool (any time you want to set clipboard content) but offers no explicit guidance on alternatives, exclusions, or when to choose text versus image. It relies on the obviousness of the operation rather than providing directional advice.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    The description reveals a non-obvious behavior: close may trigger 'Don't Save' dialogs and requires confirmation under default policy. Given no annotations exist, this adds valuable safety information, though other actions' side effects are not detailed.

    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?

    Two sentences, front-loaded with the action list, with a concise caveat. No filler.

    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?

    Covers the main actions and a key caveat, but lacks parameter details (e.g., bounds needed for move/resize) and any mention of how window_ref is obtained. For a multi-action tool with no annotations or output schema, additional context would improve completeness.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/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 explain parameters. It only repeats the action enum and mentions close, but does not describe window_ref or bounds semantics or when they are required.

    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 enumerates the window management actions (move, resize, minimize, etc.) and identifies the target resource (a window). It distinguishes from sibling tools like window_focus and window_list by covering a distinct set of state-changing operations.

    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 explicit guidance is provided on when to use this tool versus alternatives such as window_focus or mouse_drag. The description mentions caveats for close but does not state usage context or exclusions.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full burden of behavioral disclosure. It discloses the press-drag-release sequence and the coordinate system origin (top-left of main display). It does not mention potential side effects, button behavior during drag, or consequences of invalid paths, leaving some behavioral aspects opaque.

    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 exceptionally concise: two sentences. The first sentence states the action and the second provides coordinate computation context. There is no redundant information or filler.

    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 output schema, the description does not need to specify return values. It covers the core operation and coordinate system, but leaves optional parameter behaviors (button, duration, fresh screenshot requirement) unexplained. For a tool of moderate complexity, this is a notable gap.

    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?

    The description adds meaningful semantics for the 'path' parameter, explaining that coordinates are logical points and how to compute them from screenshot metadata. However, it provides no explanation for 'button', 'duration_ms', or 'require_fresh_screenshot', which is notable given the schema description coverage is 0%.

    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 explicitly states the action: 'Press, drag along path, release.' This clearly indicates a mouse drag operation, distinguishing it from sibling tools like mouse_move (which moves without pressing) and mouse_click (which clicks at a point). The mention of coordinate computation from screenshot metadata further defines the tool's scope.

    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 drag gestures but does not explicitly contrast it with alternatives or state when not to use it. However, it does provide a critical usage tip: coordinates are logical points derived from the screenshot tool's bounds_pt and px_per_pt metadata, which aids correct invocation.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    The description discloses key behaviors: it moves the cursor to (x,y) before scrolling, and explains the sign convention for dy and the unit switch to pixels. However, it omits any mention of dx (horizontal scroll), which is a significant behavioral gap given no annotations are provided to cover it.

    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, tightly-worded sentence that front-loads the action and packs in essential details without redundancy. Every phrase adds value, making it highly concise and well-structured.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness2/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the lack of annotations and output schema, the description needs to cover all relevant behavioral and parameter details. It covers several aspects but misses dx entirely, and doesn't mention return values or edge cases (e.g., if both dx and dy are provided). This incompleteness leaves the tool under-specified for an agent to use correctly in all cases.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

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

    With 0% schema description coverage, the description carries the full burden for parameter meaning. It explains x/y (optional coordinates, moves there first), dy (vertical direction and units), and pixels (unit toggle). But dx is completely undocumented, so an agent would not know it represents horizontal scrolling. This is a notable omission.

    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 scrolls the mouse at specified coordinates or at the current cursor, using a specific verb ('Scroll') and resource (mouse). It distinguishes this from sibling tools like mouse_move or mouse_click by focusing on the scroll action and its coordinate behavior.

    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 on when to use coordinates versus current cursor (if x/y are omitted) and explains direction semantics. However, it does not explicitly exclude alternatives or mention when not to use the tool, so it's clear guidance but not fully explicit about alternatives.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • 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 injection method and the need for focus, but does not explain chunk_delay_ms behavior, handling of special characters, or error behavior. This is partial transparency.

    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 two sentences, directly addresses the core action, and front-loads the key information without any filler. Every word earns its place.

    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?

    For a tool with no annotations and no output schema, the description covers the basic use case but omits details like chunking behavior, the effect of the delay parameter, and failure modes. It is minimally sufficient but has clear gaps.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/5

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

    Schema coverage is 0% and the description does not explain parameters. 'text' is obvious from context, but 'chunk_delay_ms' is left unexplained. The description only indirectly maps to the text parameter, failing to compensate for the schema gap.

    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 function: 'Type text into the focused element' with a specific method (layout-independent unicode injection). It distinguishes itself from sibling tools like key_press and clipboard_paste by its scope and mechanism.

    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?

    It provides a clear prerequisite: 'Click the target field first.' This gives concrete guidance for when to use the tool, but it does not explicitly contrast with alternatives or mention scenarios where it should not be used, so it is not a full 5.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • 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 usefully discloses the coordinate conversion details (bounds_pt, px_per_pt and the formula), which is critical behavioral context. However, it does not explain the behavior of parameters like 'fresh' (caching), 'format', or 'max_dim', nor any side effects or permissions. The disclosure is partial.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is three concise sentences. The first states the core action, the second provides the essential coordinate formula, and the third gives a usage guideline. Every sentence adds value and there is no wasted text.

    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?

    With 4 parameters, no annotations, and no output schema, the description provides the most critical information (purpose and coordinate mapping) but leaves parameter semantics unexplained. It is enough for a basic screenshot use case but not fully complete for an agent to leverage advanced features like fresh or max_dim.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/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 only hints at the 'region' parameter via 'or a region, in points,' and the coordinate formula indirectly relates to that. It fails to explain 'fresh', 'format', and 'max_dim' parameters, which are left entirely to the schema (which offers little beyond names and default values).

    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: 'Capture the screen (or a region, in points).' It uses a specific verb ('capture') and resource ('screen'), and the parenthetical 'or a region' distinguishes it from screen-wide capture tools. This is distinct from sibling tools like get_ui_tree or find_text.

    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 a clear usage directive: 'Take a screenshot before any coordinate action.' This tells the agent when this tool is appropriate. However, it does not explicitly mention when not to use it or name alternatives, so it falls short of a 5.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    Without annotations, the description discloses key behaviors: timeout returns met=false (not an error), and text_present requires exact case-insensitive substring matching. It also specifies optional region. This goes beyond a simple statement of effects, though it doesn't cover every edge case.

    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?

    Two sentences deliver the core functionality, condition formats, timeout behavior, and matching rule without wasted words. The structure uses a compact notation that is readable.

    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?

    The description provides enough detail to use the tool correctly for its listed conditions and timeout behavior. Missing elements include a success return description and explicit usage comparisons, but the core semantics are covered.

    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?

    The schema has 0% description coverage, and the description compensates by explaining the condition object variants ({type: 'duration'}, {type: 'text_present'}, {type: 'screen_stable'}). However, it does not reference the top-level duration_ms parameter or explicitly define timeout_ms semantics, leaving some schema properties under-explained.

    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 identifies the tool as a wait operation with three explicit condition types, making its purpose specific. However, it doesn't explicitly contrast with sibling tools like verify or find_text, so it falls short of full differentiation.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines3/5

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

    The description conveys when to use the tool (to wait for a duration, text, or stable screen) but provides no explicit guidance on choosing it over siblings like find_text or verify. Usage is implied rather than prescribed.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • 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 of behavioral disclosure. It reveals that the tool activates an already running app and that wait_for_window makes it wait for the first window. This goes beyond mere launch semantics, but it does not explain error handling or timeout behavior.

    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, concise sentence with no filler. It is front-loaded with the core action and efficiently incorporates behavioral 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?

    The tool is simple, but the description does not cover all aspects an agent might need. It omits timeout_ms semantics and potential failure modes, and it does not clarify what happens when wait_for_window is false. Given no output schema, the description is functional but not fully complete.

    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?

    The description adds meaning to the 'app' parameter (bundle id preferred, or name) and to 'wait_for_window' (waits for first window), but it completely omits 'timeout_ms'. Since schema descriptions are absent (0% coverage), the description only partially compensates for the gap.

    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: 'Launch an app by bundle id (preferred) or name.' It uses a specific verb and resource, and the activation behavior distinguishes it from siblings like app_close or app_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 guidance by preferring bundle id over name, but it does not explicitly say when to use this tool versus alternatives like window_focus or app_list. It also lacks exclusions or when-not-to-use scenarios.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full burden. It discloses important behavior about coordinate system and origin, but omits other behavioral traits such as clamping behavior, animation duration, and the require_fresh_screenshot parameter. These are present in the schema but not described, leaving gaps for the agent.

    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 two sentences, front-loaded with the action, and every sentence adds value. The coordinate guidance is concise and directly relevant. No fluff or redundancy.

    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?

    For a tool with 5 parameters, no output schema, and no annotations, the description is incomplete. It covers the coordinate system well but omits details about optional parameters and when to use alternatives. The context is sufficient for basic movement but not for advanced behaviors like clamping or fresh screenshot requirements.

    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 explains the meaning of x and y as logical points and provides computation guidance. However, it does not explain clamp, duration_ms, or require_fresh_screenshot, leaving these parameters semantically incomplete.

    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 'Move the mouse cursor' with a specific verb and resource. It distinguishes from sibling tools like mouse_click, mouse_drag, and mouse_scroll by focusing on pure movement. The additional coordinate computation guidance further clarifies its scope.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines4/5

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

    The description provides clear context on how to use coordinates (logical points, origin top-left, compute from screenshot metadata), but does not explicitly mention when to use this tool versus alternatives like mouse_click or mouse_drag. It implies usage for moving without clicking or dragging, but lacks explicit exclusions.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries full burden. It implies a read-only operation but does not detail behavior like whether the list is sorted, whether the frontmost app is included in the list, or any platform-specific quirks. Still, the simple action is clear.

    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?

    A single, front-loaded sentence that efficiently communicates the tool's purpose with no filler.

    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 zero parameters and no output schema, the description covers the primary purpose but lacks detail on the exact return structure (e.g., app names, identifiers) or any edge cases. It is adequate for a simple listing 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?

    The schema has zero parameters, so the description is not required to explain parameters. Baseline 4 applies.

    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?

    Clearly states the action (list) and the resource (running apps, frontmost one), distinguishing it from window_list by focusing on applications rather than windows.

    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?

    No explicit guidance on when to use this vs. alternatives like window_list or get_state. The need is implied by the nature of the tool, but no exclusions or sibling comparisons are provided.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the burden of disclosure. It openly flags the operation as sensitive, warns about possible user confirmation, and explains a specific scenario where the tool will be refused. This is strong behavioral transparency, though it omits details about return behavior on denial.

    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 two sentences long, front-loaded with the core purpose, and includes only essential caveats. Every word earns its place, with no fluff or redundant restatements of the tool name.

    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?

    For a tool with one optional parameter and no output schema, the description covers the primary action and key constraints. However, the complete omission of the 'format' parameter leaves a significant gap in understanding how the tool behaves with different inputs, so it is merely adequate.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/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 fails to mention the 'format' parameter entirely, leaving its meaning and impact undisclosed beyond the bare schema enum. The agent cannot infer which format to request or the resulting output behavior.

    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 verb 'Read' and resource 'clipboard', distinguishing it from sibling clipboard_set and clipboard_paste. It also adds context about sensitivity and a specific refusal condition, leaving no ambiguity about the tool's function.

    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?

    Provides clear context about when the tool may require confirmation and explicitly states when it will be refused (password field focus). However, it does not name alternatives or explicitly state 'use this when...', so it falls short of a 5.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full burden. It discloses key behaviors: guard conditions can gate steps, failed guards halt the sequence, and evidence is returned. It also emphasizes the 'pre-decided' nature and non-planner role. However, it does not explain behavior around stop_on_failure for ordinary step failures, nor what 'evidence' includes.

    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 two sentences that are dense with meaning. It front-loads the core function, then adds important usage context. Every word contributes value with no redundancy or filler.

    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 complexity (nested steps, multiple options, no output schema or annotations), the description covers the main purpose and guard behavior but omits crucial details about parameter structure, failure handling for regular step failures, and the nature of returned evidence. It is minimally viable but has clear gaps.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/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 only clarifies the guard parameter and implicitly the steps limit, but does not explain the structure of each step (tool, args), nor the purpose of stop_on_failure or screenshot_after. This leaves significant gaps for a complex nested 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 runs up to 20 pre-decided acting steps in one call, naming the action (run), resource (acting steps), and scope (up to 20). It distinguishes itself from sibling low-level tools by framing itself as a macro, not a planner.

    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?

    Explicit guidance is given: 'Use only when you already know every step; this is a macro, not a planner.' This gives a clear condition for when to use the tool, but it does not explicitly name alternatives (e.g., individual action tools). The reference to `wait` for guard schema adds context.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the behavioral disclosure burden. It discloses the coordinate system (logical points, origin top-left), fallback to current cursor when coordinates are omitted, and the need to derive coordinates from screenshot metadata. It also advises verification. However, it omits details about modifier handling, clamp behavior, button semantics, and require_fresh_screenshot.

    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 three sentences, front-loaded with the primary action, followed by coordinate system clarification and verification advice. Every sentence adds value with no redundancy.

    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?

    With 7 parameters, no annotations, and no output schema, the description covers the core click action and coordinate system but leaves many parameters and return behavior unexplained. It provides enough for basic usage but not full contextual completeness given the tool's complexity.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters2/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 explains x and y (coordinate meaning and origin) and that omitting them clicks at the current cursor, but provides no explanation for clamp, count, button, modifiers, or require_fresh_screenshot. With 7 parameters and 5 unexplained, parameter semantics is weak.

    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 ('Click at (x, y), or at the current cursor if omitted') and identifies the resource (mouse). It distinguishes from sibling tools like mouse_move and mouse_drag by specifying click behavior and coordinate semantics.

    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?

    It provides practical usage context by explaining coordinate computation from screenshot metadata and recommending a post-click screenshot verification. However, it does not explicitly contrast with alternatives like mouse_move or mouse_drag, nor state when not to use this tool.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • 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 of behavioral disclosure. It usefully notes that force=true force-terminates and is 'sensitive, needs confirmation under the default policy', which adds meaningful context beyond the schema. The graceful default behavior is implied but not deeply detailed, yet sufficient for most use cases.

    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 sentence that front-loads the main action and includes the critical force nuance. Every word adds value; there is no redundancy or filler.

    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 simple tool with two parameters and no output schema, the description is largely complete. It covers the core behavior and the sensitive force option, and the overall scope is clear. The only minor gap is the lack of specification for the app parameter format, but this is not critical for basic selection.

    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?

    The input schema has zero descriptions (0% coverage), so the description must compensate. It explicitly explains the force parameter ('force=true force-terminates'), adding semantic value. However, the app parameter is only referred to as 'an app' without specifying expected format or identifier, leaving some ambiguity.

    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 'Quit an app gracefully' with a specific resource ('app'), and distinguishes itself from sibling tools like app_open and app_list by focusing on termination. It also clarifies the force mode, making the tool's purpose unambiguous.

    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 gives clear context for when to use the tool (quitting apps) and the optional force behavior. While it does not explicitly contrast with alternatives like window_manage, the sibling context and wording make the intended use evident. There are no exclusions or prerequisites mentioned.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full transparency burden. It discloses a key side effect: the clipboard is modified and then restored, which is critical for the agent to know. It doesn't cover failure modes or the restore=false scenario, but the main behavior is clearly revealed.

    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 two sentences with no redundant words. The first sentence states purpose and mechanism; the second gives usage guidance. Perfectly succinct.

    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 simple tool with no output schema and no annotations, the description covers purpose, mechanism, a usage guideline, and the crucial clipboard restore behavior. It lacks explicit mention of the restore parameter's optionality and potential failure conditions, but these are minor given the tool's complexity.

    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?

    The schema has 0% property descriptions, so the description must compensate. It indirectly explains the 'text' parameter and the 'restore' parameter ('then restore the previous clipboard'), but it doesn't state that restore can be set to false or what that changes. This is adequate but not fully comprehensive.

    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 a specific action ('Paste text into the focused app') with a precise mechanism ('via clipboard + Cmd+V') and distinguishes itself from sibling 'keyboard_type' by noting it is preferred for long text.

    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?

    It explicitly says 'Preferred over keyboard_type for long text,' giving a clear alternative and a context for use. It does not mention when not to use it, but the guidance is sufficient for choosing between the two tools.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • 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 clarifies that this is for keys/shortcuts and not text, but does not disclose other behaviors like synchronous execution, repeat semantics, or behavior on invalid chords. It's adequate but not rich.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is one concise sentence with examples and a pointer to an alternative. It is front-loaded with the action and resource, and every word earns its place with no redundancy.

    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 simple tool with two parameters and no output schema, the description is largely complete. It covers the primary use case and provides a clear alternative. The main gap is the lack of detail on 'repeat' behavior, but the overall tool is simple enough that this is a minor omission.

    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 coverage is 0%, so the description must compensate. It provides useful format examples for the 'chord' parameter (e.g., 'cmd+s', 'F5'), but does not explain the 'repeat' parameter at all. The schema gives defaults and bounds, but the agent lacks guidance on what 'repeat' actually does.

    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 'Press a key or shortcut chord' with specific examples like 'Return', 'cmd+s', and 'F5'. It distinguishes from sibling keyboard_type by explicitly noting that tool is for regular text, making the purpose and scope unambiguous.

    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 explicitly says 'Use keyboard_type for regular text,' which tells the agent when to use this tool versus the alternative. It also implies key_press is for keys and shortcuts, providing clear usage context.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description bears the full burden and delivers key behaviors: exact substring matching, the baseline_screenshot_id requirement, and that clipboard_contains only returns matched/clipboard_len, not clipboard content. It lacks an overall return format description, but is substantially transparent.

    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 concise and front-loaded with the purpose. The list of expect types is dense but every sentence adds value. Slight formatting improvement could help, but it is not verbose.

    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?

    While the description covers multiple expect types and specific behaviors, it does not specify the tool's overall return value (beyond clipboard_contains) or provide an example of the expect object shape. Without an output schema, this leaves some ambiguity for a complex 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 explains the `expect` object structure with allowed types and mentions baseline_screenshot_id for region checks. This adds critical meaning beyond the bare schema, though a concrete example would improve clarity.

    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 a specific purpose: 'Check an expected outcome after acting.' It also lists the supported check types, distinguishing it from sibling action/observation tools. No tautology is present.

    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 phrase 'after acting' gives clear usage context. It also provides specific prerequisites, such as 'region_changed/unchanged need baseline_screenshot_id from an earlier screenshot response' and clarifies that text matching is exact and case-insensitive. However, it does not explicitly name alternative tools or when not to use this tool.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries the behavioral transparency burden. It discloses a meaningful trait: stale window refs are re-resolved by pid + fuzzy title. This adds value beyond the schema. Minor gaps include no mention of failure behavior or side effects, but for a focus/raise action this is sufficient.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness5/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The description is compact: two sentences that front-load the action and include the key fallback behavior. No redundant words or repetition of schema fields.

    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 relative simplicity (no output schema, no annotations), the description covers the core behavior and adds the stale-ref handling detail. It could mention failure cases or prerequisites, but as a standalone description it is sufficiently complete for an agent to invoke correctly in most scenarios.

    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 partially does by explaining the roles of window_ref, app, and title_match ('by window_ref, or by app and/or title_match'). However, it lacks details on expected formats (e.g., app name vs bundle ID, title_match pattern), so it only partially compensates for the absent schema descriptions.

    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 states a specific action ('Focus (raise)') and a clear resource (a window), and specifies the two modes of selection: by window_ref or by app/title_match. This distinguishes it from sibling tools like window_list and window_manage, which have 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 Guidelines4/5

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

    It provides clear context on when to use the tool (to focus/raise a window) and explains the two input methods (ref vs app/title_match). However, it doesn't explicitly mention when not to use it or compare it to alternatives like window_manage, so it falls short of a direct exclusion or alternative guidance.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full burden. It discloses that it lists windows optionally filtered by app bundle id or name, and that it returns window_ref handles for subsequent window_focus/window_manage operations. While it doesn't mention read-only nature explicitly, 'List' implies a non-mutating behavior. Some details like on_screen_only behavior or permissions are omitted, but the core behavior is transparent.

    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 two sentences long, front-loaded with the main action, and every sentence provides useful information. No redundant or vague wording.

    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 lack of annotations, output schema, and schema descriptions, the description is quite complete: it indicates the purpose, filtering capability, and return value purpose. The only minor gap is the lack of explicit mention of the on_screen_only parameter's effect, but the overall tool behavior is clear for a simple list operation.

    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?

    The description explains the 'app' parameter by stating it can be a bundle id or name, adding value beyond the schema. However, the 'on_screen_only' parameter is not mentioned at all, and with 0% schema description coverage, the description must compensate for both parameters. It only partially does so.

    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 ('List windows') and resource, and distinguishes it from sibling tools like window_focus and window_manage by noting it returns handles for those tools. It also indicates the optional filtering by app.

    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 the tool: when you need to enumerate windows and obtain window_ref handles for focusing/managing. It does not explicitly exclude alternatives, but no other sibling tool offers this functionality, making the usage context clear.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior4/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations, the description carries the full burden. It discloses the output content, coordinate units, and the reliability caveat ('ground truth where apps expose it'). It does not explicitly state it is read-only or mention permission requirements, but for a read-like tool this is strong.

    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 two sentences, front-loaded with the core purpose and output format, with no unnecessary detail. Every clause adds value.

    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 no output schema and no annotations, the description covers purpose, app parameter semantics, output contents, and a fallback alternative. It does not document max_depth or return formatting details, but these are largely inferable from the schema and tool name, making it complete enough for selection and invocation.

    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?

    The description clarifies the app parameter by stating it defaults to the frontmost app, matching the schema default. However, max_depth is never mentioned, and schema description coverage is 0%, so the description only partially compensates for the lack of parameter 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 what the tool does: returns an accessibility tree for an app with roles, titles, values, and clickable regions in points. It also distinguishes itself from sibling find_text by noting the appropriate tool for cases where accessibility data is not exposed.

    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?

    It explicitly says to use find_text when apps don't expose the accessibility tree, providing a clear alternative and exclusion condition. It also notes that the app parameter is optional and defaults to the frontmost app.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior5/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries full behavioral disclosure. It details return value characteristics (boxes with a center), fuzzy matching default (case-insensitive substring or similarity ratio >= 0.8), the fuzzy parameter to disable it, region support in points, and the confidence threshold guidance. This is far beyond a basic purpose statement.

    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?

    Three sentences, each packing essential information without waste: purpose, usage/confidence advice, and matching modes with sibling comparison. The structure is front-loaded with the core function and flows logically. No redundancy.

    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?

    Despite no annotations and no output schema, the description is sufficiently complete. It covers purpose, usage versus alternatives, parameter meanings, behavioral nuances, and actionable guidance. An agent can correctly select and invoke this tool based on the description alone.

    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 schema has zero descriptions, but the description compensates by explaining the text parameter (string to match), fuzzy parameter (default true, semantics of matching), and region parameter (optional, in points). It adds meaningful context that the raw schema lacks, especially the fuzzy behavior and region coordinate system.

    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 first sentence clearly identifies the tool's function: 'OCR the screen (or a region, in points) and return boxes matching `text`.' It uses a specific verb (OCR) and resource (screen/region), and distinguishes itself from sibling tools wait and verify by explicitly contrasting the matching semantics.

    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?

    Provides explicit guidance: it contrasts with wait and verify which require exact substring matches, indicating when the fuzzy capability is useful. It also offers a confidence-based tip ('Re-observe rather than act when confidence < 0.5') and mentions passing the returned center directly to mouse_click, which suggests a common downstream action.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

hands-mcp MCP server

Copy to your README.md:

Score Badge

hands-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yuvitbatra/hands-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server