Skip to main content
Glama
manganate006

playwright-spa-mcp

🎭 Playwright SPA MCP

The Playwright MCP server built for modern web apps β€” persistent sessions, React/Vue/Angular support, 143+ devices and smart DOM waiting.

License: MIT Node MCP SDK

Installation Β· Why Β· Tools Β· Examples Β· Limitations

Overview

An MCP server that drives a real Chromium browser, purpose-built for Single Page Applications. Your assistant can log in, click, type and screenshot β€” and the SPA's state survives across calls:

You: Log into app.example.com, open the dashboard and screenshot it.

Assistant: (calls spa_session_start, then spa_chain [type-realistic β†’ click β†’ wait-for-idle], then spa_screenshot) Logged in and captured the dashboard β€” React state preserved across the session.

Related MCP server: MCP Playwright Server

Why this server?

Feature

playwright-spa-mcp

Other Playwright MCPs

Persistent sessions

βœ…

❌

React/Vue/Angular detection

βœ…

❌

Smart DOM idle waiting

βœ…

❌

Realistic typing

βœ…

❌

Device emulation

143+

Limited

Action chains

βœ…

❌

HTTP with browser cookies

βœ…

❌

Installation

# One command β€” no clone needed
claude mcp add playwright-spa -- npx -y github:manganate006/playwright-spa-mcp

# Install the Chromium browser Playwright drives
npx playwright install chromium

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "playwright-spa": {
      "command": "npx",
      "args": ["-y", "github:manganate006/playwright-spa-mcp"]
    }
  }
}
git clone https://github.com/manganate006/playwright-spa-mcp.git
cd playwright-spa-mcp
npm install
npx playwright install chromium
claude mcp add playwright-spa -- node $(pwd)/src/index.js

Tools

22 tools, spa_ prefix. Chain-action list, 143+ device shortcuts and CLI usage: docs/ADVANCED.md.

Group

Tools

πŸ“Έ Screenshot & navigation

spa_screenshot, spa_navigate, spa_go_back, spa_go_forward, spa_wait_idle

πŸ“ Interactions

spa_click, spa_fill, spa_type_realistic, spa_upload, spa_drag

⛓️ Chains

spa_chain (run many actions in one call)

πŸ” Sessions

spa_session_start, spa_session_end, spa_session_list

πŸ”Ž Inspection

spa_get_text, spa_assert, spa_evaluate, spa_http_request

πŸ–ΌοΈ iframes

spa_iframe_click, spa_iframe_fill

ℹ️ Discovery

spa_list_devices, spa_list_actions

Examples

Log into a React app and keep the session β€” realistic typing fires React's onChange:

spa_session_start({ session: "myapp" })

spa_chain({
  session: "myapp",
  url: "https://app.example.com/login",
  spaMode: "react",
  chain: [
    { action: "type-realistic", selector: "#email", value: "user@example.com" },
    { action: "type-realistic", selector: "#password", value: "secret123" },
    { action: "click", selector: "button[type=submit]" },
    { action: "wait-for-idle" },
    { action: "screenshot" }
  ]
})

// Same session β€” React state is preserved
spa_click({ session: "myapp", selector: ".dashboard-item" })

Mobile device emulation:

spa_screenshot({ url: "https://example.com", device: "iPhone 15 Pro", fullPage: true })

Authenticated API call reusing the session cookies:

spa_http_request({ session: "myapp", url: "https://api.example.com/user/profile", method: "GET" })

Limitations

  • Chromium only β€” Firefox/WebKit are not wired up; requires npx playwright install chromium

  • Local browser β€” spawns a real browser process; not suited to sandboxes without one

  • SPA heuristics β€” React/Vue/Angular readiness is detected heuristically (spaMode: "auto"); heavy custom frameworks may need explicit wait-for / wait-for-idle

  • Sessions are in-memory β€” they live with the server process and don't persist across restarts

SPA framework support

Detects and waits correctly for React (finishes rendering, proper onChange), Vue (v-model bindings) and Angular (Zone.js stability). Use spaMode: "auto" to detect automatically. Details in docs/ADVANCED.md.

