Skip to main content
Glama
AkhatorKing1

Playwright MCP Server

by AkhatorKing1

Playwright MCP Server

This Actor wraps the playwright-mcp project to provide a serverless Playwright browser in the cloud. A Model Context Protocol (MCP) server that provides browser automation capabilities using Playwright. This server enables LLMs to interact with web pages through structured accessibility snapshots, bypassing the need for screenshots or visually tuned models.

All credits to the original authors of https://github.com/microsoft/playwright-mcp

๐Ÿšฉ Claim this MCP server. Contact info

Key features

  • ๐Ÿš€ Uses Playwright's accessibility tree instead of pixel-based input for faster, lighter operation

  • ๐Ÿ“Š Works with structured data only - no vision models required

  • ๐ŸŽฏ Applies tools deterministically, avoiding the ambiguity of screenshot approaches

  • ๐ŸŒ Supports Apify Proxy (datacenter, residential, custom) and other Apify features

Related MCP server: Playwright MCP

Use cases

  • ๐ŸŒ Web navigation and form filling

  • ๐Ÿ“‹ Structured data extraction

  • ๐Ÿงช LLM-driven automated testing

  • ๐Ÿค– Browser automation for AI agents

Tools (source)

Snapshot-based Interactions

  • browser_snapshot

    • Description: Capture accessibility snapshot of the current page, this is better than screenshot

    • Parameters: None

  • browser_click

    • Description: Perform click on a web page

    • Parameters:

      • element (string): Human-readable element description used to obtain permission to interact with the element

      • ref (string): Exact target element reference from the page snapshot

  • browser_drag

    • Description: Perform drag and drop between two elements

    • Parameters:

      • startElement (string): Human-readable source element description used to obtain the permission to interact with the element

      • startRef (string): Exact source element reference from the page snapshot

      • endElement (string): Human-readable target element description used to obtain the permission to interact with the element

      • endRef (string): Exact target element reference from the page snapshot

  • browser_hover

    • Description: Hover over element on page

    • Parameters:

      • element (string): Human-readable element description used to obtain permission to interact with the element

      • ref (string): Exact target element reference from the page snapshot

  • browser_type

    • Description: Type text into editable element

    • Parameters:

      • element (string): Human-readable element description used to obtain permission to interact with the element

      • ref (string): Exact target element reference from the page snapshot

      • text (string): Text to type into the element

      • submit (boolean, optional): Whether to submit entered text (press Enter after)

      • slowly (boolean, optional): Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.

  • browser_select_option

    • Description: Select an option in a dropdown

    • Parameters:

      • element (string): Human-readable element description used to obtain permission to interact with the element

      • ref (string): Exact target element reference from the page snapshot

      • values (array): Array of values to select in the dropdown. This can be a single value or multiple values.

  • browser_take_screenshot

    • Description: Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.

    • Parameters:

      • raw (boolean, optional): Whether to return without compression (in PNG format). Default is false, which returns a JPEG image.

      • element (string, optional): Human-readable element description used to obtain permission to screenshot the element. If not provided, the screenshot will be taken of viewport. If element is provided, ref must be provided too.

      • ref (string, optional): Exact target element reference from the page snapshot. If not provided, the screenshot will be taken of viewport. If ref is provided, element must be provided too.

Vision-based Interactions

  • browser_screen_capture

    • Description: Take a screenshot of the current page

    • Parameters: None

  • browser_screen_move_mouse

    • Description: Move mouse to a given position

    • Parameters:

      • element (string): Human-readable element description used to obtain permission to interact with the element

      • x (number): X coordinate

      • y (number): Y coordinate

  • browser_screen_click

    • Description: Click left mouse button

    • Parameters:

      • element (string): Human-readable element description used to obtain permission to interact with the element

      • x (number): X coordinate

      • y (number): Y coordinate

  • browser_screen_drag

    • Description: Drag left mouse button

    • Parameters:

      • element (string): Human-readable element description used to obtain permission to interact with the element

      • startX (number): Start X coordinate

      • startY (number): Start Y coordinate

      • endX (number): End X coordinate

      • endY (number): End Y coordinate

  • browser_screen_type

    • Description: Type text

    • Parameters:

      • text (string): Text to type into the element

      • submit (boolean, optional): Whether to submit entered text (press Enter after)

