electron-mcp-server
Provides tools for launching and managing Electron applications, interacting with UI elements, executing scripts in the main process, capturing screenshots, and performing visual and accessibility testing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@electron-mcp-serverlaunch the electron app and click the 'Start' button"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Electron MCP Server
A Model Context Protocol (MCP) server for testing Electron applications using Playwright. This server enables AI coding tools like Cursor and Claude Code to interact with Electron applications for automated testing and development.
Features
Electron App Lifecycle: Launch and manage Electron applications programmatically
CDP Connection: Connect to running Electron apps via Chrome DevTools Protocol with retry logic and IPv6/IPv4 fallback
Element Interaction: Click, fill, select, and interact with UI elements
Navigation: Navigate to URLs and manage page state, with CDP-backed navigation history tools
Window Management: Control Electron main windows (focus, minimize, maximize)
Main Process Access: Execute scripts in the Electron main process
Visual Testing: Capture screenshots and compare against baselines
Accessibility Testing: Retrieve accessibility tree information, structured accessibility snapshots, and role-based interactions
Session Management: Multiple concurrent test sessions with UUID tracking
Advanced CDP Features: Network emulation, geolocation override, device metrics, performance monitoring, navigation history
Code Generation: Record user flows and export Playwright tests
Robust Error Handling: Categorized errors with automatic classification and retry recommendations
Related MCP server: Electron MCP Server
Installation
Using npm (Recommended)
npm install -g @kanishka-namdeo/electron-mcp-serverFrom Source
git clone https://github.com/kanishka-namdeo/electron-mcp-server.git
cd electron-mcp-server
npm install
npm run buildUsage
Running the Server
# Development mode with hot reload
npm run dev
# Production mode
npm run start
# Build TypeScript
npm run buildAI Tool Integration
Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"electron-mcp-server": {
"command": "npx",
"args": [
"-y",
"@kanishka-namdeo/electron-mcp-server"
],
"env": {
"LOG_LEVEL": "info",
"NODE_ENV": "production"
}
}
}
}Or using a global installation:
{
"mcpServers": {
"electron-mcp-server": {
"command": "electron-mcp-server",
"env": {
"LOG_LEVEL": "info",
"NODE_ENV": "production"
}
}
}
}Cursor
Add to your Cursor MCP settings (.cursor/mcp.json):
{
"mcpServers": {
"electron-mcp-server": {
"command": "npx",
"args": [
"-y",
"@kanishka-namdeo/electron-mcp-server"
]
}
}
}Or for global installation:
{
"mcpServers": {
"electron-mcp-server": {
"command": "electron-mcp-server"
}
}
}Available Tools
The Electron MCP Server provides 44 tools across 6 categories:
App Lifecycle (4 tools)
Tool | Description |
| Launch an Electron application |
| Connect to a running Electron app via CDP |
| Close a test session |
| List all active sessions |
Element Interaction (10 tools)
Tool | Description |
| Navigate to a URL |
| Click on an element |
| Fill an input field with text |
| Select an option from a dropdown |
| Get text content of an element |
| Take a screenshot of the page or element |
| Wait for an element to appear |
| Execute JavaScript in the renderer process |
| Get page URL and title |
Main Process & Window Control (8 tools)
Tool | Description |
| Execute JavaScript in the main process |
| Get window information |
| Focus the main window |
| Minimize the main window |
| Maximize the main window |
| Report capability info for unresponsive renderer callstack capture in Electron 34+ apps |
| Report capability info for HTTP shared dictionary compression in Electron 34+ apps |
| Report capability info for clearing shared dictionary cache in Electron 34+ apps |
Visual Testing & Accessibility (11 tools)
Tool | Description |
| Capture a screenshot |
| Screenshot a specific element |
| Compare against a baseline |
| Get current viewport dimensions |
| Set viewport dimensions |
| Retrieve accessibility tree |
| Get Playwright accessibility snapshot for the current page |
| Find nodes by accessibility role/name with optional fuzzy matching |
| Click or fill accessible nodes by role/name |
Advanced CDP Features (12 tools)
Tool | Description |
| Get CDP protocol version and browser info |
| Emulate slow/offline network |
| Reset to default network settings |
| Override geolocation |
| Remove geolocation override |
| Emulate mobile device |
| Capture console logs |
| Get performance metrics |
| Clear cache and cookies |
| Get current user agent |
| Get navigation history entries via CDP |
| Restore a history entry via CDP |
Codegen & Recording
Tool | Description |
| Start recording a flow for a session |
| Stop recording and return structured steps |
| Export recorded steps as a Playwright test snippet |
Links
npm: https://www.npmjs.com/package/@kanishka-namdeo/electron-mcp-server
Repository: https://github.com/kanishka-namdeo/electron-mcp-server
Issues: https://github.com/kanishka-namdeo/electron-mcp-server/issues
Development
Testing
The project has a comprehensive test suite with multiple categories:
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run unit tests only
npm run test:unit
# Run integration tests only
npm run test:integration
# Run E2E tests only (requires running Electron app)
npm run test:e2e
# Run compliance tests only
npm run test:compliance
# Run tests in watch mode
npm run test:watchLinting
# Run linter
npm run lint
# Fix linting issues
npm run lint:fixType Checking
npm run typecheckBuilding
# Build TypeScript
npm run build
# Development mode with hot reload
npm run dev
# Production mode
npm startProject Structure
electron-mcp-server/
├── src/
│ ├── core/
│ │ ├── errors.ts # Custom error classes
│ │ ├── errors-enhanced.ts # Enhanced error handling with classification
│ │ ├── cdp-utils.ts # CDP connection utilities with retry logic
│ │ ├── connection-health.ts # Connection health monitoring
│ │ ├── logger.ts # Pino logging setup
│ │ └── types.ts # TypeScript type definitions
│ ├── session/
│ │ ├── session-manager.ts # Session lifecycle management
│ │ └── index.ts
│ ├── tools/
│ │ ├── handlers/
│ │ │ ├── app-lifecycle.ts # App launch and CDP connection
│ │ │ ├── element-interaction.ts # Click, fill, select, navigate
│ │ │ ├── main-process.ts # Window control and main process scripts
│ │ │ ├── visual-testing.ts # Screenshots, viewport, accessibility
│ │ │ └── cdp-advanced.ts # Network, geolocation, device metrics
│ │ ├── tools.ts # Tool definitions
│ │ ├── validation.ts # Zod schemas
│ │ ├── validation-enhanced.ts # Enhanced validation schemas
│ │ └── index.ts
│ └── index.ts # Main MCP server
├── tests/
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ ├── e2e/ # End-to-end tests
│ ├── compliance/ # MCP protocol compliance tests
│ ├── utils/ # Test utilities
│ └── fixtures/ # Test fixtures
├── test-app/ # Electron test application
├── .trae/
│ └── docs/ # Phase 1 & 2 documentation
├── CHANGELOG.md # Version history
├── LICENSE # MIT License
├── package.json
├── tsconfig.json
└── vitest.config.tsEnvironment Variables
LOG_LEVEL: Logging level (default:info)NODE_ENV: Environment (default:production)
License
MIT
Available Tools
48 toolscapture_element_screenshotC
Take a screenshot of a specific element
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| selector | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It doesn't disclose whether the operation is read-only, what happens on failure, whether it requires a valid session, or any behavioral traits beyond the basic action. Only the minimal action is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded and waste-free. However, it is under-specified for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, 0% schema description coverage, and 3 parameters (2 required), the description is completely inadequate. It fails to explain parameters, return value, or any behavioral context needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any parameter. It doesn't mention the required sessionId or selector, nor the optional path parameter, leaving their semantics entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Take a screenshot) and resource (specific element), which clearly distinguishes it from sibling tools like screenshot and take_screenshot that capture the page. However, it does not explicitly differentiate from those siblings in the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 screenshot or take_screenshot. The description does not mention any context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_browser_cacheC
Clear browser cache and cookies
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but only says it clears cache and cookies. It doesn't state whether the operation affects only the session's browser, whether it requires an active session, or whether it is destructive or reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single terse sentence that is front-loaded with the verb and resource. It is efficient, though it may be under-specified rather than concise for a state-changing operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and an undocumented required sessionId parameter, the description leaves significant gaps about scope, session targeting, and effect of clearing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there is one parameter (sessionId), which the description does not mention. The description adds no meaning about the required session identifier from the schema's UUID pattern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (clear) and resource (browser cache and cookies), so the action is unambiguous. It doesn't differentiate from siblings like clear_logs, though those operate on different resources, so the distinction is largely apparent from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no indication of when clearing the cache is appropriate versus other reset or cleanup tools, nor does it mention prerequisites. There is no when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_geolocationC
Clear geolocation override
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether this reverts to real geolocation, whether it requires an active emulation, whether it is idempotent, or what the response is — all material for a mutation-style operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short and front-loaded with no filler, which is structurally fine for a simple operation. But at four words it is under-specified rather than genuinely concise — brevity here reflects missing information, not efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and an undocumented required parameter, the description should at minimum name the sessionId requirement and the reverting effect. Neither is present, so an agent lacks what it needs to call this confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter (sessionId) with 0% schema description coverage, and the description does not mention it at all. Since the schema supplies only a type/format pattern and no prose, the description fails to compensate for the coverage gap on the required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource pair ('clear' + 'geolocation override') tells an agent roughly what happens and implicitly distinguishes it from the sibling set_geolocation. However, it never states what is being cleared (the emulated override vs. the session's real geolocation), so the boundary with siblings like reset_network_conditions is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no reference to the natural alternative (set_geolocation) or related reset tools. An agent must guess the context in which clearing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_logsB
Clear all log files from the project log directory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies deletion of log files but does not state whether the operation is irreversible, whether it requires specific permissions, whether it affects active logs, or what the response looks like. This is a significant gap for a destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the action and resource with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive clear operation with no annotations and no output schema, the description is incomplete. It identifies the target directory but omits critical safety context such as irreversibility, whether a confirmation is required, and what happens to any in-use log files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description adds no parameter meaning because there are none to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Clear) and resource (log files) with scope (all, project log directory). It distinguishes from get_logs by action, but does not explicitly differentiate from other clear_* siblings like clear_browser_cache or state when to prefer one over the other.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as get_logs or clear_browser_cache. There are no prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clickC
Click on an element in the Electron app
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| selector | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic action. No mention of what happens on timeout, whether the click scrolls into view, whether it waits for actionability, or any error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence that is fully front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter interaction tool with no annotations, no output schema, and 0% schema coverage, the description is far too minimal. It should explain selector format, timeout behavior, and whether the click waits for the element to be actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description adds nothing about selector syntax, timeout units (ms vs seconds), or sessionId requirements. The description must compensate for the coverage gap but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Click) and resource (element) with scope (in the Electron app). Clearly distinguishes from siblings like fill, select, and interact_accessible_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given. Doesn't tell the agent how to choose between click, interact_accessible_node, or execute for element interaction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_sessionC
Close an Electron testing session and release resources
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It mentions resource release, but does not state whether the close is irreversible, what happens to subsequent calls on that session, or what error behavior occurs for an invalid/already-closed sessionId.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though arguably too terse to serve as a complete definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a session-termination tool with no annotations and no output schema, the description should say more about state effects, error cases, and sessionId provenance. It leaves critical invocation context to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter 'sessionId' is never mentioned in the description, not even to indicate where it comes from (e.g., list_sessions or launch_electron_app). The UUID format constraint is only conveyed by the schema's regex, which is opaque without explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Close') and resource ('Electron testing session') with an added effect ('release resources'). It is distinguishable from lifecycle siblings like launch_electron_app and connect_to_electron_cdp, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus leaving a session open, nor any mention of prerequisites or follow-up steps. Usage is only implied by the notion of cleaning up a session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_screenshotsC
Compare a screenshot with a baseline image
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| actualPath | No | ||
| baselinePath | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but only says it 'compares'. It omits the safety profile, whether it is read-only, what happens when no baseline exists, tolerance/matching behavior, and the shape of the result. For a comparison tool with no output schema this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, so it is structurally clean, but it is under-specified rather than appropriately sized for a three-parameter tool with no supporting docs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema coverage, the definition should do far more work. It gives no return-value meaning, no error behavior, and no parameter documentation, so an agent cannot call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, yet it names no parameters. It loosely implies actualPath (the 'screenshot') and baselinePath ('baseline image') but never mentions sessionId or how the three relate, leaving required params undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare) and resource (screenshot vs baseline image), enough to distinguish it from the capture-oriented siblings like take_screenshot and screenshot. However, it doesn't clarify where the 'screenshot' comes from (sessionId vs actualPath), leaving a small ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. There is no indication of when a visual comparison is appropriate versus simply calling take_screenshot, nor any prerequisites such as needing an existing baseline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_debugC
Configure debug settings including log levels and categories.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | New minimum log level | |
| categories | No | New log categories | |
| addCategories | No | Categories to add | |
| removeCategories | No | Categories to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says nothing about whether this mutates persisted state, how long the change lasts, whether it requires elevated permissions, or what it returns. The set/merge semantics of categories versus addCategories/removeCategories are also unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource front-loaded. It is not padded, though it is arguably too terse to carry the needed behavioral and usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description omits the key ambiguity: whether 'categories' replaces the current set while addCategories/removeCategories modify it, and what happens on success. It is under-specified for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented in the schema, establishing a baseline of 3. The description's mention of 'log levels and categories' aligns with the schema but adds no syntax, defaulting, or precedence detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (configure) and resource (debug settings), and enumerates the sub-fields (log levels and categories). However, it does not distinguish itself from siblings like enable_debug, disable_debug, or get_debug_status, so an agent must infer the split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternative tools. Given siblings such as enable_debug, disable_debug, and get_debug_status, the agent gets no help deciding when fine-grained configuration is appropriate versus the simpler toggle tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_to_electron_cdpC
Connect to a running Electron application via Chrome DevTools Protocol
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | localhost | |
| port | Yes | ||
| timeout | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but only restates the name. It doesn't disclose connection failure behavior, whether a session is established or reused, authentication requirements, or how the 'timeout' parameter affects blocking. A connection tool needs to state what happens when the target isn't reachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that is front-loaded with the verb and resource. No filler, though the brevity here is partly under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations, no output schema, and zero parameter documentation; the description leaves prerequisites, failure modes, and all three parameters unexplained. For a connection-establishing tool in a large sibling set, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters (host, port, timeout), so the description must compensate and does not — none of the parameters are mentioned. An agent gets no guidance on default host, valid port ranges, or timeout units/behavior beyond the raw JSON schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Connect') and resource ('running Electron application via Chrome DevTools Protocol'). The word 'running' implicitly distinguishes it from the sibling launch_electron_app, but it never names that sibling or explicitly contrasts the two. Clear purpose, no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus launch_electron_app or the session/close tools. It implies a pre-existing running app but never states the prerequisite (e.g., app must be started with a remote debugging port) or what to do if none is listening.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_debugB
Disable debug mode and stop logging.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses one behavioral trait—that logging stops—but omits whether the call errors when debug is already disabled, whether existing logs are preserved, and whether the change persists across sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the action and its effect are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-param toggle with no output schema this is the minimum viable definition, but it omits sibling routing and failure-mode behavior that an agent would need to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline of 4 applies; the schema is empty and there is nothing further to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Disable') and resource ('debug mode') with an added scope note about logging. It contrasts implicitly with sibling enable_debug, but does not explicitly name or distinguish itself from configure_debug/get_debug_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named, despite a cluster of related siblings (enable_debug, configure_debug, get_debug_status). The only hint of context is the consequence 'stop logging'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emulate_network_conditionsC
Emulate network conditions (offline, slow network, latency)
| Name | Required | Description | Default |
|---|---|---|---|
| latency | No | ||
| offline | No | ||
| sessionId | Yes | ||
| uploadThroughput | No | ||
| downloadThroughput | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether the emulation persists after the call, whether it is scoped to the given session, whether omitted parameters are reset or left unchanged, or what permissions/state are required. The parenthetical merely restates the parameter names rather than describing behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no padding, and the core purpose is front-loaded. It is arguably under-specified rather than over-long, but it wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation-style tool with zero annotation coverage and no output schema, a one-line description is inadequate. Critical context — session scoping, persistence, reset behavior, throughput units — is missing, leaving the agent unable to call this correctly beyond the most obvious case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and does not. It loosely gestures at 'offline' and 'latency' (two of five params) but says nothing about sessionId (the only required parameter), uploadThroughput, or downloadThroughput, nor their units or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Emulate network conditions') and names the main modes in parentheses, so an agent knows this throttles/degrades the connection. It does not differentiate itself from the sibling reset_network_conditions or explain the relationship between the two, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g. an active session must exist), and no mention of the sibling reset_network_conditions that would undo this. The agent must infer that this is the counterpart to the reset tool entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_debugB
Enable debug mode with granular logging for the MCP server. Logs are stored in .electron-mcp/logs directory within the project.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Minimum log level to capture | |
| logToFile | No | Enable file logging | |
| categories | No | Log categories to enable | |
| logDirectory | No | Custom log directory path | |
| logToConsole | No | Enable console logging |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses where logs are stored, which is useful behavioral context, but doesn't state whether enabling debug is reversible, its performance impact, or permission requirements. It adds some value but leaves key traits undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary action. No wasted words, though it could be slightly more structured with usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions where logs are stored but omits when to use this versus configure_debug, and does not address the effect of enabling debug. For a tool with 5 optional parameters and no annotations, more behavioral context is warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are fully documented in the schema. The description adds only that logs go to .electron-mcp/logs, which relates to the logDirectory parameter but doesn't clarify its semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: enabling debug mode with granular logging for the MCP server. This distinguishes it from siblings like disable_debug and configure_debug, though it doesn't explicitly state those relationships.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 configure_debug or get_debug_status. The agent is left to infer the context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
executeC
Execute JavaScript in the Electron app context
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. Arbitrary code execution is high-risk: the description says nothing about sandboxing, permissions, what is returned, whether the script may be async, or what happens on failure. Only the execution target is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is well-sized, though its brevity here reflects under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a code-execution tool with no annotations, no output schema, and two fully undocumented required parameters, the description is far too thin. An agent lacks the security context, return-value expectations, and session semantics needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so both required parameters (script, sessionId) are undocumented anywhere. The description never mentions that a session identifier is required, nor which session source (e.g., list_sessions) supplies it, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource are stated ('Execute JavaScript in the Electron app context'), so the basic action is clear. However, the sibling tool execute_main_process_script implies a meaningful distinction between renderer and main-process execution that this description never resolves, leaving the agent unsure which of the two to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus execute_main_process_script, nor any prerequisites such as needing an active session from list_sessions/connect_to_electron_cdp. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_main_process_scriptC
Execute JavaScript in the Electron main process context
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it says nothing about permissions required, sandboxing or security implications of main-process code execution, whether script results are returned, or error behavior. For an arbitrary-code-execution tool this is a significant disclosure gap, though the 'main process context' phrasing at least conveys the execution environment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is appropriately sized for the information conveyed. It is efficient, though brevity here overlaps with under-specification rather than careful economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-risk arbitrary-code-execution tool with no annotations, no output schema, and 0% parameter documentation, the definition is far too thin. An agent cannot know what the script should return, how failures surface, or how this differs from the sibling 'execute' tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate and does not. It implies 'script' contains JavaScript but never explains its format, return expectations, or what 'sessionId' identifies (the schema only shows a UUID pattern). Both required parameters remain semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (Execute) and resource (JavaScript in the Electron main process context), which is meaningfully more specific than the bare name. However, it does not distinguish itself from the sibling tool 'execute', which an agent would reasonably assume also runs JavaScript, leaving genuine ambiguity about which context each targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this over 'execute' or any other sibling, no stated prerequisites beyond the required session, and no warning about the elevated risk of running code in the main process. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_recording_as_testC
Export recorded steps as a Playwright test file snippet
| Name | Required | Description | Default |
|---|---|---|---|
| testName | No | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not say whether this is a safe read or a destructive/stateful operation, whether the snippet is returned inline or written to disk, whether recording must be stopped first, or what happens with an empty/invalid session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is efficient, though its brevity contributes to the gaps in other dimensions rather than being a strength of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and 0% schema description coverage, the description is insufficient. An agent knows the artifact type but not the session precondition, return channel, or side effects needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters and does not. sessionId's meaning (to select the recorded session) and testName's role (naming the generated test) are left entirely unstated beyond the schema's type/format constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Export') and resource ('recorded steps') with the output artifact ('Playwright test file snippet'). An agent can distinguish this from siblings like stop_recording, though it does not explicitly name the recording siblings it relates to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus stop_recording or start_recording, and no mention of prerequisites such as a session requiring recorded steps or a completed recording. The agent must infer the entire workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fillC
Fill an input field with text
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| timeout | No | ||
| selector | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and falls short: it does not say whether existing text is cleared or appended, whether input events are dispatched, whether the field must be visible/enabled, or what happens on timeout. Only the barest mutation semantics are conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though the brevity reflects under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and four undocumented parameters, this description is far too thin. It gives an agent no basis for handling clearing behavior, event dispatch, timeouts, or session context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, and the description adds no parameter meaning beyond implying that 'value' is the text and 'selector' identifies the field. sessionId and timeout are entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fill) and resource (input field) with the content type (text), so the core action is unambiguous. However, it does nothing to distinguish itself from siblings like click, select, or interact_accessible_node, which also perform field-level interactions. The purpose is understandable but minimally delineated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use fill versus select, click, or interact_accessible_node, nor any prerequisites such as the element being visible or focusable. The agent must infer all usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_accessible_nodeC
Find accessible nodes by role and/or name using the accessibility tree
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| role | No | ||
| exact | No | ||
| limit | No | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but says nothing about whether the operation is read-only, what the return shape is (single node vs. list), or how the default limit of 1 and exact matching affect results. Only the lookup mechanism is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action and lookup keys front-loaded and zero filler. It is efficient, though the brevity comes at the cost of the missing guidance noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and five parameters with no schema descriptions means the description should be doing far more work than it is. An agent lacks the matching semantics, result shape, and safety profile needed to call this confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, and the description only accounts for 'role' and 'name'. It explains nothing about 'exact' (matching semantics), 'limit' (result count, capped at 10, default 1), or 'sessionId', leaving the majority of parameters undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (accessible nodes), plus the mechanism (accessibility tree) and the search keys (role and/or name). It does not distinguish itself from siblings like get_accessibility_tree or get_accessibility_snapshot, so an agent cannot tell from the description alone which accessibility tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no named alternatives, despite several sibling tools operating on the same accessibility tree. The agent must infer that this is the query-by-role/name path rather than the full-tree dump.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
focus_main_windowC
Focus Electron main window
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden, yet it says nothing about side effects, required session state, or what happens if no main window is present. This is a significant gap for an interaction tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single phrase is concise but under-specified rather than efficient. It lacks front-loaded usage or parameter context, so brevity here is a deficiency, not a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and an undocumented required parameter, the description is insufficient for an agent to call this tool confidently. It does not explain session handling, return behavior, or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter sessionId has 0% schema description coverage, and the description does not mention it at all. It adds no meaning beyond the bare schema type, leaving the agent without any indication of what the parameter identifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Focus') and resource ('Electron main window'), which an agent can distinguish from siblings like minimize_main_window and maximize_main_window. However, it does not explicitly name alternatives or scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when or when not to use this tool, nor any prerequisites or alternatives. The agent is left to infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accessibility_snapshotC
Get Playwright accessibility snapshot for the current page
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| includeHidden | No |
TDQS
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 does not state whether the operation is read-only by nature, what permissions or active session state are required, how large the snapshot may be, or what the returned data looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately short for a simple read operation, though the extreme brevity contributes to the missing parameter and usage detail elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% schema description coverage, the description is too sparse. It does not explain the required sessionId, the includeHidden option, or how the accessibility snapshot relates to sibling tools like get_accessibility_tree.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with two parameters and only a type and default for includeHidden. The description does not mention sessionId or includeHidden at all, so it adds no meaning beyond the raw schema and fails to compensate for the complete lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Get) and resource (Playwright accessibility snapshot for the current page), which is clear on its own. However, it does not distinguish this tool from the sibling get_accessibility_tree or explain what a snapshot contains versus a tree, leaving sibling differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives such as get_accessibility_tree, find_accessible_node, or interact_accessible_node. The phrase 'for the current page' implies context but does not explain when this tool should be selected over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accessibility_treeC
Get accessibility tree of current page
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It doesn't disclose the return structure, whether it is a read-only operation, pagination/truncation behavior, or how it differs from the snapshot sibling. 'Get' implies read-only but nothing confirms it or explains output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that is efficient and easy to scan. It is concise but arguably too terse for the surrounding complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations, no output schema, and a sibling that overlaps in purpose. For a tool the agent must distinguish from get_accessibility_snapshot, the description is too thin to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter (sessionId) is undocumented in both the description and schema. With 1 param and required=sessionId, the description gives no hint of what the parameter is or what values are valid, so it fails to compensate for the zero coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('accessibility tree of current page'), which is clear enough on its own. However, it does not distinguish itself from the closely related sibling get_accessibility_snapshot, leaving the agent unable to tell which of the two to pick from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this rather than the near-identical get_accessibility_snapshot, nor any stated preconditions. The presence of that sibling makes the absence of routing guidance a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_console_messagesC
Capture console messages from the page
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether messages are buffered, whether capture is continuous or a one-time snapshot, whether the session must be active, or what happens to previously captured messages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that is front-loaded with the action and resource. It is appropriately sized, though barely substantive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and no parameter documentation, the description leaves key questions unanswered: is the capture a snapshot or streaming, does it require an active session, and in what form are messages returned. Too thin for a zero-annotation retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single sessionId parameter is documented only by its type and uuid pattern. The description does not explain what the session represents or its relationship to console capture, though with only one parameter the gap is limited.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: capturing console messages from the page. It is distinguishable from siblings like get_logs or get_page_info, though it doesn't explicitly contrast with them. Clear enough that an agent knows what it retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance and no mention of alternatives such as get_logs or the debug status tools. An agent must infer the appropriate context entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_debug_statusB
Get current debug mode status and configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The word 'current' and the fact that it is a zero-argument getter imply a side-effect-free snapshot, which is useful context, but it never explicitly states that no state is mutated or what configuration fields are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the resource front-loaded. It is efficient but so terse that it barely covers the minimum needed for the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place an agent could learn what 'status and configuration' actually contains. As written it leaves the return shape unspecified, which is a real gap for a getter with no schema and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No syntax, defaults, or filtering options are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (debug mode status and configuration), which clearly separates it from the write-side siblings enable_debug, disable_debug, and configure_debug. It does not explicitly name a sibling, so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as configure_debug or get_logs. An agent must infer that this is the read path of the debug family purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_logsB
Retrieve and filter log entries from the project log directory.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Filter by minimum log level | |
| limit | No | Maximum number of log entries to retrieve | |
| since | No | Filter entries after this ISO timestamp | |
| until | No | Filter entries before this ISO timestamp | |
| search | No | Search text in message field | |
| sessionId | No | Filter by session ID | |
| categories | No | Filter by categories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It confirms this is a read/retrieval operation on a project log directory, but says nothing about pagination, ordering, default behavior with zero filters, or volume limits under the limit parameter. Adequate but thin for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource front-loaded and no filler. Efficient, though it is arguably too terse to be a fully useful definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter read tool with no annotations and no output schema, the description leaves gaps: default result ordering, behavior when all filters are omitted, and result set size are unstated. The rich schema partially compensates, but the description is only minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters, including enums and timestamps. The description adds no syntax, format, or interaction details (e.g., level-as-minimum, since/until interaction) beyond what the schema states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve/filter) and resource (log entries from the project log directory), clearly distinguishing it from siblings like clear_logs. No sibling is explicitly named, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'retrieve and filter' and the schema params, but the description gives no explicit when-to-use context, no exclusions, and never mentions the nearby alternative clear_logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_main_window_infoC
Get information about the Electron main window
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get information' implies a read-only operation, but the description does not disclose side effects, required permissions, safety profile, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is structurally clean, though its brevity contributes little beyond the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should explain what information is returned and how sessionId matters. It states only the general purpose, leaving key invocation and return details absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the only parameter (sessionId) is not mentioned in the description. The description adds no meaning beyond the schema's type definition, leaving the parameter's role and context unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get information about the Electron main window'. It clearly distinguishes itself from sibling action tools like focus_main_window, minimize_main_window, and maximize_main_window, though it does not specify what information is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_page_info or get_protocol_info. Usage is only implied by the resource name, with no explicit conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_infoC
Get information about the current page (URL, title, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only says it gets information. It does not disclose that this is a read-only operation, whether it requires an active browser session, what happens if the session is invalid, or what the return format looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant filler and is front-loaded with the core action. Its brevity is appropriate, though it is under-specified rather than maximally useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and an undocumented required parameter, the description is too thin. It should clarify session requirements and at least summarize the kind of page information returned, even if an output schema is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention the single required sessionId parameter. While the parameter name and UUID format are somewhat self-explanatory, the description adds no meaning beyond the schema and does not compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Get information about the current page,' and gives examples of the information (URL, title, etc.). It does not differentiate this tool from similar siblings such as get_navigation_history or get_main_window_info, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The phrase 'current page' implies context but does not tell an agent when this is preferable to related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_metricsC
Get performance metrics from the page
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing: it doesn't state whether the call is read-only, whether a live session/page is required, what happens for a stale or invalid session, or what the returned metrics look like. Only the bare 'from the page' hint about scope is added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though brevity here reflects under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and an undocumented required parameter, the description should say more about input expectations and return content. As written, an agent cannot determine what metrics are returned or how to supply a valid session.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter sessionId is a UUID with no textual explanation in either the schema or the description. The description adds no meaning about what sessionId is, where to obtain it, or what happens if it's missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb ('Get') and a resource ('performance metrics') scoped to 'the page', which is enough to distinguish it from unrelated siblings like click or navigate. However, 'performance metrics' is broad and unspecified, and it doesn't differentiate from adjacent read tools such as get_page_info, get_logs, or get_console_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like get_page_info or get_console_messages, no prerequisites (e.g. a page must be loaded), and no exclusions. The agent must infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_protocol_infoC
Get CDP protocol information including browser version and capabilities
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only lookup but says nothing about whether the session must be active, whether it errors on invalid sessionId, or whether the result is cached/static — meaningful gaps for a session-scoped tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource front-loaded and no filler. It is efficient, though extremely terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description is minimally adequate: it says what comes back conceptually. However, the unexplained sessionId requirement and absence of any session/prerequisite context leave it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter (sessionId, a UUID) is never mentioned in the description. The agent gets no guidance on where the sessionId comes from or what forms are valid, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('CDP protocol information') with the payload enumerated (browser version and capabilities). It is distinguishable from siblings like get_page_info or get_main_window_info, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this tool, what prerequisites apply, or which sibling to prefer for related information (e.g. get_page_info, get_user_agent). The agent must infer the trigger condition entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_textC
Get the text content of an element
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| selector | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state whether the selector must already exist, whether it waits, what is returned for multiple matches, or error behavior on missing elements, so behavioral disclosure is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler. It is appropriately sized for the heavily truncated information provided, though it is too terse to be useful rather than verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A three-parameter tool with no annotations, no output schema, and 0% schema description coverage requires the description to explain selector format, timeout semantics, and whether the element must exist. It does none of this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 3 parameters (sessionId, selector, timeout). The description mentions 'element' but never explains what selector means or what timeout controls, giving no compensation for the documented gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource (get text content of an element), which is understandable in isolation. However, it does not distinguish itself from related siblings like get_accessibility_tree or find_accessible_node, and 'content' vs 'text' scope is left ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as get_accessibility_tree or get_page_info. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_agentC
Get current user agent string
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
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 only states what it retrieves, but does not disclose read-only nature, side effects, authentication needs, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that is front-loaded, but it is under-specified for a tool with a required parameter. It does not fully earn its place given the missing context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter, no annotations, and no output schema, the description is incomplete. It omits the sessionId parameter and any information about the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention the required sessionId parameter. The agent must infer from the schema alone that a sessionId is required, and the description adds no semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Get' and resource 'user agent string', so the tool's purpose is clear. However, it does not differentiate from siblings like get_page_info or get_protocol_info, so it cannot be a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are provided. It implies usage when a user agent string is needed, but there are no explicit conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewport_sizeC
Get current viewport size
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavior burden. 'Get' implies a read, but the description doesn't confirm read-only safety, describe the return format, or state whether this requires an active session. For a zero-annotation tool this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is appropriately terse for an accessor tool, though brevity here borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% param coverage, the definition omits what an agent needs: the sessionId requirement, the return shape (width/height), and confirmation this is a safe read. One short sentence is insufficient for the tool's context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single sessionId parameter is undocumented in the description. The description says nothing about which session is queried or what sessionId must be, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: 'Get current viewport size'. The word 'current' distinguishes it from a hypothetical set operation. Paired with the sibling set_viewport_size, the read/write split is inferable, though the description does not explicitly name the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or exclusions. There is no mention of the set_viewport_size sibling or when an agent should read vs write viewport dimensions. Usage is only implied by the verb 'Get'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interact_accessible_nodeC
Interact with an accessible node by role and name (click or fill)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| role | Yes | ||
| value | No | ||
| action | Yes | ||
| sessionId | Yes |
TDQS
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 implies a state-changing interaction (click/fill) but says nothing about permission needs, what happens on a failed match, whether value is ignored for click, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is terse to the point of under-specification, but nothing filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, 4-required mutation tool with no annotations, no output schema, and 0% param coverage, a one-line description is inadequate. Critical details about sessionId, value semantics, and interaction side effects are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate. It clarifies role and name as accessibility attributes and echoes the action values already exposed in the schema enum, but leaves value and sessionId entirely unexplained and does not state that value only applies to fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource (interact with an accessible node) and identifies the targeting key (role and name) plus the two supported actions (click, fill). It is clear what the tool does, but it never distinguishes itself from sibling tools such as click, fill, or find_accessible_node that appear to operate on the same page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the many look-alike siblings (click, fill, select, find_accessible_node, get_accessibility_tree). The description mentions click/fill as the actions but gives no condition for choosing them or this tool over the selector-based alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_electron_appC
Launch an Electron application for testing
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| slowMo | No | ||
| headless | No | ||
| executablePath | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about whether launching blocks, whether it opens a window, how the session is identified afterward, or how it interacts with close_session. The only disclosure is the implied testing context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; it is efficiently sized, though its brevity is the result of omission rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and zero parameter documentation, the definition leaves the agent without the information needed to launch reliably or to know what state results. The one sentence is insufficient for a 4-parameter launch tool with many related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, and the description adds no meaning for executablePath, args, slowMo, or headless. An agent must guess at formats and semantics of the least obvious parameters (slowMo, headless).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('launch an Electron application') with a use-case qualifier ('for testing'), which separates it from runtime-session siblings like connect_to_electron_cdp or execute. It does not, however, explain the distinction from those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for testing' hints at context but there is no statement of when to call this versus connect_to_electron_cdp, execute_main_process_script, or list_sessions, and no prerequisites (e.g. whether the app must be built, whether a session must be established first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsB
List all active Electron testing sessions
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden; it implies a read-only operation by using 'List' and specifying 'active' sessions but does not state whether it requires an active connection, what the return format is, or whether it can be called before any session exists. For a zero-parameter read tool, this is adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a zero-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of a zero-parameter list tool and the absence of an output schema, the description is minimally sufficient but does not explain what constitutes an 'active' session, the return shape, or whether it requires an existing connection. More context would help the agent use it correctly alongside session-management siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline is 4. The schema is empty and the description correctly does not introduce any parameter details, keeping it aligned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (List) and resource (active Electron testing sessions), which distinguishes it from siblings like close_session and get_page_info. However, it does not explicitly differentiate itself from connect_to_electron_cdp or launch_electron_app, which also relate to sessions, so it is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_page_info or get_main_window_info, nor any exclusions or conditions. The agent must infer that this lists sessions rather than acting on them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maximize_main_windowC
Maximize Electron main window
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
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, and it discloses nothing. It does not say whether the operation is idempotent, what happens if the window is already maximized, whether it errors on a disconnected session, or how it interacts with other window-state tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no waste, but the brevity reflects under-specification rather than efficiency. It earns its place only as a restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and an undocumented required parameter, the definition leaves the agent guessing about error behavior and preconditions for a state-mutating window operation. For a tool this simple a couple of extra clauses would have made it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required sessionId parameter with 0% schema description coverage, and the description adds no meaning about which session it refers to or whether the session must be live. The parameter is inferable from its name but is entirely undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Maximize Electron main window'), and the target being the Electron main window distinguishes it from viewport/browser-window operations. However, it is essentially a restatement of the tool name and does nothing to differentiate it from the closely related focus_main_window, minimize_main_window, and get_main_window_info siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to maximize versus focus, minimize, or restore, and no mention of prerequisites such as the session needing to be connected and active. The agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
minimize_main_windowC
Minimize Electron main window
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses nothing beyond the action name: no idempotency, reversibility, required connection state, or what happens to the session. For a mutation tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that is front-loaded and free of waste. It is arguably under-specified rather than overwritten, but structurally it is fine.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter window action the description is minimally sufficient, but it omits the only parameter's meaning and any behavioral context, leaving the agent to rely entirely on the name and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter sessionId has 0% schema description coverage, and the description never mentions it or explains which session's window is affected. The schema's uuid format hints at the type but adds no semantic meaning beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Minimize Electron main window'), which is unambiguous and distinct from the sibling cluster of maximize_main_window, focus_main_window, and get_main_window_info. It does not, however, explicitly route the agent away from those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus focus_main_window or maximize_main_window, nor any stated precondition (e.g., window must exist, session must be connected). The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_network_conditionsC
Reset network conditions to default
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It doesn't say what 'default' resolves to, whether it requires an active emulation session, whether it errors when no conditions are set, or whether the change is scoped to the session only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action front-loaded. It is efficient, though its brevity borders on under-specification rather than optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a session-scoped mutation with no annotations, no output schema, and an undocumented required parameter, the description leaves key facts unstated: what default state is restored, and what happens if no emulation is active.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% — sessionId has a format and pattern but no description of what a session is or how to obtain one. The description adds nothing about parameters, leaving the single required param semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Reset') and resource ('network conditions') with a clear end state ('to default'). It implicitly distinguishes itself from the sibling emulate_network_conditions, but never names that counterpart to make the pairing explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The natural trigger — undoing a prior emulate_network_conditions call on the same session — is left entirely to inference, and no prerequisites or conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotC
Take a screenshot of current page or an element
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| fullPage | No | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It doesn't disclose whether the screenshot is saved to disk or returned as data, what format it uses, whether it requires a session, or any behavioral traits beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the main action. It is appropriately sized, though it could be more specific without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 3-parameter tool with no annotations, no output schema, and 0% parameter coverage, the description is grossly inadequate. It fails to explain key parameters, return behavior, or how to differentiate from siblings, making it incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and no annotations, the description must compensate for three undocumented parameters. It only vaguely alludes to 'page or element' but doesn't explain sessionId, path, or fullPage, leaving the agent unable to use the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Take a screenshot of current page or an element'), clearly identifying the operation. However, it does not distinguish itself from siblings like take_screenshot and capture_element_screenshot, which overlap significantly in function, leaving the agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 take_screenshot or capture_element_screenshot. The description mentions 'current page or an element' but doesn't explain how to select an element or when each mode applies, leaving routing ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
selectC
Select an option from a dropdown
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| timeout | No | ||
| selector | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses nothing about behavior: whether it fires change events, how it handles custom (non-native) dropdowns, whether it waits for options to appear, or what happens on failure. For a browser-interaction mutation tool this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is lean and front-loaded with the action, which is good structure. But at this length the brevity shades into under-specification rather than efficiency, since nothing is said about the required parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, zero schema descriptions, no annotations, and no output schema, the description should be doing far more work. An agent cannot determine valid selector syntax, value-matching rules, timeout units, or the expected result from this text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the four parameters (value, timeout, selector, sessionId) are undocumented everywhere. The description mentions 'an option' and 'a dropdown' loosely mapping to value and selector, but says nothing about timeout semantics or sessionId, and adds no format or matching rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and target ('Select an option from a dropdown'), so an agent knows this performs a selection rather than a click or fill. However, it does not differentiate itself from closely related siblings such as fill, click, or interact_accessible_node, leaving overlap ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of fill (for text inputs) or click (for toggles), nor any mention of prerequisites such as the element needing to exist or be visible. The agent must infer the correct tool from the one-line purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_device_metricsC
Emulate device metrics (viewport size, device scale factor, mobile)
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| mobile | No | ||
| sessionId | Yes | ||
| deviceScaleFactor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether the emulation applies immediately, whether it persists for the session, how it interacts with previously set metrics, or that width/height are mandatory. "Emulate" implies a transient, non-destructive override but that is left to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the core resource is stated first and the parenthetical efficiently lists the covered properties.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no annotations, no output schema, and 0% schema coverage, the description is too thin. It leaves the session scope, default handling, and the distinction from set_viewport_size entirely unaddressed, which an agent needs before invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does map its concepts onto the parameters it names (viewport size→width/height, device scale factor→deviceScaleFactor, mobile→mobile), which is genuine added meaning, but it omits units, the meaning of scale factor values, and the defaults declared in the schema (mobile=false, deviceScaleFactor=1), and says nothing about sessionId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ("Emulate") and resource ("device metrics") and enumerates the components it governs (viewport size, device scale factor, mobile). However, it never distinguishes itself from the sibling set_viewport_size, whose name suggests overlapping viewport control, so an agent cannot tell the two apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative set_viewport_size or how it relates. The agent must infer all routing decisions from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_geolocationC
Set or override geolocation for the page
| Name | Required | Description | Default |
|---|---|---|---|
| accuracy | No | ||
| latitude | Yes | ||
| longitude | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing beyond the basic action. It does not say whether the override persists across navigations, whether it applies only to the current session, whether it needs a CDP/permission grant, or that it mutates browser state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that front-loads the action and is free of waste. It is arguably too terse rather than bloated, but structurally it is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browser-state-mutating tool with no annotations, no output schema, and zero parameter documentation, the definition is under-specified. An agent cannot tell the effect scope, persistence, or how to revert it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 4 parameters, so the description must compensate and it does not. Latitude/longitude are self-evident by name, but the optional 'accuracy' parameter (meters, 0-100) and the required sessionId are never explained in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Set or override') and resource ('geolocation for the page'), so it is immediately clear what the tool does. It does not, however, distinguish itself from the sibling clear_geolocation or explain how it relates to set_device_metrics/emulate_network_conditions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative clear_geolocation for undoing the override. The agent must infer all routing decisions from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewport_sizeD
Set the viewport size
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| sessionId | Yes |
TDQS
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 and fails to do so. It does not say whether the change is session-scoped or persistent, whether it affects screenshots, or what happens on invalid dimensions. It at least does not contradict anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word sentence is short but is under-specification rather than concision; there is nothing to front-load because there is no substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-required-parameter mutation tool with no annotations, no output schema, and no parameter documentation, the description is wholly inadequate and leaves an agent unable to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for all three required parameters (sessionId, width, height), and the description supplies no meaning, units, ranges, or format guidance. The bare schema gives types but nothing about pixel units or session identity semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Set the viewport size' is essentially a restatement of the tool name set_viewport_size, which the rubric classifies as tautology. It conveys the verb and resource but offers zero differentiation from siblings such as get_viewport_size or set_device_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like set_device_metrics, emulate_network_conditions, or get_viewport_size. An agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_recordingC
Start recording user interactions for the given session
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not state what 'user interactions' are captured, whether the call is idempotent, what happens if recording is already active, or any permission/session-state requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single lean sentence with the action front-loaded and no padding. It is appropriately sized, though its brevity is partly the source of the missing detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a session-state mutation with no annotations and no output schema, the description is too thin: it omits lifecycle context (pairing with stop_recording/export_recording_as_test) and any behavioral or error expectations an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but there is only one parameter and its name (sessionId) plus the phrase 'the given session' make its meaning self-evident. The description adds no format detail (UUID) beyond the schema, so it neither compensates nor misleads.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (start) and resource (recording of user interactions) scoped to a session, which is enough to separate it from siblings like stop_recording and export_recording_as_test. It does not name those siblings, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives. It never mentions that recording must later be stopped (stop_recording) or exported (export_recording_as_test), nor whether the session must already exist, leaving the agent to infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_recordingC
Stop recording interactions and return the recorded steps
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
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 basic effect (stop recording) and output (return recorded steps), but does not say whether the session is terminated, whether recording data is preserved, what permissions are required, or what happens if no recording is active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately terse for a simple tool, though the extreme brevity leaves important behavior and usage details unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There are no annotations, no output schema, and no schema descriptions, so the description must carry more context. It does not explain the required sessionId, prerequisites, error conditions, or the format of the returned recorded steps, leaving it materially incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required sessionId parameter, and the description does not mention or explain that parameter at all. The description therefore adds no semantic meaning beyond the raw schema field name and UUID format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (Stop) and resource (recording interactions) and specifies that it returns the recorded steps. It implicitly distinguishes itself from start_recording and export_recording_as_test, but it never names or contrasts those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like export_recording_as_test, nor any prerequisites such as requiring an active recording session. The action implies it is called after start_recording, but that is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_screenshotC
Take a screenshot of current page
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| fullPage | No | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose what the tool returns (base64 data, a file path, a buffer), whether a file is written by default, what happens if 'path' is omitted, or whether the operation is read-only/safe. For a capture tool with zero annotation coverage this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of filler, which is good. But its brevity reflects under-specification rather than efficiency: no parameter, return, or behavioral detail is included, so the terseness costs the agent useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and 0% parameter documentation, the description should do far more work than it does. It omits return format, file-writing behavior, and the meaning of fullPage and path, leaving the agent unable to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, and the description explains none of them. It never mentions sessionId (required), fullPage (which changes capture scope), or path (which presumably controls file output). Nothing compensates for the empty schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ('take a screenshot of current page'), so the basic purpose is legible. However, it does not distinguish itself from two very close siblings, 'screenshot' and 'capture_element_screenshot', which likely overlap in function. An agent cannot tell from this text why it would choose take_screenshot over screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g. requiring an active session), and no routing to alternatives. The phrase 'current page' implies the session context but does not state when this tool is preferred over the near-identical 'screenshot' sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_selectorC
Wait for an element to appear on the page
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | ||
| timeout | No | ||
| selector | Yes | ||
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It states the intent but omits critical traits: whether the call blocks, what the default state is, what happens on timeout (error vs. silent return), and whether it fails when the element is already present or absent forever.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with zero waste, which is structurally clean. However, brevity here comes at the cost of under-specification rather than being earned conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description is far too thin. An agent cannot determine timeout behavior, state semantics, or failure modes from this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 4 parameters, so the description must compensate and does not mention any parameter. The 'state' enum is especially ambiguous: values 'detached' and 'hidden' contradict the plain reading of 'appear on the page', and no explanation is offered for 'timeout' semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Wait for an element to appear on the page'), which is unambiguous about the operation. It does not differentiate from siblings or clarify scope (e.g., within which session/page), but no other sibling performs a wait, so the risk of misselection is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as polling get_text or simply clicking. Nor does it mention typical contexts (after navigation, after a click that triggers rendering) or what to do when the wait is unnecessary because the element already exists.
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.
48 tool updates
v1.0.3- First observed
capture_element_screenshot - First observed
clear_browser_cache - First observed
clear_geolocation - First observed
clear_logs - First observed
click - First observed
close_session - First observed
compare_screenshots - First observed
configure_debug - First observed
connect_to_electron_cdp - First observed
disable_debug - First observed
emulate_network_conditions - First observed
enable_debug - First observed
execute - First observed
execute_main_process_script - First observed
export_recording_as_test - First observed
fill - First observed
find_accessible_node - First observed
focus_main_window - First observed
get_accessibility_snapshot - First observed
get_accessibility_tree - First observed
get_console_messages - First observed
get_debug_status - First observed
get_logs - First observed
get_main_window_info - First observed
get_navigation_history - First observed
get_page_info - First observed
get_performance_metrics - First observed
get_protocol_info - First observed
get_text - First observed
get_user_agent - First observed
get_viewport_size - First observed
interact_accessible_node - First observed
launch_electron_app - First observed
list_sessions - First observed
maximize_main_window - First observed
minimize_main_window - First observed
navigate - First observed
reset_network_conditions - First observed
restore_navigation_history - First observed
screenshot - First observed
select - First observed
set_device_metrics - First observed
set_geolocation - First observed
set_viewport_size - First observed
start_recording - First observed
stop_recording - First observed
take_screenshot - First observed
wait_for_selector
TDQS
Scored across 48 tools
Several tools have overlapping purposes: screenshot and take_screenshot both capture the current page, get_accessibility_tree and get_accessibility_snapshot both retrieve accessibility data, and interact_accessible_node overlaps with click/fill/select. This creates multiple unclear boundaries that could easily cause misselection.
Most names use snake_case and are readable, but the conventions are mixed: some are verb_noun (take_screenshot, capture_element_screenshot), some are bare nouns or adjectives (screenshot), and some are simple verbs without objects (execute, click). This is not chaotic but is inconsistent enough to be notable.
48 tools is very heavy for an Electron testing MCP server, exceeding the 25-tool threshold where count becomes a problem. Many tools are duplicates or near-duplicates (e.g., screenshot variants, accessibility variants), indicating the surface is over-expanded rather than tightly scoped.
The server covers a wide lifecycle: launching/connecting sessions, page interaction, screenshots, accessibility, network/geolocation emulation, recording, navigation, performance, and debug logging. Some minor gaps remain, such as keyboard actions, drag-and-drop, or built-in assertions, but core Electron testing workflows are well represented.
Maintenance
Related MCP Connectors
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Approved test intent, reviewed Playwright automation and run evidence, inside your editor.
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Browser-based QA for AI-built software. Test pages with real browsers via agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceDrive Electron apps from AI agents via MCP - click, type, drag, screenshot, eval JS, and more.3919 npm3MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI-powered automation, debugging, and observability of Electron applications through Chrome DevTools Protocol integration, providing real-time UI interaction and inspection capabilities.55 npm23MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI coding agents to visually interact with frontend apps by taking screenshots, clicking elements, reading console logs, and performing visual diffs.4 npm3MIT
- AlicenseCqualityDmaintenanceEnables AI models to test and interact with Electron applications using Playwright, supporting CDP connection and app launch modes.2816 npmMIT