Built with this MCP

Project

Description

atp.mangi.fr

🎾 ATP tennis stats since 1968

piscinade.com

🏊 Pool-party finder in France

License

MIT Β© manganate006

Available Tools

22 tools
spa_assertC

Run assertions on page elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
typeYesAssertion type
valueNoExpected value (for text and count assertions)
sessionNoSession IDdefault
containsNoFor text assertion: check if text contains value instead of exact match
selectorYesCSS selector to check

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only states 'Run assertions on page elements' but omits crucial details: What happens on failure (error vs boolean return)? Does it wait for elements? How does it handle sessions? The schema hints at types but the description itself is silent.

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 extremely concise at one sentence, which is efficient for a simple tool. It is front-loaded with the essential verb. However, it might be too brief to be maximally helpful.

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 (6 parameters, assertion types) and lack of output schema, the description is incomplete. It does not explain return behavior, error handling, or session management. For a testing tool, this is insufficient.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema already provides for the 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 clearly states the verb 'Run assertions' and the resource 'page elements', making the tool's general purpose clear. However, it could be more specific about what types of assertions are supported, which are detailed in the schema. It is distinct from sibling tools like spa_click or spa_fill.

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, or any prerequisites. The agent receives no context about when assertions are appropriate or how they relate to other spa_* tools.

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

spa_chainA

Execute a chain of actions in sequence. Supports all browser actions plus chain-specific commands like wait, wait-for-idle, press, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
chainYesArray of action objects to execute
deviceNoDevice to emulate
sessionNoSession IDdefault
spaModeNo
stopOnErrorNoStop chain execution on first error

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so the description carries the burden. It mentions supported actions but does not disclose details about error handling, session management, or side effects beyond the parameter stopOnError.

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 concise sentence, effectively capturing the essence. Slightly more structure could improve readability, but it is not overly verbose.

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

Completeness3/5

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

Given the complexity of the tool (6 parameters, nested chain array, and no output schema), the description is somewhat lacking. It does not explain the structure of the chain array or the impact of parameters like device, session, and spaMode in detail.

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 83%, so the schema already documents most parameters. The description adds little extra meaning beyond listing chain-specific commands, which are already in the schema.

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

Purpose5/5

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

The name 'spa_chain' and description 'Execute a chain of actions in sequence' clearly state the tool's purpose. It distinguishes from sibling tools by emphasizing sequential execution of multiple actions.

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 sequences of browser actions but does not explicitly state when to use this tool versus individual action tools like spa_click, spa_fill, etc. No exclusions or alternatives are mentioned.

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

spa_clickB

Click an element with SPA-aware waiting. Waits for DOM to stabilize after click.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
sessionNoSession IDdefault
spaModeNo
selectorYesCSS selector to click
screenshotNoTake screenshot after action
waitForIdleNoWait for DOM idle after click

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only mentions 'waits for DOM to stabilize after click'. It omits details on error handling, return values, destructive nature, or auth requirements.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded with purpose.

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?

The description does not explain return values, the role of the 'url' parameter, or how the tool interacts with navigation siblings. Given 6 parameters and no output schema, more context is needed.

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 83%, so baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'click' and the resource 'element', and specifies 'SPA-aware waiting', which distinguishes it from sibling tools like spa_fill and spa_type_realistic.

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 use for clicking in SPAs requiring DOM stabilization, but does not explicitly state when to use or when not to use, nor does it mention alternatives like spa_iframe_click.

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

spa_dragC

Drag an element and drop it on another element.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
targetYesCSS selector for drop target
sessionNoSession IDdefault
selectorYesCSS selector for element to drag
screenshotNoTake screenshot after action

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the action without elaborating on side effects, failure modes (e.g., if drop invalid), or waiting behavior. This is insufficient for a complex interaction.

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

Conciseness3/5

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

The description is concise (one sentence) and front-loaded, but it is overly minimal. It could include more structured information (e.g., parameter roles) without becoming verbose.

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?