Tab Management

  • browser_tab_list

    • Description: List browser tabs

    • Parameters: None

  • browser_tab_new

    • Description: Open a new tab

    • Parameters:

      • url (string, optional): The URL to navigate to in the new tab. If not provided, the new tab will be blank.

  • browser_tab_select

    • Description: Select a tab by index

    • Parameters:

      • index (number): The index of the tab to select

  • browser_tab_close

    • Description: Close a tab

    • Parameters:

      • index (number, optional): The index of the tab to close. Closes current tab if not provided.

Navigation

  • browser_navigate

    • Description: Navigate to a URL

    • Parameters:

      • url (string): The URL to navigate to

  • browser_navigate_back

    • Description: Go back to the previous page

    • Parameters: None

  • browser_navigate_forward

    • Description: Go forward to the next page

    • Parameters: None

Keyboard

  • browser_press_key

    • Description: Press a key on the keyboard

    • Parameters:

      • key (string): Name of the key to press or a character to generate, such as ArrowLeft or a

Console

  • browser_console_messages

    • Description: Returns all console messages

    • Parameters: None

Files and Media

  • browser_file_upload

    • Description: Upload one or multiple files

    • Parameters:

      • paths (array): The absolute paths to the files to upload. Can be a single file or multiple files.

  • browser_pdf_save

    • Description: Save page as PDF

    • Parameters: None

Utilities

  • browser_close

    • Description: Close the page

    • Parameters: None

  • browser_wait

    • Description: Wait for a specified time in seconds

    • Parameters:

      • time (number): The time to wait in seconds

  • browser_resize

    • Description: Resize the browser window

    • Parameters:

      • width (number): Width of the browser window

      • height (number): Height of the browser window

  • browser_install

    • Description: Install the browser specified in the config. Call this if you get an error about the browser not being installed.

    • Parameters: None

  • browser_handle_dialog

    • Description: Handle a dialog

    • Parameters:

      • accept (boolean): Whether to accept the dialog.

      • promptText (string, optional): The text of the prompt in case of a prompt dialog.

Available Tools

7 tools
execute-codeA

Execute custom Playwright JS code against the current page

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe Playwright code to execute. Must be an async function declaration that takes a page parameter. Example: async function run(page) { console.log(await page.title()); return await page.title(); } Returns an object with: - result: The return value from your function - logs: Array of console logs from execution - errors: Array of any errors encountered Example response: {"result": "Google", "logs": ["[log] Google"], "errors": []}

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it executes code asynchronously, requires a specific function structure (async with page parameter), and details the return format (result, logs, errors). It doesn't mention rate limits, auth needs, or destructive effects, but covers execution mechanics adequately for a tool with no 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, front-loaded sentence that directly states the tool's purpose with zero waste. Every word earns its place by specifying the action, code type, and target, making it highly efficient and easy to parse.

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 one parameter with full schema coverage and no output schema, the description is reasonably complete. It explains the execution process and return format, compensating for the lack of output schema. However, it doesn't address potential errors or side effects beyond the listed response fields, leaving minor gaps for a code execution tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by emphasizing the code must be 'Playwright JS' and executed 'against the current page', providing context beyond the schema's technical details. It doesn't elaborate on parameter syntax beyond the example, but enhances understanding of the tool's scope.

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 ('execute') and resource ('custom Playwright JS code') with the target ('against the current page'). It distinguishes from siblings like get-context or get-screenshot by focusing on code execution rather than retrieval or capture. However, it doesn't explicitly differentiate from init-browser in terms of browser lifecycle management.

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

Usage Guidelines3/5

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

The description implies usage for executing custom code on a page, suggesting it's for dynamic interactions beyond simple data fetching. No explicit guidance on when to use vs. alternatives like get-full-dom for static content or prerequisites (e.g., requires an initialized browser). The context is clear but lacks specific exclusions or named alternatives.

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

get-full-domA

Get the full DOM of the current page. (Deprecated, use get-context instead)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool's purpose and deprecation status but lacks details about what 'full DOM' includes (e.g., structure, limitations), performance implications, or error handling. The description adds some context (deprecation) but doesn't fully compensate for the missing annotation coverage.

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

Conciseness5/5

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

The description is extremely concise with just two sentences that each serve a distinct purpose: the first states the tool's function, and the second provides critical usage guidance. There is zero wasted text, and the information is front-loaded with the core purpose immediately clear.

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, no annotations, and no output schema, the description provides adequate context for a simple, deprecated tool. It clearly explains what the tool does and why it shouldn't be used, which is sufficient for its complexity level. However, it could be more complete by explaining what 'full DOM' entails or linking to documentation for the replacement tool.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose and usage guidance. This meets the baseline expectation for tools without parameters.

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

Purpose5/5

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

