Zypin MCP
The Zypin MCP server provides essential browser automation capabilities using Playwright, allowing clients to control a browser instance through 16 core tools:
Navigation: Navigate to URLs (navigate), go back/forward in browser history (go_back, go_forward), and reload pages (reload)
Interaction: Click elements (click), type text (type), select dropdown options (select), and fill multiple form fields simultaneously (fill_form)
Information Retrieval: Get page snapshots (snapshot), take screenshots (screenshot), extract text content (get_text), current URL (get_url), and page title (get_title)
Utilities: Wait for elements to appear (wait_for), execute JavaScript code (evaluate), and close the browser session (close)
Enables browser automation using Firefox through Playwright, allowing navigation, form interaction, element manipulation, and screenshot capture for web scraping and testing workflows
Click on "Install 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., "@Zypin MCPtake a screenshot of the homepage and save it as homepage.png"
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.
Zypin MCP
A generic MCP (Model Context Protocol) server for testing automation and tool integration. This server provides essential automation capabilities with a focus on simplicity and reliability.
Features
Simple Setup: Minimal configuration and dependencies
Essential Tools: Core automation functionality
Fast: Lightweight implementation with minimal overhead
Reliable: Focused on the most commonly used features
Project Structure
zypin-mcp/
├── package.json # Project configuration and dependencies
├── index.js # Main CLI entry point and MCP server
├── browser.js # Simple browser wrapper using Playwright
├── tools.js # MCP tools implementation (16 tools)
├── test.js # Basic functionality tests
├── .gitignore # Git ignore rules
├── README.md # This documentation
└── node_modules/ # Dependencies (3 packages)File Descriptions
index.js: Main entry point that sets up the MCP server, handles CLI arguments, and manages the browser lifecyclebrowser.js: Simple wrapper around Playwright that provides essential automation methodstools.js: Defines all 16 MCP tools with their schemas and handlerstest.js: Basic test suite to verify core functionality.gitignore: Minimal git ignore rules for essential exclusions
Architecture
The project follows a simple, modular architecture:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP Client │ │ index.js │ │ browser.js │
│ (VS Code, │◄──►│ (MCP Server) │◄──►│ (Playwright) │
│ Cursor, etc.) │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ tools.js │
│ (16 MCP Tools)│
└─────────────────┘Component Interactions
MCP Client sends requests to the server via STDIO transport
index.js receives MCP protocol messages and routes them to appropriate handlers
tools.js defines the available tools and their schemas
browser.js executes the actual automation commands
Key Design Principles
Single Responsibility: Each file has a clear, focused purpose
Minimal Dependencies: Only 3 essential packages
Command Line Only: Simple CLI options, no config files
Essential Tools Only: 16 tools covering 80% of use cases
Error Handling: Clear error messages and graceful failures
Quick Start
Installation
Option 1: Standalone Installation
npm install https://github.com/zypin-testing/zypin-mcpOption 2: Integrated with Zypin Core (Recommended)
npm install -g https://github.com/zypin-testing/zypin-coreBasic Usage
Standalone Usage
Add to your MCP client configuration:
{
"mcpServers": {
"zypin-browser": {
"command": "npx",
"args": ["https://github.com/zypin-testing/zypin-mcp"]
}
}
}Integrated Usage (Zypin Core)
# Start MCP server through Zypin CLI
zypin mcp
# With options
zypin mcp --browser firefox --headedBenefits of Zypin Core Integration:
✅ Unified CLI interface
✅ Automatic updates with
zypin update✅ Integrated with testing workflow
✅ Consistent command structure
Command Line Options
Standalone Usage
# Basic usage
npx zypin-mcp
# With options
npx zypin-mcp --browser firefox --headed --width 1920 --height 1080Integrated Usage (Zypin Core)
# Basic usage
zypin mcp
# With options
zypin mcp --browser firefox --headed --width 1920 --height 1080Available Options:
--browser <browser>: Browser to use (chromium, firefox, webkit) - default: chromium--headless: Run in headless mode (default)--headed: Run in headed mode (overrides headless)--width <width>: Viewport width - default: 1280--height <height>: Viewport height - default: 720--timeout <timeout>: Default timeout in milliseconds - default: 30000
Default Settings:
Browser: chromium
Mode: headless
Viewport: 1280x720
Timeout: 30000ms
Available Tools
Navigation
navigate(url)- Go to a URLgo_back()- Go back to previous pagego_forward()- Go forward to next pagereload()- Reload current page
Interaction
click(selector)- Click an elementtype(selector, text)- Type text into input fieldselect(selector, value)- Select option from dropdownfill_form(fields)- Fill multiple form fields
Information
snapshot()- Get page snapshot with interactive elementsscreenshot(filename?)- Take screenshotget_text(selector)- Get text from elementget_url()- Get current URLget_title()- Get page title
Utilities
wait_for(selector, timeout?)- Wait for element to appearevaluate(script)- Run JavaScript on pageclose()- Close browser
Integration with Zypin Core
Zypin MCP is now integrated into the Zypin Core framework, providing a unified testing and automation experience.
Complete Testing Workflow
# 1. Create a test project
zypin create-project my-tests --template selenium/basic-webdriver
cd my-tests
npm install
# 2. Start testing services
zypin start --packages selenium
# 3. Run traditional tests
zypin run --input test.js
# 4. Start MCP server for testing automation
zypin mcp --browser chromium --headed
# 5. Update everything
zypin updateMCP Client Configuration
When using Zypin Core integration, configure your MCP client to use the integrated command:
{
"mcpServers": {
"zypin-browser": {
"command": "zypin",
"args": ["mcp", "--browser", "chromium"]
}
}
}Benefits of Integration
Unified Interface: All testing tools accessible through one CLI
Automatic Updates: MCP server updates with
zypin updateConsistent Workflow: Same command patterns across all tools
Integrated Monitoring: Health checks and process management
Template Support: MCP projects can be created from templates
Examples
Basic Navigation
// Navigate to a website
await navigate({ url: "https://example.com" });
// Take a screenshot
await screenshot({ filename: "homepage.png" });
// Get page information
const info = await snapshot();
console.log(info.title, info.url);Form Interaction
// Fill a login form
await fill_form({
"#username": "myuser",
"#password": "mypass"
});
// Click submit button
await click({ selector: "#login-button" });
// Wait for redirect
await wait_for({ selector: ".dashboard" });Element Interaction
// Click a link
await click({ selector: "a[href='/products']" });
// Type in search box
await type({
selector: "#search-input",
text: "laptop"
});
// Select from dropdown
await select({
selector: "#category",
value: "electronics"
});Comparison with Full Playwright MCP
Feature | Zypin MCP | Full Playwright MCP |
Bundle Size | ~10MB | ~50MB |
Dependencies | 3 | 15+ |
Configuration | CLI only | 50+ options |
Tools | 15 essential | 30+ advanced |
Setup Time | 2 minutes | 10+ minutes |
Use Cases | 80% of scenarios | 100% of scenarios |
Requirements
Node.js 18 or newer
MCP-compatible client (VS Code, Cursor, Claude Desktop, etc.)
License
MIT
Development
Running Tests
# Run basic functionality tests
node test.js
# Test MCP server startup
npx https://github.com/zypin-testing/zypin-mcp --helpAdding New Tools
To add a new tool:
Add the tool definition to
tools.js:
{
name: 'new_tool',
description: 'Description of the new tool',
inputSchema: {
type: 'object',
properties: {
param: { type: 'string', description: 'Parameter description' }
},
required: ['param']
},
handler: async ({ param }) => {
// Tool implementation
return { success: true, message: 'Tool executed' };
}
}Add corresponding method to
browser.jsif neededUpdate this README with the new tool documentation
Project Metrics
Lines of Code: ~500 lines total
Files: 6 core files
Dependencies: 3 packages
Bundle Size: ~10MB
Startup Time: < 2 seconds
Contributing
This is a simplified version focused on essential functionality. For advanced features, consider using the full Playwright MCP server.
Guidelines
Keep it simple - avoid adding complexity unless absolutely necessary
Focus on the 80% use case - don't add features for edge cases
Maintain the single-file architecture for each component
Test any changes with the included test suite
Troubleshooting
Common Issues
Browser not found error:
# Install Playwright browsers
npx playwright install chromiumMCP client connection issues:
Ensure the server starts without errors:
npx https://github.com/zypin-testing/zypin-mcp --helpCheck that your MCP client configuration is correct
Verify the server is running in the correct directory
Tool execution errors:
Check that selectors are valid CSS selectors
Ensure elements exist on the page before interacting
Use
wait_fortool to wait for elements to appear
Command line issues:
Check that browser type is one of:
chromium,firefox,webkitEnsure viewport dimensions are positive numbers
Verify command line arguments are valid
Debug Mode
Run with debug output:
# See server startup messages
npx https://github.com/zypin-testing/zypin-mcp 2>&1 | tee server.logGetting Help
Check the MCP documentation
Review the Playwright documentation
Test with the included
test.jsfile
Available Tools
16 toolsclickC
Click an element on the page
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element to click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Click an element' implies a user interaction that may trigger navigation or state changes, but it doesn't describe what happens after clicking (e.g., page reload, new window), error conditions, or performance considerations. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and target, making it immediately scannable and appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success/failure, new page state), error handling, or behavioral nuances like waiting for elements to be clickable. Given the complexity of web interaction, more context is needed.
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%, with the single parameter 'selector' clearly documented as 'CSS selector for the element to click'. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Click an element on the page' clearly states the action (click) and target (element on page), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'select' or 'type' which also interact with page elements, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'select' or 'type' from the sibling list. It doesn't mention prerequisites (e.g., needing an element to be clickable) or exclusions, leaving the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
closeB
Close the browser
| 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 of behavioral disclosure. 'Close the browser' implies a destructive action that terminates the browser session, but it doesn't specify whether this is reversible, what happens to open tabs/data, or if it requires confirmation. For a potentially destructive tool with zero annotation coverage, this is a significant gap in transparency.
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 ('Close the browser') with zero waste. It's front-loaded and directly communicates the core action without unnecessary elaboration. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally complete. It states what the tool does, but for a destructive action like closing a browser, more context on implications (e.g., session loss, irreversibility) would improve completeness. The lack of output schema isn't an issue here, as the action likely has no 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?
The tool has 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics, so a baseline of 4 is appropriate. No additional value is required or possible beyond stating the tool's purpose.
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 'Close the browser' clearly states the action (close) and target resource (browser). It's specific and unambiguous, though it doesn't differentiate from sibling tools since no other tools perform browser closure. It avoids tautology by not just repeating the tool name 'close'.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., after completing tasks), consequences (e.g., losing session state), or when to avoid it (e.g., during active operations). With sibling tools like 'navigate' and 'get_url', some context on usage timing would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluateC
Run JavaScript code on the page
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript code to execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Run JavaScript code' implies execution capability but doesn't disclose critical behavioral traits: whether it runs in page context, returns results, handles errors, has security restrictions, affects page state, or requires specific permissions. This is inadequate for a tool that executes arbitrary code.
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 with zero wasted words. It's appropriately sized for a tool with one parameter and gets straight to the point without unnecessary elaboration.
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 complexity of executing JavaScript code on a page (potentially destructive, security-sensitive) with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after execution, whether results are returned, error handling, or safety considerations - critical gaps for this type of 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 100% with the single parameter 'script' documented as 'JavaScript code to execute'. The description adds no additional parameter semantics beyond what the schema provides, so baseline 3 is appropriate when the schema does the heavy lifting.
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 'Run JavaScript code on the page' clearly states the action (run) and target (JavaScript code on page). It's specific enough to understand the basic function, though it doesn't explicitly differentiate from sibling tools like 'get_text' or 'select' which might also involve page interaction.
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 provided about when to use this tool versus alternatives. With siblings like 'get_text', 'click', and 'type', there's no indication whether this is for complex page manipulation, debugging, or automation tasks that other tools can't handle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_formC
Fill multiple form fields at once
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Object with selector as key and value as text to fill |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Fill multiple form fields at once' implies a write/mutation operation, but doesn't disclose important behavioral traits like whether this requires the form to be in a particular state, what happens if fields don't exist, whether it triggers form submission, or any error handling. The description is too minimal for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just 6 words, with zero wasted language. Every word contributes to understanding the tool's purpose, making it front-loaded and efficient despite its brevity.
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 and no output schema, the description is inadequate. It doesn't explain what happens after filling (e.g., does it return success/failure, what errors might occur), doesn't provide context about the form interaction lifecycle, and leaves critical behavioral questions unanswered given 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%, with the schema clearly documenting that 'fields' is an object mapping selectors to text values. The description adds minimal value beyond this by mentioning 'multiple form fields' which aligns with the object structure, but doesn't provide additional context about selector formats, validation, or practical examples.
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 clearly states the action ('fill') and target ('multiple form fields at once'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'type' or 'select' that might also interact with form elements, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'type' or 'select' from the sibling list. It mentions 'multiple form fields at once' which implies a batch operation, but doesn't explicitly state when this is preferred over individual field interactions or what prerequisites might exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_textC
Get text content from an element
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element |
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. While 'Get text content' implies a read-only operation, it doesn't specify what happens if the selector doesn't match (e.g., error, null return), whether it waits for the element to exist, or the format of returned text. For a tool with no annotation coverage, this leaves significant behavioral gaps.
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 with zero wasted words. It's front-loaded with the core purpose ('Get text content from an element'), making it immediately scannable. Every word earns its place, and there's no redundant or verbose phrasing.
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 tool's moderate complexity (interacting with web elements) and lack of annotations and output schema, the description is insufficient. It doesn't explain return values (e.g., string format, error cases), behavioral expectations, or integration with sibling tools like wait_for. For a tool that likely operates in a browser automation context, more context is needed for effective use.
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%, with the single parameter 'selector' clearly documented as 'CSS selector for the element' in the schema. The description adds no additional parameter information beyond what the schema provides, such as examples of valid selectors or constraints. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get text content from an element' clearly states the verb ('Get') and resource ('text content from an element'), making the tool's function immediately understandable. It distinguishes from siblings like get_title (gets page title) and get_url (gets page URL) by specifying element text extraction. However, it doesn't explicitly mention it's for web page elements, which could be inferred from sibling tools but isn't 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?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., needing a page to be loaded), comparison with similar tools like get_title or snapshot, or when not to use it (e.g., for non-text elements). The agent must infer usage from the tool name and sibling context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_titleB
Get the current page title
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the basic function without mentioning whether this requires page loading, has latency considerations, returns structured data, or handles errors. For a tool with zero annotation coverage, this is insufficient.
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 communicates the core function without any wasted words. It's appropriately sized for a simple tool and front-loads the essential 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?
Given the lack of annotations and output schema, the description should provide more context about what the tool returns, error conditions, or dependencies. For a browser automation tool in a set with many siblings, the minimal description leaves significant gaps in understanding how to use it effectively.
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 has zero parameters with 100% schema description coverage, so the schema already fully documents the input requirements. The description appropriately doesn't add parameter information, which is correct for a parameterless tool, earning a baseline score of 4.
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 clearly states the action ('Get') and target resource ('the current page title'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_text' or 'get_url' that also retrieve page information, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_text' or 'get_url', nor does it mention any prerequisites or context for usage. It simply states what the tool does without addressing when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_urlB
Get the current page URL
| 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 of behavioral disclosure. It states what the tool does but lacks details on behavior, such as whether it returns the full URL with query parameters, if it works only on certain page states, or if there are any latency or error-handling aspects. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded with the core action ('Get the current page URL'), making it highly efficient and easy to parse. Every word earns its place, achieving 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?
Given the lack of annotations and output schema, the description is incomplete. It doesn't specify what the return value looks like (e.g., string format, error cases) or behavioral constraints, which are crucial for an agent to use the tool effectively. For a simple tool, more context is needed to compensate for the missing structured data.
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 has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately avoids unnecessary details. A baseline of 4 is applied as per the rules for zero-parameter tools, since no compensation is 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?
The description clearly states the verb ('Get') and resource ('current page URL'), making the purpose immediately understandable. It distinguishes from siblings like get_title (which retrieves the page title) and get_text (which retrieves text content). However, it doesn't specify the exact scope or format of the URL returned, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention if this should be used for navigation verification, logging, or other contexts, nor does it reference sibling tools like navigate or get_title that might be used in related scenarios. This leaves the agent without explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
go_backB
Go back to the previous page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Go back to the previous page' implies navigation but doesn't specify whether this requires an active browser session, what happens if there's no history, whether it waits for page load, or what the response looks like. This leaves significant behavioral gaps for a navigation 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?
The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple navigation tool and front-loads the core functionality immediately. Every word earns its place in conveying the essential action.
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 navigation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address behavioral aspects like what constitutes success/failure, whether it returns the new URL, or what happens in edge cases (no history, same page). Given the sibling tools include various navigation and interaction functions, more context about this tool's specific role would be helpful.
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 has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't mention parameters, maintaining focus on the tool's purpose. Baseline for zero parameters is 4, as there's no parameter information to add beyond what's already covered.
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 clearly states the action ('go back') and target ('previous page'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'go_forward' or 'navigate' beyond the basic directional difference, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'go_forward', 'navigate', or 'reload'. It doesn't specify prerequisites (e.g., requires a browser session with history) or contextual constraints, leaving the agent to infer appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
go_forwardB
Go forward to the next page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'go forward' implies navigation, it doesn't specify what happens if there's no forward page (error behavior), whether this affects page state, or what the expected outcome is. The description lacks crucial behavioral context for a navigation 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?
The description is a single, efficient sentence with zero wasted words. It's perfectly front-loaded with the core action and target, making it immediately understandable without any unnecessary elaboration.
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 navigation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what 'next page' means in context (browser history navigation), what happens on success/failure, or what the agent should expect after invocation. Given the complexity of navigation operations, more context is needed.
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 has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, which is correct for this context.
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 clearly states the action ('go forward') and target ('to the next page'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this from sibling tools like 'go_back' or 'navigate', which would require mentioning backward navigation or URL-based navigation respectively.
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 provides no guidance on when to use this tool versus alternatives like 'go_back', 'navigate', or 'reload'. There's no mention of prerequisites (e.g., needing to be on a page with forward navigation available) or typical usage contexts beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reloadB
Reload the current page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose important behavioral traits like whether this causes page state loss, triggers network requests, requires page load completion, or has any side effects. 'Reload' implies mutation but lacks safety/performance 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?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple action and front-loads the essential information 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 browser interaction tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after reloading (page load state, potential errors, completion signals) or how this differs from other navigation tools. Given the complexity of browser automation, more context is needed.
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 has 0 parameters with 100% schema description coverage, so the schema already fully documents the empty parameter set. The description appropriately doesn't add parameter information beyond what's already covered, earning a baseline score of 4 for zero-parameter tools.
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 clearly states the action ('Reload') and target ('the current page'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'navigate' or 'go_back' which also affect page state, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'navigate' (for loading new URLs) or 'go_back'/'go_forward' (for browser history navigation). There's no mention of context, prerequisites, or exclusions for using this tool.
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 the current page
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Optional filename for the screenshot |
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 states the action but does not disclose behavioral traits like whether it requires specific permissions, if it captures the full page or viewport, error handling, or output format. This is a significant gap for a mutation-like 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?
The description is a single, clear sentence with zero waste. It is appropriately sized and front-loaded, efficiently conveying the core purpose without unnecessary details.
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 lack of annotations and output schema, the description is incomplete. It does not address key aspects like what the screenshot returns (e.g., image data, file path), error conditions, or dependencies on page state, which are crucial for a tool with potential side effects.
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 input schema has 100% description coverage, documenting the optional 'filename' parameter. The description adds no additional meaning beyond the schema, such as file format or naming conventions, so it meets the baseline of 3 for high schema 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?
The description clearly states the action ('take a screenshot') and the target ('current page'), which is specific and unambiguous. However, it does not distinguish this tool from the 'snapshot' sibling tool, which might have overlapping functionality, so it misses full 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?
The description provides no guidance on when to use this tool versus alternatives like 'snapshot' or other sibling tools. It lacks context about prerequisites, such as needing a page to be loaded, or exclusions, leaving the agent to infer usage.
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 |
|---|---|---|---|
| selector | Yes | CSS selector for the select element | |
| value | Yes | Value to select |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits like whether it waits for page loads, handles dynamic dropdowns, requires the element to be visible, or what happens on failure. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.
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 and no output schema, the description is insufficient. It doesn't explain what happens after selection (e.g., page changes, validation), error conditions, or interaction with other tools, leaving the agent with incomplete 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 100%, so the schema already documents both parameters ('selector' and 'value') adequately. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline for high 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?
The description clearly states the action ('select an option') and target ('from a dropdown'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'click' or 'fill_form' that might also interact with form elements, missing full sibling distinction.
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 provided on when to use this tool versus alternatives like 'click' for buttons or 'fill_form' for other form inputs. The description only states what it does, not when it's appropriate or what prerequisites might exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshotB
Get a snapshot of the current page with interactive elements
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 mentions capturing interactive elements, but doesn't clarify what 'snapshot' entails (e.g., is it a visual image, DOM state, or something else?), whether it requires page stability, or what the output format is. This leaves significant gaps for a tool that likely involves page interaction.
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 directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.
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 complexity of capturing page snapshots with interactive elements, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'snapshot' means in this context, how interactive elements are handled, or what the agent can expect as a result, leaving critical behavioral aspects unclear.
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 has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter details, and it appropriately avoids mentioning any. This meets the baseline for a parameterless tool.
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 clearly states the action ('Get a snapshot') and target ('current page'), with the additional detail 'with interactive elements' that distinguishes it from a basic screenshot. However, it doesn't explicitly differentiate from the 'screenshot' sibling tool, which might capture similar visual content.
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 provided on when to use this tool versus alternatives like 'screenshot' or 'get_text'. The description implies it captures interactive elements, but doesn't specify scenarios where this is preferred or when other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
typeC
Type text into an input field
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the input field | |
| text | Yes | Text to type |
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 mentions typing text but doesn't specify whether this simulates keystrokes, triggers events, requires the field to be interactable, or handles errors like invalid selectors. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
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 with zero waste, front-loading the core action. It's appropriately sized for a simple tool, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's mutation nature (typing implies changing state), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like error handling, success conditions, or interaction with page state, which are crucial for an agent to use this tool correctly in a browser automation 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 100%, with both parameters ('selector' and 'text') clearly documented in the schema. The description adds no additional meaning beyond what the schema provides, such as examples or constraints on selector syntax. Baseline 3 is appropriate when the schema does the heavy lifting.
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 clearly states the action ('Type text') and target ('into an input field'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from sibling tools like 'fill_form' or 'select', which might have overlapping functionality for interacting with form elements.
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 provides no guidance on when to use this tool versus alternatives like 'fill_form' or 'select' from the sibling list. It lacks context about prerequisites (e.g., whether the input field must be visible or focused) or exclusions, leaving the agent to infer usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_forC
Wait for an element to appear on the page
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector for the element to wait for | |
| timeout | No | Timeout in milliseconds (default: 5000) |
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 states the action but lacks details on what happens on success (e.g., returns element, continues execution) or failure (e.g., timeout error, retry behavior), and doesn't mention side effects like blocking execution or resource usage.
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 directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized, with every word contributing to understanding.
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 and no output schema, the description is incomplete for a tool that likely involves waiting behavior and potential errors. It doesn't explain return values, error conditions, or operational context, leaving gaps for an AI agent to infer usage.
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 both parameters ('selector' and 'timeout') with clear descriptions. The description adds no additional meaning beyond implying the tool uses these parameters, meeting the baseline for high schema 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?
The description clearly states the tool's purpose with a specific verb ('wait for') and resource ('an element to appear on the page'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_text' or 'select', which might also involve waiting for elements, though the core action is distinct.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like waiting for dynamic content, handling timeouts, or how it relates to siblings like 'get_text' (which might implicitly wait) or 'navigate' (which could involve waiting for page loads).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes for browser automation tasks, with minimal overlap. However, 'snapshot' and 'screenshot' could potentially be confused as both capture page states, though their descriptions differentiate them (screenshot is visual, snapshot includes interactive elements).
All tool names follow a consistent snake_case pattern with clear verb-action naming (e.g., 'click', 'navigate', 'get_text'). The naming convention is uniform throughout the set, making it easy to understand each tool's purpose at a glance.
16 tools is well-scoped for a browser automation server, covering essential navigation, interaction, data extraction, and page state operations. Each tool serves a distinct purpose that earns its place in the set without feeling excessive or insufficient.
The toolset provides comprehensive coverage for core browser automation tasks including navigation, interaction, form handling, and page inspection. Minor gaps exist, such as no explicit tool for handling cookies, managing windows/tabs, or executing more complex user interactions like drag-and-drop, but agents can work around these with existing tools.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
One MCP for the Web. Easily search, crawl, navigate, and extract websites without getting blocked.…
All HasData scraping tools in one MCP server: Google, TikTok, Instagram, maps, e-commerce and more.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zypin-testing/zypin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server