With 5 parameters, no output schema, and no annotations, the description lacks details about return values, prerequisites, or edge cases. It only covers the basic action, leaving the agent underinformed.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all 5 parameters. The tool description adds no additional meaning beyond the schema, so baseline score of 3 applies.

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 ('Drag an element and drop it on another element'), which is a specific verb+resource combination. It effectively distinguishes from sibling interaction tools like spa_click or spa_fill.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus other interaction tools (e.g., spa_click or spa_fill). The description lacks context about prerequisites or scenarios where drag-and-drop is appropriate.

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

spa_evaluateB

Execute JavaScript in the page context.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
scriptYesJavaScript code to execute
sessionNoSession IDdefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, and the description fails to disclose behavioral traits such as side effects, security implications, or that the result is the script's return value.

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, efficient sentence, but it omits potentially valuable information; still, it is not overly verbose.

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?

The tool executes arbitrary JavaScript, yet the description does not mention return values, error handling, or side effects, leaving the agent with significant uncertainty about its behavior.

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

Parameters3/5

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

Schema coverage is 100% and already describes each parameter; the description adds no extra meaning beyond the schema.

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

Purpose5/5

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

Description clearly states the action ('Execute JavaScript') and the context ('in the page context'), making it distinct from sibling tools that focus on UI interactions like clicks or fills.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., spa_assert, spa_get_text), nor any mention of prerequisites or exclusions.

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

spa_fillA

Fill an input field with React/Vue/Angular compatibility. Properly triggers framework change events.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
valueYesValue to fill
sessionNoSession IDdefault
spaModeNo
selectorYesCSS selector for input field
screenshotNoTake screenshot after action

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description provides some behavioral insight (triggers framework change events) but lacks details on side effects like clearing existing values or waiting for elements.

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

Conciseness5/5

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

Two concise sentences, front-loaded with action and compatibility; no wasted words.

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

Completeness4/5

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

Adequate for a 6-parameter tool; covers the important framework-triggering behavior. Could be more complete by mentioning handling of different input types or the url navigation behavior.

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 83%, so schema already documents most parameters. The description adds no extra meaning beyond mentioning framework compatibility, which relates to spaMode but doesn't elaborate.

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

Purpose5/5

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

The description clearly states the tool fills an input field and specifies compatibility with React, Vue, Angular, which distinguishes it from sibling tools like spa_click or spa_type_realistic.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives like spa_type_realistic or spa_click. The framework compatibility is mentioned but not as a usage criterion.

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

spa_get_textC

Get text content of an element.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
sessionNoSession IDdefault
selectorYesCSS selector

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided. The description omits behavioral details such as whether it waits for the element, returns empty string if not found, or works on hidden elements. The agent must guess behavior.

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

Conciseness2/5

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

The description is a single short sentence. While concise, it sacrifices necessary detail. It does not earn its place by providing value beyond the name.

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 simplicity, no output schema, and no annotations, the description should explain return value and error behavior. It fails to provide a complete picture.

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

Parameters3/5

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

Schema coverage is 100%. The description does not add meaning beyond what the schema provides (e.g., what 'selector' targets, handling multiple matches). Baseline score applies as no additional semantics are offered.

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 gets text content from an element. It uses a specific verb and resource, making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like spa_assert which may also interact with text.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., spa_assert). No mention of prerequisites or when not to use it, leaving the agent to infer context.

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

spa_go_backB

Navigate back in browser history.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession IDdefault
screenshotNoTake screenshot after action

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. Description does not disclose side effects such as waiting for page load, behavior with empty history, or impact on session state.

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?

Single sentence is concise and front-loaded, no wasted words.

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?

Despite low complexity, missing usage context and behavioral details for an SPA automation tool (e.g., session requirement). Not complete 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 coverage is 100% with parameter descriptions. Description adds no additional meaning beyond the brief purpose.

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 'Navigate back in browser history' clearly states the action and resource, distinguishing it from siblings like spa_go_forward.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like spa_go_forward or other navigation methods. Lacks context for prerequisites or when not to use.

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

