Skip to main content
Glama
JustasMonkev

MCP Accessibility Scanner

by JustasMonkev

Server Quality Checklist

75%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • Disambiguation4/5

    Most tools have distinct purposes, but there is some overlap between browser_snapshot and browser_take_screenshot, as both capture page visuals, though their descriptions clarify different use cases. Other tools like browser_navigate, browser_navigate_back, and browser_navigate_forward are clearly differentiated, and actions like click, hover, and type are well-separated.

    Naming Consistency5/5

    All tool names follow a consistent snake_case pattern with a 'browser_' prefix for most tools, except scan_page which still fits the style. The naming is highly predictable, using verb_noun combinations like browser_click, browser_navigate, and browser_tab_list, making it easy to understand and navigate.

    Tool Count3/5

    With 25 tools, the count is borderline high for an accessibility scanner, as it includes many general browser automation functions beyond core accessibility tasks. While comprehensive, it may feel heavy and could be streamlined by focusing more on accessibility-specific operations rather than broad browser control.

    Completeness4/5

    The toolset covers a wide range of browser interactions and includes a dedicated accessibility scanning tool (scan_page), but there are minor gaps such as lacking tools for specific accessibility audits like color contrast checks or ARIA attribute validation. However, the core functionality for navigating, interacting, and scanning pages is well-covered.

  • Average 3.5/5 across 25 of 25 tools scored. Lowest: 2.5/5.

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

    • 5 of 5 community issues answered or closed in the last 6 months
    • 235 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • 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.

  • This repository includes a glama.json configuration file.

  • 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?

    Annotations indicate destructiveHint=true and readOnlyHint=false, suggesting a write operation with potential side effects. The description doesn't contradict this but adds minimal context beyond annotations—it implies interaction with dialogs but doesn't specify behaviors like what happens when accepting/canceling or if it affects browser state. With annotations covering safety, the description adds some value but lacks detail on consequences.

    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 'Handle a dialog' is extremely concise with no wasted words. It's front-loaded and to the point, though this brevity contributes to gaps in other dimensions. Every word serves a purpose, making it structurally efficient.

    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 tool's complexity (handling dialogs with potential destructive effects), lack of output schema, and minimal description, it's incomplete. The description doesn't explain return values, error conditions, or interaction patterns, leaving significant gaps for an agent to understand how to use it effectively in context with other browser tools.

    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 100%, with clear parameter descriptions in the schema (e.g., 'accept' for dialog acceptance, 'promptText' for prompt input). The description adds no additional meaning beyond the schema, such as explaining when promptText is needed or how parameters interact. Baseline 3 is appropriate since the schema fully documents parameters.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose2/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description 'Handle a dialog' is tautological with the tool name 'browser_handle_dialog' and doesn't specify what type of dialog or what handling entails. It mentions a dialog but doesn't distinguish it from other browser tools like browser_click or browser_select_option that might interact with UI elements. The purpose is vague and doesn't provide specific action details.

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

    Usage Guidelines1/5

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

    There are no guidelines on when to use this tool versus alternatives. It doesn't mention prerequisites like needing an open dialog, nor does it differentiate from siblings like browser_click for button interactions or browser_select_option for dropdowns. The description offers no context for usage decisions.

    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?

    Annotations provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, non-destructive operation with flexible inputs. The description adds minimal behavioral context beyond this—it implies saving the current page but doesn't specify what 'page' means (e.g., current tab, entire page vs. viewport) or any limitations (e.g., file size, format constraints). No contradiction with annotations exists, but the description under-leverages the opportunity to clarify 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 extremely concise at three words, front-loading the core action without unnecessary elaboration. Every word ('Save', 'page', 'PDF') directly contributes to understanding the tool's function, making it efficient and easy to parse.

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

    Completeness2/5

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

    Given the lack of output schema and the tool's potential complexity (saving a PDF involves rendering and file I/O), the description is insufficient. It doesn't address what happens on success/failure, where the PDF is saved, or any dependencies (e.g., requires a loaded page). With annotations covering safety but not operational details, more context is needed for reliable use.

    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?

    With 100% schema description coverage for the single parameter 'filename', the schema fully documents its purpose and default behavior. The description adds no parameter-specific information beyond the tool's overall function, so it meets the baseline of 3 where the schema handles the heavy lifting without extra value from the description.

    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 'Save page as PDF' clearly states the verb ('Save') and resource ('page as PDF'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'browser_take_screenshot' or 'browser_snapshot' that might also capture page content, leaving room for confusion about when to choose this specific PDF-saving function.

    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 prerequisites (e.g., requires an active browser page), exclusions (e.g., can't save dynamic content), or comparisons to siblings like 'browser_take_screenshot' for image capture or 'browser_snapshot' for other formats. This lack of context could lead to inappropriate tool selection.

    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?

    Annotations already indicate destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive write operation. The description adds no behavioral context beyond this, such as what happens if no tabs exist, whether it's reversible, or if it requires specific permissions. However, it doesn't contradict annotations, so it meets the baseline for having annotations.

    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 with just three words ('Close a tab'), which is front-loaded and wastes no space. Every word directly contributes to understanding the tool's purpose, making it efficient and easy to parse.

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

    Completeness2/5

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

    Given the destructive nature (destructiveHint=true) and lack of output schema, the description is insufficient. It doesn't explain what happens after closing a tab (e.g., browser behavior, return values, or error conditions), leaving gaps that could confuse an agent in practical use. The annotations help but don't fully compensate for missing contextual details.

    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 100% description coverage, with the parameter 'index' fully documented in the schema itself. The description adds no additional meaning about parameters, such as explaining tab indexing conventions or edge cases. This aligns with the baseline score when schema coverage is high.

    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 'Close a tab' clearly states the action (close) and resource (tab), making the purpose immediately understandable. It distinguishes from siblings like browser_tab_list (list tabs) and browser_tab_new (create tab), though it doesn't explicitly contrast with them. The description is specific but lacks explicit sibling differentiation, which keeps it from 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 prerequisites (e.g., needing an open tab), exclusions, or compare with related tools like browser_close (which might close the entire browser). Without such context, an agent might struggle to apply it correctly in complex 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?

    Annotations indicate destructiveHint=true and readOnlyHint=false, which already signal this is a write operation that can change page state. The description adds no behavioral context beyond this, such as potential side effects (e.g., navigation, form submission) or error conditions. It doesn't contradict annotations, but offers minimal extra insight.

    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's front-loaded with the core action, making it easy to scan and understand quickly. Every word earns its place by conveying the essential 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?

    Given the tool's complexity (interactive, destructive) and lack of output schema, the description is minimal. It covers the basic action but omits details like return values, error handling, or dependencies on other tools (e.g., browser_snapshot for ref). With annotations providing safety cues, it's adequate but leaves gaps for effective use.

    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 100%, so the schema fully documents all parameters (doubleClick, element, ref). The description adds no additional meaning about parameters, such as explaining the relationship between element and ref or when to use doubleClick. This meets the baseline for high 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 action ('Perform click') and resource ('on a web page'), which is specific and unambiguous. However, it doesn't distinguish this from sibling tools like browser_hover or browser_drag, which also involve element interactions, so it doesn't reach the highest score for sibling differentiation.

    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. For example, it doesn't mention when to choose browser_click over browser_double_click (implied via parameter) or browser_hover, nor does it specify prerequisites like needing a browser session or element reference from browser_snapshot.

    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?

    Annotations already declare destructiveHint=true and readOnlyHint=false, indicating this is a mutating operation. The description adds minimal behavioral context beyond this - it specifies the action involves two elements but doesn't describe what 'drag and drop' entails (e.g., visual feedback, timing, error conditions). No contradiction with annotations exists, but the description could better explain the destructive nature implied by the annotations.

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

    Conciseness5/5

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

    The description is a single, efficient sentence that immediately conveys the core action. Every word earns its place - 'Perform' establishes it as an action tool, 'drag and drop' specifies the interaction type, and 'between two elements' clarifies the scope. No wasted words or redundant 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?

    For a destructive browser interaction tool with no output schema, the description is minimally adequate. It identifies the action but lacks important context about how drag-and-drop works in this implementation, what visual feedback to expect, or how to handle failures. The annotations provide safety information, but the description could better prepare the agent for this mutating 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?

    With 100% schema description coverage, the input schema already fully documents all four parameters. The description adds no additional parameter information beyond implying there are 'two elements' (matching start/end parameters). This meets the baseline for high schema coverage but doesn't enhance understanding of parameter usage or relationships.

    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 ('Perform drag and drop') and specifies the relationship ('between two elements'), which distinguishes it from simpler single-element interactions like browser_click or browser_hover. However, it doesn't explicitly differentiate from other complex interactions like browser_file_upload or browser_select_option, which might also involve multi-step 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?

    The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing element references from browser_snapshot), nor does it explain when drag-and-drop is appropriate versus other interaction methods. The agent must infer usage from context alone.

    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 doesn't add behavioral information beyond what annotations provide. Annotations already indicate this is a destructive operation (destructiveHint: true) and not read-only (readOnlyHint: false), which covers the core safety profile. The description doesn't disclose additional traits like navigation behavior (e.g., page loading, timeouts, or error handling).

    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 with just three words, front-loading the essential information without any wasted text. It's appropriately sized for a simple tool with one parameter and clear annotations.

    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 (simple navigation with one parameter), rich annotations covering safety aspects, and no output schema, the description is minimally adequate. However, it lacks context about what navigation entails (e.g., loading a webpage, potential side effects) that would help an agent understand the tool's behavior more fully.

    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?

    With 100% schema description coverage, the input schema already documents the single 'url' parameter thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema, such as URL format requirements or validation rules, so it meets the baseline.

    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 'Navigate to a URL' clearly states the action (navigate) and target resource (URL), making the tool's purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'browser_navigate_back' or 'browser_navigate_forward' which are related navigation operations, so it doesn't reach the highest 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 when navigation is appropriate compared to other browser actions like 'browser_click' or 'browser_type', nor does it specify any prerequisites or context for navigation operations.

    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?

    Annotations indicate destructiveHint=true and readOnlyHint=false, implying a write operation with potential side effects. The description adds no behavioral details beyond this, such as what gets affected (e.g., browser state, page focus) or any constraints like rate limits. It doesn't contradict annotations but adds minimal value beyond them.

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

    Conciseness5/5

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

    The description is a single, clear sentence with no wasted words. It's front-loaded with the core action and target, making it highly 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.

    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 (a destructive action with one parameter) and lack of output schema, the description is minimal but functional. It states what the tool does but lacks details on behavior, usage context, or output expectations, making it adequate but incomplete for optimal agent guidance.

    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 100%, with the 'key' parameter fully documented in the schema. The description adds no additional semantic context about the parameter, such as examples beyond those in the schema or special cases. Baseline score of 3 is appropriate since the schema handles parameter documentation adequately.

    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 'Press a key on the keyboard' clearly states the action (press) and target (key on keyboard), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'browser_type' which might involve keyboard input, leaving room for improvement in sibling distinction.

    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 'browser_press_key' over 'browser_type' or other input-related siblings, nor does it specify any prerequisites or context for usage, leaving the agent without operational context.

    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?

    Annotations indicate readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe, non-destructive operation. The description adds no behavioral context beyond this, such as whether resizing affects page layout, triggers events, or has limitations (e.g., minimum/maximum dimensions). It doesn't contradict annotations, but offers minimal additional insight.

    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 waste—'Resize the browser window' directly conveys the core action without unnecessary words. It's front-loaded and appropriately sized for a simple tool.

    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 (2 required parameters), high schema coverage, and annotations covering safety, the description is minimally adequate. However, it lacks context on output (no schema provided) or integration with sibling tools, leaving gaps for an agent to infer usage in a browser automation workflow.

    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 100%, with clear descriptions for 'width' and 'height' parameters. The description adds no meaning beyond the schema, such as units (pixels), valid ranges, or default values. Baseline 3 is appropriate since the schema fully documents parameters.

    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 'Resize the browser window' clearly states the action (resize) and target resource (browser window). It distinguishes from siblings like browser_click or browser_navigate by specifying the resize operation, though it doesn't explicitly contrast with similar tools like browser_snapshot which might also involve window dimensions.

    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 prerequisites (e.g., needing an active browser session), exclusions, or compare it to siblings like browser_tab_new or browser_snapshot that might affect window size indirectly.

    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?

    Annotations provide critical behavioral hints: destructiveHint=true (indicating it modifies state) and openWorldHint=true (suggesting unpredictable outcomes). The description adds minimal context beyond this, stating the action but not elaborating on risks like page reloads or validation errors. It doesn't contradict annotations, but with annotations covering safety aspects, the description's value is limited to confirming the basic action without rich behavioral details.

    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 ('Select an option in a dropdown'), making it immediately scannable. Every word earns its place, and there's no redundancy or unnecessary elaboration.

    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 destructive tool with no output schema, the description is minimally adequate. Annotations cover key behavioral traits (destructive, open-world), and the schema fully documents parameters. However, the description lacks context about error conditions, what happens on success, or integration with other tools like browser_snapshot. It meets basic needs but leaves gaps for safe and effective use.

    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 100%, with clear descriptions for all three parameters (element, ref, values). The description adds no parameter-specific information beyond what the schema already provides. It implies 'values' usage but doesn't clarify syntax or multi-select behavior. Given high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't need to.

    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 'Select an option in a dropdown' clearly states the verb ('Select') and resource ('option in a dropdown'), making the purpose immediately understandable. It distinguishes this tool from siblings like browser_click or browser_type by specifying dropdown interaction, though it doesn't explicitly contrast with all similar tools like browser_handle_dialog. The description is specific but could be more precise about its unique role among browser interaction tools.

    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 prerequisites (e.g., needing a page snapshot from browser_snapshot first), when to prefer it over other selection methods, or any limitations. With many sibling tools for browser interaction, this lack of context leaves the agent guessing about appropriate usage 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?

    Annotations provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, non-destructive operation with potential for unknown outcomes. The description adds minimal behavioral context beyond this—it specifies 'by index' but doesn't explain what happens if the index is invalid, if selection changes focus, or any side effects. It doesn't contradict annotations, but offers little extra insight into tool 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, efficient sentence: 'Select a tab by index'. It's front-loaded with the core action and method, with zero wasted words. Every part earns its place, making it highly concise and well-structured for quick understanding.

    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 (1 parameter, no output schema) and rich annotations (covering safety and world hints), the description is minimally adequate. It states what the tool does but lacks completeness in usage guidelines, error handling, or integration with siblings like browser_tab_list. For a simple selection tool, it meets basic needs but leaves gaps in operational context.

    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 1 parameter with 100% description coverage ('The index of the tab to select'), so the schema fully documents the parameter. The description adds no additional meaning beyond what's in the schema—it repeats 'by index' without clarifying format (e.g., zero-based vs. one-based) or constraints. Baseline score of 3 is appropriate as the schema carries the burden.

    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 'Select a tab by index' clearly states the action (select) and resource (tab), with the method specified (by index). It distinguishes from siblings like browser_tab_list (lists tabs) and browser_tab_close (closes tabs), though it doesn't explicitly contrast them. The purpose is specific but could be more distinctively positioned among similar tab 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?

    The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an open browser or existing tabs), when not to use it (e.g., if no tabs exist), or direct alternatives like browser_tab_list for identifying indices. Usage is implied by the action but lacks explicit context for decision-making.

    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?

    Annotations indicate destructiveHint=true and readOnlyHint=false, which the description aligns with by implying mutation ('type text'). It adds minimal context about typing behavior but doesn't detail side effects like page changes or error handling, relying heavily on annotations for safety profile.

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

    Conciseness5/5

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

    The description is a single, clear sentence with zero waste, front-loading the core action. It's appropriately sized for the tool's complexity, making it easy to parse without unnecessary elaboration.

    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, annotations cover safety, and schema fully documents parameters, but no output schema exists. The description lacks details on return values or error cases, leaving gaps in completeness despite structured data support.

    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 100%, so parameters are fully documented in the schema. The description adds no extra meaning beyond the schema, such as explaining interactions between parameters like 'slowly' and 'submit'. Baseline score of 3 applies as the schema handles 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 ('type text') and target ('into editable element'), which is specific and actionable. However, it doesn't differentiate from sibling tools like browser_press_key or browser_file_upload that also involve text input, missing explicit distinction.

    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 such as browser_press_key for keyboard input or browser_file_upload for file inputs. The description lacks context about prerequisites or typical scenarios, offering no usage instructions.

    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?

    Annotations provide readOnlyHint=false, openWorldHint=true, and destructiveHint=true, indicating this is a non-read-only, open-ended, and potentially destructive operation. The description adds that it scans 'the current page' and uses 'Axe', giving implementation context. However, it doesn't explain what 'destructive' means here (e.g., page reload, state changes) or detail output behavior (e.g., format, timing), leaving gaps despite annotations.

    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 without unnecessary words. Every part ('Scan the current page for accessibility violations using Axe') contributes essential information, making it appropriately sized and well-structured for quick understanding.

    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 (accessibility scanning with filtering), annotations cover safety and scope, and schema fully documents the single parameter. However, without an output schema, the description doesn't explain what the scan returns (e.g., violation details, counts), leaving a gap in understanding results. It's adequate but incomplete for effective use.

    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 100%, with the parameter 'violationsTag' fully documented in the schema as an array of tags to filter violations. The description adds no parameter-specific information beyond what the schema provides, so it meets the baseline for high schema coverage without compensating value.

    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 ('Scan') and resource ('current page') with the specific purpose of finding 'accessibility violations using Axe'. It distinguishes itself from sibling browser tools by focusing on accessibility scanning rather than navigation, interaction, or monitoring. However, it doesn't explicitly differentiate from potential non-existent accessibility siblings.

    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 prerequisites (e.g., needing an open browser page), when scanning is appropriate (e.g., after page load), or what happens if used incorrectly. With many sibling browser tools, this lack of context leaves the agent guessing about proper sequencing.

    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?

    Annotations indicate readOnlyHint=true, destructiveHint=false, and openWorldHint=true, suggesting a safe, non-destructive operation that might open new contexts. The description 'Close the page' aligns with these annotations (closing is typically non-destructive in browsers, and openWorldHint could imply handling new tabs/windows). However, the description adds minimal context beyond annotations—it doesn't specify what happens after closing (e.g., if it returns to a previous page, affects browser state, or has side effects). With annotations covering safety, the bar is lower, but more behavioral detail would be helpful.

    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 'Close the page' is extremely concise—three words that directly state the action. It's front-loaded with no unnecessary details, making it easy for an agent to parse. Every word earns its place, and there's no waste 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?

    Given the tool's simplicity (0 parameters, no output schema) and annotations providing safety info, the description is somewhat complete but lacks depth. It doesn't explain what 'page' means in context of sibling tools (e.g., vs. 'browser_tab_close'), potential return values, or behavioral nuances. For a close operation, more context on effects would improve completeness, but annotations help fill 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 input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description doesn't mention any parameters, which is appropriate. Baseline is 4 for zero parameters, as the description doesn't need to compensate for missing schema info.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose3/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description 'Close the page' states a clear action (close) on a resource (page), but it's vague about what 'page' refers to (current tab, specific page, etc.). It doesn't distinguish from sibling tools like 'browser_tab_close' or 'browser_close' (if there were multiple close tools), though the sibling list shows 'browser_tab_close' as a distinct tool, suggesting this might close the current page/tab. The description is minimal but conveys the basic purpose.

    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. For example, it doesn't specify if this closes the current page/tab, all pages, or how it differs from 'browser_tab_close' (which is a sibling tool). There's no mention of prerequisites, context, or exclusions, leaving the agent to 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.

  • Behavior4/5

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

    Annotations provide readOnlyHint=true, openWorldHint=true, and destructiveHint=false, indicating a safe, read-only operation with potentially open-ended data. The description adds value by specifying 'all console messages,' implying comprehensive retrieval, which complements the annotations without contradiction. However, it doesn't detail aspects like real-time vs. historical messages or format.

    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, clearly front-loaded with the core purpose. It's appropriately sized for a simple tool with no 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 the tool's simplicity (0 parameters, annotations covering safety), the description is minimally adequate. However, without an output schema, it doesn't explain what 'returns' entails (e.g., format, structure, or examples of console messages), leaving gaps for an agent to understand the response fully.

    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 parameters and 100% schema description coverage, the schema fully documents the lack of inputs. The description doesn't need to add parameter details, so a baseline of 4 is appropriate as it doesn't introduce confusion or redundancy.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose3/5

    Does the description clearly state what the tool does and how it differs from similar tools?

    The description 'Returns all console messages' clearly states the action (returns) and resource (console messages), but it's vague about scope and doesn't differentiate from siblings like 'browser_network_requests' or 'scan_page' that might also return browser data. It's functional but lacks specificity about what 'all' encompasses.

    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. With siblings like 'browser_network_requests' for network data or 'scan_page' for page analysis, the description doesn't help an agent decide when console messages are the appropriate target versus other browser monitoring 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?

    Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, read-only operation with open-ended data. The description adds context about the temporal scope ('since loading the page'), which is useful but doesn't detail behavior like return format, pagination, or data freshness. With annotations covering core traits, this earns a baseline score for adding some value.

    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 action ('Returns all network requests') and adds necessary context ('since loading the page'). There is no wasted verbiage, 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.

    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 params, annotations covering safety), the description is adequate but has gaps. It lacks output details (no schema provided) and doesn't explain data scope or limitations, which could be helpful for an agent. It meets minimum viability but isn't fully comprehensive.

    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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, but since there are no params, this is acceptable and earns a high baseline score for not being required to compensate.

    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 ('Returns') and resource ('all network requests since loading the page'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'browser_console_messages' or 'scan_page', which might also retrieve browser data, so it doesn't reach the highest 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 prerequisites (e.g., after page load), exclusions, or comparisons to siblings like 'browser_console_messages' for different data types, leaving usage context implied at best.

    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?

    Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, read-only operation that may return variable data. The description adds no behavioral context beyond what annotations provide, such as whether it returns tab titles, URLs, or order, or if there are rate limits. It doesn't contradict annotations, so a baseline score is appropriate.

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

    Conciseness5/5

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

    The description 'List browser tabs' is extremely concise—just three words—and front-loaded with the core action. Every word earns its place by directly conveying the tool's function without any fluff or redundancy, making it highly efficient for quick understanding.

    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 (0 parameters, no output schema) and rich annotations (readOnlyHint, openWorldHint), the description is minimally complete. It states what the tool does but lacks details on output format or usage context. For a simple list operation, this is adequate but leaves gaps that could be filled with a bit more information.

    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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is acceptable here. A score of 4 reflects that the description is adequate given the lack of parameters, though it could briefly note the absence of inputs 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 'List browser tabs' clearly states the action (list) and resource (browser tabs), making the purpose immediately understandable. It distinguishes from siblings like browser_tab_close or browser_tab_new by focusing on listing rather than modifying tabs. However, it doesn't specify if it lists all tabs or just active ones, keeping it from 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 prerequisites (e.g., needing an open browser), exclusions, or comparisons to siblings like browser_tab_select for navigation. This lack of context leaves the agent to infer usage based on the name alone.

    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?

    Annotations indicate destructiveHint=true and readOnlyHint=false, implying a write operation that modifies state. The description adds value by clarifying it handles 'one or multiple files,' which isn't covered by annotations. However, it doesn't disclose additional behavioral traits like authentication needs, rate limits, or specific effects (e.g., overwriting files).

    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—a single, front-loaded sentence that directly states the tool's function without unnecessary words. Every word earns its place, making it efficient and easy to parse.

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

    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 (file upload with destructive potential) and rich annotations (covering safety and world hints), the description is minimally adequate. However, without an output schema or details on upload results (e.g., success/failure indicators), it leaves gaps for the agent to handle responses.

    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 100% description coverage, with the 'paths' parameter clearly documented as 'The absolute paths to the files to upload. Can be a single file or multiple files.' The description adds no further meaning beyond this, as it only repeats 'one or multiple files' without elaborating on path formats or constraints.

    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 'Upload one or multiple files' clearly states the verb (upload) and resource (files), distinguishing it from sibling browser tools that perform actions like clicking, navigating, or taking screenshots. However, it doesn't specify the target destination or context (e.g., to a browser session or web form), which would make it more specific.

    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 prerequisites (e.g., needing an active browser session), context (e.g., for file input forms), or exclusions (e.g., not for downloading). This lack of usage context leaves the agent to infer from sibling tool names alone.

    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?

    Annotations already provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, non-destructive operation. The description adds minimal behavioral context beyond this, stating the hover action but not detailing effects like potential UI changes or timing considerations. It doesn't contradict annotations.

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

    Conciseness5/5

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

    The description is a single, direct sentence ('Hover over element on page') with zero wasted words. It's front-loaded and efficiently conveys the core action without unnecessary elaboration, making it easy for an agent to parse quickly.

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

    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 (simple hover action), no output schema, and rich annotations covering safety and world state, the description is minimally adequate. However, it lacks details on expected outcomes (e.g., UI feedback) or prerequisites (e.g., needing a page snapshot from browser_snapshot), leaving some contextual gaps.

    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 100%, with clear descriptions for both parameters (element as human-readable description, ref as exact target reference). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline for high schema coverage without extra value.

    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 'Hover over element on page' clearly states the specific action (hover) and target (element on page). It distinguishes from siblings like browser_click (click action) and browser_type (typing action) by specifying the hover interaction, which is a distinct browser manipulation operation.

    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 scenarios where hovering is appropriate (e.g., triggering dropdowns, tooltips) versus when clicking or other interactions are needed, nor does it reference sibling tools like browser_click for comparison.

    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?

    Annotations already provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, non-destructive operation. The description adds behavioral context about what triggers the wait (text appearance/disappearance or time), which is valuable beyond annotations. However, it doesn't specify timeout behavior, error conditions, or what happens if multiple conditions are specified.

    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 functionality with zero wasted words. It directly communicates the tool's purpose without unnecessary elaboration, 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?

    For a tool with 3 parameters, 100% schema coverage, and annotations covering safety, the description is adequate but minimal. It lacks details on output (no output schema), error handling, or integration with sibling tools (e.g., use after browser_navigate). Given the complexity is moderate, it meets minimum viability but could be more 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?

    Schema description coverage is 100%, with clear parameter descriptions in the schema. The description adds minimal value by summarizing the parameters ('text to appear or disappear or a specified time'), but doesn't provide additional semantics like parameter interactions, default behaviors, or examples. Baseline 3 is appropriate given the comprehensive 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 tool's purpose with specific verbs ('wait for text to appear or disappear or a specified time to pass'), making it immediately understandable. It distinguishes itself from siblings like browser_click or browser_type by focusing on waiting rather than performing actions. However, it doesn't explicitly mention it's for browser automation context, though sibling tools provide that context.

    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 scenarios (waiting for text changes or timeouts) but doesn't provide explicit guidance on when to use this versus alternatives. No sibling tools offer similar waiting functionality, so differentiation isn't needed, but it lacks context about prerequisites (e.g., needing an active browser session) or typical use cases.

    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?

    Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering safety and scope. The description adds minimal context ('new tab' implies creation, not modification of existing tabs), but doesn't detail behavioral aspects like whether it focuses the tab, handles errors for invalid URLs, or interacts with browser state beyond what annotations provide.

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

    Conciseness5/5

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

    The description 'Open a new tab' is a single, front-loaded sentence with zero waste. It efficiently conveys the core action without unnecessary words, 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.

    Completeness4/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 optional parameter), rich annotations (covering safety and scope), and no output schema, the description is mostly complete. However, it lacks context on usage scenarios or integration with sibling tools, leaving minor gaps for an AI agent to infer optimal use.

    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 100%, with the parameter 'url' fully documented in the schema. The description doesn't add any semantic details beyond what's in the schema (e.g., URL format, default behavior). With high schema coverage, the baseline score of 3 is appropriate.

    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 'Open a new tab' is a specific verb+resource action that clearly distinguishes it from siblings like browser_tab_close (close), browser_tab_list (list), or browser_tab_select (select). It precisely states 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 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 prerequisites (e.g., needing an open browser), exclusions (e.g., not for opening windows), or comparisons to siblings like browser_navigate (which might reuse existing tabs).

    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?

    Annotations provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating this is a safe, non-destructive operation that may return unpredictable results. The description adds value by specifying it captures 'accessibility snapshot' (implying structured accessibility data) and compares it to screenshots, giving context about what kind of data is returned. No contradiction with annotations exists.

    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 with just one sentence that efficiently communicates the core purpose and key comparison. Every word earns its place: 'Capture accessibility snapshot' defines the action, 'of the current page' provides context, and 'this is better than screenshot' adds valuable differentiation. No wasted words 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?

    Given the tool has no parameters, rich annotations (readOnly, openWorld, non-destructive), but no output schema, the description is somewhat complete but could better explain what an 'accessibility snapshot' returns. It mentions it's 'better than screenshot' which hints at richer data, but doesn't specify format or content. For a tool with behavioral complexity implied by openWorldHint, more detail about output expectations 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?

    The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description appropriately doesn't discuss parameters, which is correct for a zero-parameter tool. It focuses on what the tool does rather than inputs, meeting the baseline expectation.

    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: 'Capture accessibility snapshot of the current page' specifies the verb (capture) and resource (accessibility snapshot). It distinguishes from sibling 'browser_take_screenshot' by mentioning 'this is better than screenshot', though it doesn't explicitly name that sibling. The purpose is specific but could be more precise about what an 'accessibility snapshot' entails.

    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 by comparing to screenshot ('this is better than screenshot'), suggesting this tool should be used when accessibility data is needed rather than visual capture. However, it doesn't explicitly state when to use this tool versus alternatives like 'scan_page' or provide clear exclusions. The guidance is implied rather than explicit.

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

  • Behavior4/5

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

    Annotations provide readOnlyHint=false, openWorldHint=true, and destructiveHint=true, indicating it's a mutating, potentially destructive operation with open-world behavior. The description adds context by specifying it installs based on config and is error-driven, which complements the annotations without contradicting them. It doesn't detail installation steps or side effects, but adds useful 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 two sentences, front-loaded with the main action and followed by usage guidance. Every word serves a purpose with no redundancy or fluff, making it highly efficient and well-structured.

    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 has 0 parameters, annotations cover key behavioral traits, and no output schema exists, the description is reasonably complete. It explains what the tool does and when to use it, but could benefit from more details on installation behavior or error handling. However, for a simple install tool, it's adequate.

    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?

    There are 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add param info, but that's acceptable here. Baseline for 0 params is 4, as it's complete by default.

    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 'install' and the resource 'browser specified in the config', making the purpose explicit. However, it doesn't distinguish from siblings like browser-related tools (e.g., browser_navigate, browser_close), which are about browser interaction rather than installation, so it's not fully differentiated.

    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 this tool: 'if you get an error about the browser not being installed.' This gives a specific trigger condition. It doesn't explicitly state when not to use it or name alternatives, but the context is sufficient for basic guidance.

    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?

    Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and scope. The description adds no behavioral traits beyond what annotations provide, such as navigation history constraints or browser state implications. No contradiction with annotations exists.

    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 waste. It is front-loaded and appropriately sized for a simple navigation tool, making it easy to 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?

    For a simple tool with no parameters, rich annotations (readOnlyHint, destructiveHint, openWorldHint), and no output schema, the description is complete enough. It could benefit from mentioning browser context or history state, but it adequately covers the core functionality given the structured data.

    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 parameters and 100% schema description coverage, the baseline is 4. The description does not need to explain parameters, and it adds no extra parameter information, which is appropriate given the lack of inputs.

    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 'Go back to the previous page' clearly states the specific action (go back) and resource (previous page). It distinguishes from siblings like browser_navigate_forward (forward navigation) and browser_navigate (general navigation), making the purpose unambiguous.

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

    Usage Guidelines4/5

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

    The description implies usage context (when there is a previous page to return to), but does not explicitly state when not to use it or name alternatives. It provides clear context but lacks explicit exclusions or named sibling comparisons beyond what's inferred from the tool name.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds useful context about the tool's limitations (no action capability) and distinguishes it from browser_snapshot, but doesn't provide additional behavioral details like rate limits, authentication needs, or what happens to the screenshot file after creation.

    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 with just two sentences, both of which earn their place by providing essential purpose clarification and usage guidance. No wasted words or redundant information.

    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 (screenshot capture with element targeting options), the description provides good purpose and usage context. With annotations covering safety aspects and no output schema, the main gap is lack of information about return values or what happens to the screenshot file, but the description adequately covers the core functionality.

    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?

    With 100% schema description coverage, the input schema already fully documents all 4 parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline expectation when schema coverage is complete.

    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 ('Take a screenshot') and resource ('current page'), and explicitly distinguishes it from the sibling tool 'browser_snapshot' by stating 'use browser_snapshot for actions'. This provides clear differentiation 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 guidance on when NOT to use this tool ('You can't perform actions based on the screenshot') and names a specific alternative ('use browser_snapshot for actions'). This gives clear context for tool selection versus sibling tools.

    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?

    Annotations already provide readOnlyHint=true, destructiveHint=false, and openWorldHint=true, indicating a safe, non-destructive operation. The description adds behavioral context by specifying 'to the next page', clarifying it's about browser navigation history. It doesn't contradict annotations, and adds meaningful context beyond what annotations alone provide about the specific navigation 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, efficient sentence that directly states the tool's purpose without any wasted words. It's front-loaded with the core action and immediately clarifies the target ('to the next page'). Every word earns its place in this minimal yet complete description.

    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 output schema) and comprehensive annotations, the description is mostly complete. It could slightly improve by mentioning constraints (e.g., only works if forward history exists) or the expected outcome, but for a basic navigation tool with good annotations, it provides sufficient context for an agent to understand and invoke it correctly.

    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. The description doesn't need to explain parameters, and appropriately doesn't mention any. It earns a baseline 4 since no parameters exist to document, and the description correctly focuses on the action rather than non-existent inputs.

    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 'Go forward to the next page' clearly states the specific action (go forward) and resource (next page). It distinguishes from sibling tools like 'browser_navigate_back' by specifying the forward direction, and from 'browser_navigate' by focusing on navigation within browser history rather than to a new URL.

    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 (navigating forward in browser history), but doesn't explicitly state when to use this vs. alternatives like 'browser_navigate_back' or 'browser_navigate'. It provides clear intent but lacks explicit exclusion criteria or prerequisite conditions (e.g., only works if there's forward history available).

    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

mcp-accessibility-scanner MCP server

Copy to your README.md:

Score Badge

mcp-accessibility-scanner 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/JustasMonkev/mcp-accessibility-scanner'

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