The description clearly states the specific action ('Get the full DOM') and the target resource ('of the current page'), providing a complete verb+resource combination. It also explicitly distinguishes from its sibling 'get-context' by marking itself as deprecated and recommending the alternative, which enhances clarity about its role relative to other tools.

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 ('Deprecated, use get-context instead'), directly naming the alternative sibling tool. This gives clear, actionable advice for tool selection, helping the agent avoid deprecated functionality in favor of the recommended option.

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

get-full-snapshotB

Get a complete snapshot of the page including all visible content (text, images, forms, etc.) for understanding the full context

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool captures 'all visible content' but doesn't specify details like whether it requires an active browser session, how it handles dynamic content, potential performance impacts, or what the output format looks like. This leaves significant gaps for a tool that likely interacts with web pages.

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

Conciseness4/5

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

The description is a single, well-structured sentence that efficiently conveys the core purpose without redundancy. It's front-loaded with the main action and resource, making it easy to parse. However, it could be slightly more concise by avoiding the parenthetical elaboration, which adds minor verbosity.

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 likely complexity in capturing web page snapshots, the description is insufficient. With no annotations, no output schema, and minimal behavioral details, it fails to provide enough context for effective use. It doesn't explain what 'complete snapshot' entails, how it differs from siblings, or what the agent should expect as a result, leaving critical 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 tool has 0 parameters, and the schema description coverage is 100%, so there are no parameters to document. The description appropriately doesn't add unnecessary parameter details, aligning with the empty input schema. A baseline score of 4 is applied as it doesn't need to compensate for any parameter gaps.

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 ('Get a complete snapshot') and resources ('page including all visible content'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'get-full-dom' or 'get-text-snapshot', which likely serve similar but distinct purposes.

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

Usage Guidelines2/5

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

The description provides minimal guidance on when to use this tool, only mentioning it's 'for understanding the full context'. It doesn't specify when to choose this over alternatives like 'get-text-snapshot' or 'get-screenshot', nor does it mention any prerequisites or exclusions, leaving usage unclear.

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

get-interactive-snapshotB

Get a snapshot focused on interactive elements (buttons, links, inputs) with annotated screenshot for UI automation

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool does (gets a snapshot with annotations) but lacks details on behavioral traits such as performance characteristics, error handling, or whether it requires specific browser states. This is a significant gap for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and context without any wasted words. It is front-loaded with key information ('Get a snapshot focused on interactive elements') and appropriately sized for its complexity.

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

Completeness3/5

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

Given the tool has no parameters, no annotations, and no output schema, the description is minimally adequate. It explains what the tool does and its intended use ('for UI automation'), but it lacks details on output format, behavioral constraints, or how it differs from siblings. This leaves gaps in understanding for effective agent use.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't mention any parameters, which is appropriate. A baseline score of 4 is applied since there are no parameters to document, and the description doesn't add unnecessary details.

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: 'Get a snapshot focused on interactive elements (buttons, links, inputs) with annotated screenshot for UI automation.' It specifies the verb ('Get'), resource ('snapshot'), and scope ('interactive elements'), though it doesn't explicitly differentiate from sibling tools like 'get-full-snapshot' or 'get-screenshot' beyond mentioning 'focused on interactive elements.'

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 ('for UI automation') and suggests when to use it (when needing interactive elements), but it doesn't provide explicit guidance on when to choose this tool over alternatives like 'get-full-snapshot' or 'get-screenshot.' No exclusions or prerequisites are mentioned, leaving usage somewhat open to interpretation.

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

get-screenshotB

Get a screenshot of the current page

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on traits like whether it requires a browser session to be active, if it captures the entire viewport or a specific area, potential delays or failures, or the format of the output (e.g., image data, file path). This is a significant gap for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, clear sentence with zero wasteโ€”it directly states the tool's function without unnecessary words. It is appropriately sized and front-loaded, 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.

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 (capturing a screenshot likely involves browser state and output handling), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like dependencies on an active page or what the output contains, leaving the agent with insufficient context for reliable use.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, which is appropriate here. Baseline is 4 for 0 params, as the description doesn't need to compensate for any schema gaps.

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 ('Get') and resource ('screenshot of the current page'), making the tool's purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'get-full-dom' or 'get-context', but the specificity of 'screenshot' provides inherent distinction. This is not a tautology of the name and is appropriately 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 like 'get-full-dom' (which might provide DOM structure) or 'get-context' (which might provide textual context). It implies usage when a visual capture is needed, but lacks explicit context, prerequisites, or exclusions, leaving the agent to infer based on tool names alone.

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

get-text-snapshotB

Get all text content from the page (headings, paragraphs, lists) for reading and content extraction

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'gets all text content' but does not specify behavioral traits such as performance characteristics (e.g., speed, pagination), error handling, or whether it requires specific page states (e.g., loaded page). This leaves gaps in understanding how the tool behaves beyond its basic function.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action ('Get all text content') and specifies the scope ('from the page') and use cases ('for reading and content extraction'). Every word contributes to understanding without waste, 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 complexity (simple text extraction with no parameters) and lack of annotations or output schema, the description is minimally complete. It states what the tool does but lacks details on output format (e.g., structured text, raw string) or behavioral context, which could be important for an agent to use it effectively in varied scenarios.

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 appropriately does not discuss parameters, focusing on the tool's purpose instead. This meets the baseline for tools with no parameters, as it avoids unnecessary details and adds value by clarifying the tool's intent.

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 ('get all text content') and resources ('from the page'), specifying content types like headings, paragraphs, and lists. It distinguishes the tool by focusing on text extraction for reading, but does not explicitly differentiate it from sibling tools like get-full-dom or get-full-snapshot, which might also retrieve text content.

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

Usage Guidelines3/5

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

The description implies usage for 'reading and content extraction,' suggesting when to use this tool (e.g., for text analysis). However, it lacks explicit guidance on when not to use it or alternatives among sibling tools (e.g., vs. get-full-dom for full DOM or get-screenshot for visual capture), leaving usage context partially inferred.

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

init-browserC

Initialize a browser with a URL

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to navigate to

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Initialize a browser') but doesn't explain what this entailsโ€”whether it launches a new browser instance, reuses an existing one, requires specific permissions, has side effects like opening windows, or what happens on failure. This leaves significant gaps in understanding the tool's 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 with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place by conveying essential information without redundancy.

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 complexity of initializing a browser (which could involve launching processes, handling errors, or managing sessions) and the lack of annotations and output schema, the description is incomplete. It doesn't address what the tool returns, potential errors, or behavioral nuances, leaving the agent with insufficient context 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?

The schema description coverage is 100%, with the 'url' parameter fully documented in the schema as 'The URL to navigate to'. The description adds no additional meaning beyond this, such as URL format examples or constraints. Since the schema does the heavy lifting, 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.

Purpose4/5

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

The description clearly states the action ('Initialize a browser') and the target resource ('with a URL'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get-screenshot' or 'get-full-dom' which might also involve browser operations, so it doesn't fully distinguish itself 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get-screenshot' or 'get-full-dom'. It doesn't mention prerequisites (e.g., needing a browser session first) or exclusions, leaving the agent to infer usage context 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • Removedget-context
    • Changedget-full-dom1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedget-full-snapshot
    • Addedget-interactive-snapshot
    • Changedget-screenshot1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedget-text-snapshot
  2. 5 tool updates
    • First observedexecute-code
    • First observedget-context
    • First observedget-full-dom
    • First observedget-screenshot
    • First observedinit-browser

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation3/5

The tools have overlapping purposes that could cause confusion, particularly around snapshot variants (get-full-snapshot, get-interactive-snapshot, get-text-snapshot) which all extract page content in different ways. However, descriptions help differentiate them by specifying focus areas like interactive elements or text content, preventing complete misselection.

Naming Consistency4/5

Tool names follow a consistent verb-object pattern with hyphens (e.g., execute-code, get-screenshot), making them predictable and readable. The only minor deviation is 'init-browser' which uses 'init' instead of a more standard verb like 'launch' or 'open', but it still fits the overall naming convention.

Tool Count5/5

With 7 tools, this server is well-scoped for browser automation with Playwright, covering key operations like initialization, code execution, and various content extraction methods. Each tool earns its place by addressing distinct aspects of web interaction without being overly sparse or bloated.

Completeness4/5

The toolset provides solid coverage for core Playwright workflows, including browser setup, DOM/content access, and automation execution. A minor gap exists in navigation control (e.g., no explicit 'navigate' or 'go-back' tools), but agents can work around this using execute-code or init-browser with URLs.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots, providing browser automation capabilities without requiring screenshots or visually-tuned models.
    6
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or visually-tuned models.
    24
    7,739,093 npm
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that provides browser automation capabilities using Playwright, enabling LLMs to interact with web pages through structured accessibility snapshots without requiring screenshots or visually-tuned models.
    22
    7,739,093 npm
    Apache 2.0