spa_go_forwardA

Navigate forward in browser history.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession IDdefault
screenshotNoTake screenshot after action

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided; description lacks details on prerequisites (e.g., forward history existence), side effects, or error conditions.

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?

Single clear sentence with no wasted words.

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

Completeness4/5

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

Simple tool with no required params or output schema; description covers core functionality adequately.

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 baseline 3 applies; description adds no parameter-specific info.

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?

Description clearly states the verb 'navigate forward' and the resource 'browser history', distinguishing it from sibling spa_go_back.

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

Usage Guidelines3/5

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

No explicit guidance on when to use or when not; usage is implied but not elaborated.

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

spa_http_requestA

Make an HTTP request using the browser context (includes cookies and auth).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL for HTTP request
bodyNoRequest body (JSON string or form data)
methodNoGET
headersNoRequest headers
sessionNoSession IDdefault
bearerTokenNoBearer token for Authorization header

TDQS

A3.8/5.0
Behavior4/5

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

Discloses that the request includes cookies and authentication from the browser context, which is key behavioral info. Without annotations, this adds value, though it omits potential side effects like modifying server state.

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?

Single sentence that is direct and free of filler, effectively communicates the core purpose.

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?

No output schema exists, and the description does not explain what the tool returns (e.g., response status, body, headers). This is a significant gap for a request tool, reducing its usefulness for an AI agent.

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

Parameters3/5

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

Schema coverage is high (83%) and parameters are well-described in the schema. The description adds no additional meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool makes an HTTP request using the browser context, distinguishing it from sibling tools that perform UI actions like clicks and fills.

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?

Implies usage for requests requiring cookies/auth, but no explicit guidance on when to use this versus other tools (e.g., for non-browser requests) or exclusions.

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

spa_iframe_clickB

Click an element inside an iframe.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
frameYesCSS selector for the iframe
sessionNoSession IDdefault
selectorYesCSS selector for element inside iframe
screenshotNoTake screenshot after action

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as loading requirements, error handling, or cross-origin limitations. The description carries full burden for transparency but only states the basic action.

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

Conciseness4/5

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

A single sentence that is front-loaded and efficient. However, the brevity sacrifices necessary detail.

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?

The tool has 5 parameters and no output schema. The description is too brief for the complexity of clicking inside an iframe, failing to explain navigation, iframe readiness, or screenshot behavior.

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 already documented. The tool description adds no extra meaning beyond what the schema provides. Baseline 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 is 'Click an element inside an iframe.' It clearly specifies the action (click) and the target resource (element inside an iframe), which distinguishes it from siblings like spa_click (click on main page) and spa_iframe_fill (fill inside iframe).

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. It does not mention prerequisites, limitations, or exclusion criteria. For example, it does not clarify when to use spa_iframe_click vs spa_iframe_fill.

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

spa_iframe_fillB

Fill an input field inside an iframe.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
frameYesCSS selector for the iframe
valueYesValue to fill
sessionNoSession IDdefault
selectorYesCSS selector for input inside iframe
screenshotNoTake screenshot after action

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 must cover behavioral traits. It only states the basic action without disclosing whether it waits for iframe loading, handles framesets, or any side effects. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single, clear sentence with no waste. It could be slightly more informative, but it is concise and front-loaded.

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

Completeness3/5

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

For a simple fill action with no output schema, the description is adequate but lacks details on error handling, preconditions (e.g., iframe must exist), or behavior when the input is not found. The screenshot parameter hints at output, but not explicitly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description adds minimal value beyond clarifying 'inside an iframe'. Baseline 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 clearly states the action ('fill') and the specific resource ('input field inside an iframe'), distinguishing it from sibling tools like spa_fill (non-iframe) and spa_iframe_click.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives such as spa_fill or spa_type_realistic. The context is implied by the iframe focus, but exclusions and usage scenarios are missing.

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

spa_list_actionsA

List all available actions for the chain command.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as read-only nature, session requirements, or side effects. It only states the 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, concise sentence with no wasted words. It is front-loaded 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?

For a simple tool with no parameters and no output schema, the description adequately explains its purpose. Could be slightly more detailed about the return format, but overall complete given low complexity.

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 no parameters, so schema coverage is 100% trivially. Baseline score of 4 applies, and the description adds no param info since none exist.

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

Purpose5/5

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

The description clearly states the tool lists all available actions for the chain command. It uses a specific verb 'list' and resource 'actions for the chain command', distinguishing it from siblings like spa_chain.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not specify that it should be used before constructing a chain command, nor does it mention exclusions.

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

spa_list_devicesB

List available device emulation presets.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch pattern to filter devices

TDQS

B3.3/5.0
Behavior2/5

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

Without annotations, the description carries full burden for behavioral disclosure, but it only states the basic function. It does not mention whether the list is all presets or filtered, any side effects, or that it is a read-only operation.

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

Conciseness5/5

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

A single sentence that is perfectly concise and front-loaded, containing no extraneous 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?

Given the tool's simplicity (one optional parameter, no output schema), the description is minimally complete but lacks any indication of return format or expected filter behavior, which could aid the agent.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds no additional meaning beyond the parameter's own description ('Search pattern to filter devices'). Baseline 3 is appropriate as schema handles semantic load.

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

Purpose5/5

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

The description uses a specific verb+resource combination ('List available device emulation presets') that clearly distinguishes this tool from sibling tools like spa_click or spa_fill, which are actions rather than list 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, nor does it mention any prerequisites or context for when listing presets is appropriate.

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

spa_navigateC

Navigate to a URL with device emulation support.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to navigate to
deviceNoDevice to emulate
sessionNoSession IDdefault
userAgentNoCustom user agent string
waitUntilNonetworkidle
screenshotNoTake screenshot after navigation

TDQS

C2.9/5.0
Behavior2/5

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

The description does not disclose behavioral traits beyond device emulation, such as the default waitUntil behavior (networkidle), automatic screenshot taking (default true), or potential side effects. Since no annotations exist, the description should compensate but fails to do so.

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

Conciseness5/5

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

The description is a single concise sentence that immediately conveys the core action and key feature. It is front-loaded with the verb and resource, containing no superfluous words.

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?

With 6 parameters, no output schema, and no annotations, the description is too sparse. It does not explain return behavior, error handling, or the interplay of parameters like waitUntil and screenshot. Important context is missing for an effective tool invocation.

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

Parameters3/5

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

Schema coverage is high (83%) so the schema already explains most parameters. The description adds value by highlighting device emulation, but does not elaborate on parameter meanings beyond what the schema provides. Baseline 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 tool navigates to a URL with device emulation support, distinguishing it from sibling tools like spa_click or spa_fill which perform different actions. However, it could explicitly mention that it's for single-page applications (SPA) as implied by the tool name.

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

Usage 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 like spa_go_back or spa_go_forward, nor any prerequisites or contexts where it is appropriate. The description lacks advice on choosing between navigation methods.

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

spa_screenshotB

Take a screenshot of a web page with SPA framework support. Waits for DOM to stabilize before capturing.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to (optional if using existing session)
deviceNoDevice to emulate (e.g., "iPhone 15", "Pixel 7", or shortcuts like "iphone", "pixel")
sessionNoSession ID for persistent browser statedefault
spaModeNoSPA framework mode for better stability detection
fullPageNoCapture full page screenshot
selectorNoCSS selector to screenshot (element screenshot)
waitForIdleNoWait for DOM idle time in ms before screenshot

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 full behavioral burden. It discloses DOM stabilization wait but omits important traits such as output format, storage location, authentication needs, or limitations (e.g., page size). This leaves significant gaps.

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

Conciseness5/5

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

Two concise sentences with no wasted words. Information is front-loaded 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?

Despite 7 parameters, the description is minimal. It does not clarify parameter relationships (e.g., fullPage vs selector exclusivity), return format (no output schema), or session management. Incomplete for a tool with many options.

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 has 100% coverage, so all parameters are described. The description adds marginal value by explaining why DOM waits (for stability), but it does not elaborate on parameter interactions or defaults beyond what schema provides.

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

Purpose5/5

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

The description clearly states it takes a screenshot, specifies SPA framework support, and mentions waiting for DOM stability. This distinguishes it from generic screenshot tools and aligns with sibling tools focused on SPA interactions.

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 use for SPA screenshotting but does not provide explicit when-to-use or when-not-to-use guidance. Among siblings, it is the only screenshot tool, so context is implicit but not articulated.

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

spa_session_endB

End a browser session and close the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession ID to closedefault

TDQS

B3/5.0
Behavior2/5

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

No annotations provided. Description says 'close the browser' but does not disclose side effects like unsaved state or irreversibility of the session.

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

Conciseness3/5

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

Very brief (6 words) but could benefit from a note about session validity or cleanup. Not excessively long but lacks informative structure.

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 simplicity and lack of output schema, the description is minimal. It could mention post-end behavior or that no further actions are possible.

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 covers 100% of parameters with description; the tool description does not add meaning beyond the schema.

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

Purpose5/5

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

The verb 'End' and resource 'browser session' clearly state the action. Distinguished from sibling tools spa_session_start and spa_session_list.

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

Usage Guidelines2/5

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

No guidance on when to use vs alternatives like spa_session_start or what state must exist before calling.

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

spa_session_listA

List all active browser sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided; the description implies a read-only operation but does not explicitly disclose behavioral traits such as side effects or output 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?

Single, concise sentence with no unnecessary words; highly efficient.

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?

Despite having no parameters, the description lacks details on return values or output structure, which could be useful for an agent.

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 zero parameters and 100% schema coverage, the description adds no param info, but baseline 4 applies 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 'List all active browser sessions.' clearly specifies the verb (list) and resource (active browser sessions), differentiating it from siblings like spa_session_start or spa_session_end.

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

Usage Guidelines3/5

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

No guidance on when to use this tool versus alternatives; however, the simple nature of listing sessions makes it self-explanatory in context.

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

spa_session_startB

Start a new persistent browser session. Use sessions to maintain state between tool calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceNoDevice to emulate
sessionNoSession ID to createdefault
viewportNo
userAgentNoCustom user agent

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It mentions persistence and state maintenance but omits critical traits like session lifespan, behavior if session ID already exists, resource cleanup, or side effects (e.g., setting cookies).

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded with the action and purpose. Every word earns its place.

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 has 4 parameters (including a nested viewport) and no output schema, the description is incomplete. It does not explain the viewport/device parameters, nor what the tool returns (e.g., session ID or status).

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 75%, so baseline is 3. The description does not add any parameter information beyond the schema, so it does not improve semantics.

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 starts a new persistent browser session and explains the purpose (maintain state). It implicitly distinguishes from siblings like spa_session_end and spa_session_list, but could be more explicit about what a session 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 provides some usage context ('Use sessions to maintain state between tool calls') but lacks explicit when-to-use, when-not-to-use, or alternatives. It does not guide when to start a session versus other actions.

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

spa_type_realisticB

Type text character by character with realistic delays. Best for React controlled inputs and forms with live validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
delayNoDelay between keystrokes in ms
valueYesText to type
sessionNoSession IDdefault
spaModeNo
selectorYesCSS selector for input field
clearFirstNoClear the field before typing
screenshotNoTake screenshot after action

TDQS

B3.4/5.0
Behavior3/5

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

Describes character-by-character typing with delays, providing behavioral insight. No annotations present, so burden is on description. Lacks details on event triggering, validation waits, or side effects beyond typing.

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?

Extremely concise: two sentences, no wasted words. Action verb in first sentence, front-loaded with key information.

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?

Tool has 8 parameters, no output schema, no annotations. Description is too brief given complexity. Does not cover behavior after typing, waiting for validation, or how spaMode is used. Significant gaps for a nuanced tool.

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

Parameters3/5

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

Schema description coverage is 88%, high. Description adds minimal value beyond schema; mentions 'character by character' which relates to delay but does not explain other parameters. Baseline 3 is appropriate given high 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?

Clearly states tool types text character by character with realistic delays. Identifies target use case (React controlled inputs, live validation). Distinguishes from siblings like spa_fill by implying realism, but does not explicitly contrast.

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?

Says 'Best for React controlled inputs and forms with live validation', giving a usage context. Does not explicitly state when not to use it or mention alternatives, though it implies other tools for simpler inputs.

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

spa_uploadC

Upload a file to a file input element.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to first (optional)
fileNoPath to file to upload
filesNoMultiple file paths to upload
sessionNoSession IDdefault
selectorYesCSS selector for file input
screenshotNoTake screenshot after action

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, and the description fails to disclose behavioral traits such as automatic screenshots, navigation to a URL, support for multiple files, or session handling. The agent cannot infer important side effects or requirements.

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

Conciseness3/5

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

The description is extremely concise (one sentence), but it sacrifices informativeness. While there is no wasted text, it is under-specifying for a tool with 6 parameters and no annotations.

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 (6 parameters, no output schema, no annotations), the description is incomplete. It does not explain return values, error handling, or expected behavior, leaving significant gaps for the agent.

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?

All 6 parameters have descriptions in the schema (100% coverage), so the description adds no extra meaning. The description merely restates the action, providing no additional semantic value beyond the schema.

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

Purpose4/5

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

The description clearly states the action (Upload) and the resource (file to file input element), which distinguishes it from sibling tools like spa_click and spa_fill. However, it lacks specificity about the upload process (e.g., single vs multiple files, navigation).

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 spa_fill or spa_click. It does not mention prerequisites, context, or exclusions, leaving the agent without decision support.

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

spa_wait_idleA

Wait for DOM to become idle (no mutations). Useful for SPAs that update the DOM frequently.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxWaitNoMaximum wait time in ms
sessionNoSession IDdefault
idleTimeNoRequired idle time in ms

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, description carries full burden. It explains the idle detection concept but omits critical details: what happens on timeout, return type, side effects on session.

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

Conciseness5/5

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

Two concise sentences front-loaded with action and purpose. No unnecessary words.

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

Completeness4/5

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

Simple tool with optional parameters. Missing return value info, but no output schema required. Otherwise adequate for expected usage.

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 covers all three parameters with descriptions. Description adds no additional parameter context beyond what schema provides.

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

Purpose5/5

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

Clearly states verb (wait), resource (DOM), and condition (idle, no mutations). Distinguishes from sibling tools which are interaction or navigation actions.

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?

Mentions usefulness for SPAs that update DOM frequently, implying when to use. However, no explicit guidance on when not to use or alternatives.

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

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have distinct purposes, but spa_click/spa_iframe_click and spa_fill/spa_iframe_fill are similar except for iframe context, which is clear. spa_type_realistic is a variant of fill. Overall well-differentiated.

Naming Consistency5/5

All tools follow a consistent 'spa_verb_noun' pattern using snake_case, making it easy to understand the action and target.

Tool Count5/5

16 tools is appropriate for a comprehensive SPA testing server, covering essential operations without being overwhelming.

Completeness4/5

The tool set covers core SPA interactions (click, fill, navigate, upload, drag, assertions, sessions) and HTTP requests. Minor gaps like screenshot or network interception are missing but not critical for basic SPA testing.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables automated browser testing of web applications using Playwright, supporting user interactions, form submissions, console monitoring, network request inspection, and visual verification through screenshots.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to control web browsers through Playwright automation, providing 50+ tools for navigation, interaction, testing, accessibility audits, and visual testing across Chromium, Firefox, and WebKit.
    15
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A universal browser automation server featuring 63 tools for programmatic Chrome control, multi-tab management, and media interaction using Playwright. It enables advanced actions like session recording, performance profiling, and pixel-based interaction through a safe, isolated browser profile.
    63
    24
    1
    MIT

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/manganate006/playwright-spa-mcp'

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