Browserbase MCP Server
Provides Docker containerization support for running the browser automation server in isolated environments
Integrates with Google's Gemini models (including Gemini 2.0 Flash as default) for AI-powered web automation and browser control
Distributed as an npm package for easy installation and deployment of the browser automation server
Supports using OpenAI's GPT models for AI-powered web automation and natural language commands through Stagehand integration
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., "@Browserbase MCP Servertake a screenshot of the GitHub homepage and extract the trending repositories"
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.
Browserbase MCP Server

The Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. Whether you're building an AI-powered IDE, enhancing a chat interface, or creating custom AI workflows, MCP provides a standardized way to connect LLMs with the context they need.
This server provides cloud browser automation capabilities using Browserbase and Stagehand. It enables LLMs to interact with web pages, take screenshots, extract information, and perform automated actions with atomic precision.
Features
Feature | Description |
Browser Automation | Control and orchestrate cloud browsers via Browserbase |
Data Extraction | Extract structured data from any webpage |
Web Interaction | Navigate, click, and fill forms with ease |
Screenshots | Capture full-page and element screenshots |
Model Flexibility | Supports multiple models (OpenAI, Claude, Gemini, and more) |
Vision Support | Use annotated screenshots for complex DOMs |
Session Management | Create, manage, and close browser sessions |
How to Setup
Quickstarts:
Add to Cursor
Copy and Paste this link in your Browser:
cursor://anysphere.cursor-deeplink/mcp/install?name=browserbase&config=eyJjb21tYW5kIjoibnB4IEBicm93c2VyYmFzZWhxL21jcCIsImVudiI6eyJCUk9XU0VSQkFTRV9BUElfS0VZIjoiIiwiQlJPV1NFUkJBU0VfUFJPSkVDVF9JRCI6IiIsIkdFTUlOSV9BUElfS0VZIjoiIn19We currently support 2 transports for our MCP server, STDIO and SHTTP. We recommend you use SHTTP with our remote hosted url to take advantage of the server at full capacity.
SHTTP:
To use the Browserbase MCP Server through our remote hosted URL, add the following to your configuration.
Go to smithery.ai and enter your API keys and configuration to get a remote hosted URL. When using our remote hosted server, we provide the LLM costs for Gemini, the best performing model in Stagehand.

If your client supports SHTTP:
{
"mcpServers": {
"browserbase": {
"url": "your-smithery-url.com"
}
}
}If your client doesn't support SHTTP:
{
"mcpServers": {
"browserbase": {
"command": "npx",
"args": ["mcp-remote", "your-smithery-url.com"]
}
}
}STDIO:
You can either use our Server hosted on NPM or run it completely locally by cloning this repo.
❗️ Important: If you want to use a different model you have to add --modelName to the args and provide that respective key as an arg. More info below.
To run on NPM (Recommended)
Go into your MCP Config JSON and add the Browserbase Server:
{
"mcpServers": {
"browserbase": {
"command": "npx",
"args": ["@browserbasehq/mcp-server-browserbase"],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": "",
"GEMINI_API_KEY": ""
}
}
}
}That's it! Reload your MCP client and Claude will be able to use Browserbase.
To run 100% local:
Option 1: Direct installation
# Clone the Repo
git clone https://github.com/browserbase/mcp-server-browserbase.git
cd mcp-server-browserbase
# Install the dependencies and build the project
npm install && npm run buildOption 2: Docker
# Clone the Repo
git clone https://github.com/browserbase/mcp-server-browserbase.git
cd mcp-server-browserbase
# Build the Docker image
docker build -t mcp-browserbase .Then in your MCP Config JSON run the server. To run locally we can use STDIO or self-host SHTTP.
STDIO:
Using Direct Installation
To your MCP Config JSON file add the following:
{
"mcpServers": {
"browserbase": {
"command": "node",
"args": ["/path/to/mcp-server-browserbase/cli.js"],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": "",
"GEMINI_API_KEY": ""
}
}
}
}Using Docker
To your MCP Config JSON file add the following:
{
"mcpServers": {
"browserbase": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"BROWSERBASE_API_KEY",
"-e",
"BROWSERBASE_PROJECT_ID",
"-e",
"GEMINI_API_KEY",
"mcp-browserbase"
],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": "",
"GEMINI_API_KEY": ""
}
}
}
}Then reload your MCP client and you should be good to go!
Configuration
The Browserbase MCP server accepts the following command-line flags:
Flag | Description |
| Enable Browserbase proxies for the session |
| Enable Browserbase Advanced Stealth (Only for Scale Plan Users) |
| Enable Browserbase Keep Alive Session |
| Specify a Browserbase Context ID to use |
| Whether to persist the Browserbase context (default: true) |
| Port to listen on for HTTP/SHTTP transport |
| Host to bind server to (default: localhost, use 0.0.0.0 for all interfaces) |
| JSON array of cookies to inject into the browser |
| Browser viewport width (default: 1024) |
| Browser viewport height (default: 768) |
| The model to use for Stagehand (default: gemini-2.0-flash) |
| API key for the custom model provider (required when using custom models) |
| Enable experimental features (default: false) |
These flags can be passed directly to the CLI or configured in your MCP configuration file.
NOTE:
Currently, these flags can only be used with the local server (npx @browserbasehq/mcp-server-browserbase or Docker).
Using Configuration Flags with Docker
When using Docker, you can pass configuration flags as additional arguments after the image name. Here's an example with the --proxies flag:
{
"mcpServers": {
"browserbase": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"BROWSERBASE_API_KEY",
"-e",
"BROWSERBASE_PROJECT_ID",
"-e",
"GEMINI_API_KEY",
"mcp-browserbase",
"--proxies"
],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": "",
"GEMINI_API_KEY": ""
}
}
}
}You can also run the Docker container directly from the command line:
docker run --rm -i \
-e BROWSERBASE_API_KEY=your_api_key \
-e BROWSERBASE_PROJECT_ID=your_project_id \
-e GEMINI_API_KEY=your_gemini_key \
mcp-browserbase --proxiesConfiguration Examples
Proxies
Here are our docs on Proxies.
To use proxies, set the --proxies flag in your MCP Config:
{
"mcpServers": {
"browserbase": {
"command": "npx",
"args": ["@browserbasehq/mcp-server-browserbase", "--proxies"],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": "",
"GEMINI_API_KEY": ""
}
}
}
}Advanced Stealth
Here are our docs on Advanced Stealth.
To use advanced stealth, set the --advancedStealth flag in your MCP Config:
{
"mcpServers": {
"browserbase": {
"command": "npx",
"args": ["@browserbasehq/mcp-server-browserbase", "--advancedStealth"],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": "",
"GEMINI_API_KEY": ""
}
}
}
}Contexts
Here are our docs on Contexts
To use contexts, set the --contextId flag in your MCP Config:
{
"mcpServers": {
"browserbase": {
"command": "npx",
"args": [
"@browserbasehq/mcp-server-browserbase",
"--contextId",
"<YOUR_CONTEXT_ID>"
],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": "",
"GEMINI_API_KEY": ""
}
}
}
}Browser Viewport Sizing
The default viewport sizing for a browser session is 1024 x 768. You can adjust the Browser viewport sizing with browserWidth and browserHeight flags.
Here's how to use it for custom browser sizing. We recommend to stick with 16:9 aspect ratios (ie: 1920 x 1080, 1280 x 720, 1024 x 768)
{
"mcpServers": {
"browserbase": {
"command": "npx",
"args": [
"@browserbasehq/mcp-server-browserbase",
"--browserHeight 1080",
"--browserWidth 1920"
],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": "",
"GEMINI_API_KEY": ""
}
}
}
}Model Configuration
Stagehand defaults to using Google's Gemini 2.0 Flash model, but you can configure it to use other models like GPT-4o, Claude, or other providers.
Important: When using any custom model (non-default), you must provide your own API key for that model provider using the --modelApiKey flag.
Here's how to configure different models:
{
"mcpServers": {
"browserbase": {
"command": "npx",
"args": [
"@browserbasehq/mcp-server-browserbase",
"--modelName",
"anthropic/claude-3-5-sonnet-latest",
"--modelApiKey",
"your-anthropic-api-key"
],
"env": {
"BROWSERBASE_API_KEY": "",
"BROWSERBASE_PROJECT_ID": ""
}
}
}
}Note: The model must be supported in Stagehand. Check out the docs here. When using any custom model, you must provide your own API key for that provider.
Resources
The server provides access to screenshot resources:
Screenshots (
screenshot://<screenshot-name>)PNG images of captured screenshots
Key Features
AI-Powered Automation: Natural language commands for web interactions
Multi-Model Support: Works with OpenAI, Claude, Gemini, and more
Screenshot Capture: Full-page and element-specific screenshots
Data Extraction: Intelligent content extraction from web pages
Proxy Support: Enterprise-grade proxy capabilities
Stealth Mode: Advanced anti-detection features
Context Persistence: Maintain authentication and state across sessions
For more information about the Model Context Protocol, visit:
For the official MCP Docs:
License
Licensed under the Apache 2.0 License.
Copyright 2025 Browserbase, Inc.
Available Tools
8 toolsbrowserbase_screenshotC
Capture a full-page screenshot and return it (and save as a resource).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name of the screenshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It mentions the tool 'returns' and 'saves as a resource,' implying output behavior, but lacks details on permissions, rate limits, error conditions, or what 'save as a resource' entails (e.g., format, location). This is a significant gap for a tool that performs capture and save operations.
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 front-loads the core action. It could be slightly more structured by separating the capture and save aspects, but it's concise with minimal waste.
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. It doesn't explain the return value (e.g., image data, URL), error handling, or dependencies on other tools like browserbase_session_create. For a screenshot tool with potential complexity, this leaves gaps in understanding its full behavior.
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 1 parameter with 100% coverage, providing a clear description. The tool description adds no additional parameter semantics beyond implying the 'name' parameter might be used for the screenshot, but this is already covered in the schema. Baseline 3 is appropriate as 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 ('capture a full-page screenshot') and the resource (screenshot), specifying it's full-page. However, it doesn't explicitly distinguish this from potential sibling tools like browserbase_stagehand_observe, which might also involve visual capture, though the 'full-page' aspect provides some 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. It doesn't mention prerequisites (e.g., needing an active session), exclusions, or comparisons to sibling tools like browserbase_stagehand_extract, which might handle other types of data extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserbase_session_closeA
Close the current Browserbase session and reset the active context.
| 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. It discloses that closing resets the active context, which is useful behavioral information, but does not mention potential side effects like data loss, permissions needed, or error handling. It adds some value but lacks comprehensive details.
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 front-loads the key action ('Close') and purpose. Every word earns its place with no waste, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple close operation with no parameters) and lack of annotations/output schema, the description is adequate but minimal. It covers the basic action and context reset, but for a tool that might affect session state, more details on implications or prerequisites could enhance completeness.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add param info, which is appropriate, but baseline is 4 for zero parameters as it avoids redundancy.
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 specific action ('Close') and target resource ('the current Browserbase session'), and distinguishes it from siblings like 'browserbase_session_create' by indicating it terminates rather than initiates a session. It's precise and avoids tautology.
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 implies usage context ('reset the active context'), suggesting it should be used to clean up after a session, but does not explicitly state when not to use it or name alternatives. It provides clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserbase_session_createB
Create or reuse a Browserbase browser session and set it as active.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | Optional session ID to use/reuse. If not provided or invalid, a new session is created. |
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 mentions that sessions can be created or reused and set as active, but doesn't disclose behavioral traits such as whether this requires authentication, has rate limits, what happens if a sessionId is invalid, or how long sessions persist. For a tool that likely involves resource allocation and state management, 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?
The description is a single, efficient sentence that front-loads the key action and resource. Every word earns its place, with no wasted verbiage, 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 session management (likely involving state, resources, and potential side effects), no annotations, and no output schema, the description is incomplete. It doesn't explain what 'set as active' means in practice, what the tool returns, or any prerequisites. For a tool with such implications, 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 schema fully documenting the optional sessionId parameter. The description adds minimal value beyond the schema by implying that sessionId is for reuse, but doesn't provide additional semantics like format examples or edge cases. Baseline 3 is appropriate as 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 ('Create or reuse') and resource ('Browserbase browser session'), and specifies it will be 'set as active'. It distinguishes from siblings like 'browserbase_session_close' by being about creation rather than termination. However, it doesn't explicitly differentiate from other session-related tools if they exist beyond the listed 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?
The description implies usage when needing a browser session, but doesn't explicitly state when to use this tool versus alternatives like 'browserbase_stagehand_navigate' or other session tools. It mentions reusing an existing session via sessionId, providing some context, but lacks clear guidance on when to create new versus reuse or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserbase_stagehand_actC
Perform a single action on the page (e.g., click, type).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to perform. Should be as atomic and specific as possible, i.e. 'Click the sign in button' or 'Type 'hello' into the search input'. | |
| variables | No | Variables used in the action template. ONLY use variables if you're dealing with sensitive data or dynamic content. When using variables, you MUST have the variable key in the action template. ie: {"action": "Fill in the password", "variables": {"password": "123456"}} |
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 'Perform a single action' implies a write/mutation operation, it doesn't specify whether this requires specific page states, what happens on failure, or any rate limits. The description lacks crucial behavioral context for a tool that modifies page 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?
The description is extremely concise - a single sentence with parenthetical examples. Every word earns its place, and the core purpose is front-loaded 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?
For a tool that performs page actions (likely mutations) with no annotations and no output schema, the description is insufficient. It doesn't explain what constitutes a valid action, what the tool returns, error conditions, or how it relates to other browser automation tools. The context signals indicate complexity (nested objects) that isn't addressed.
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 description adds no parameter information beyond what's already in the schema, which has 100% coverage. The schema descriptions thoroughly explain both 'action' and 'variables' parameters, including usage examples and constraints. The description doesn't compensate with additional semantic context, so 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?
The description clearly states the tool's purpose as 'Perform a single action on the page' with examples (click, type), which is a specific verb+resource combination. However, it doesn't explicitly distinguish this from sibling tools like browserbase_stagehand_extract or browserbase_stagehand_observe, which likely involve different types of page interactions.
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 when this tool is appropriate compared to other stagehand tools or browserbase_screenshot, nor any prerequisites or exclusions for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserbase_stagehand_extractB
Extract structured data or text from the current page using an instruction.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction | Yes | The specific instruction for what information to extract from the current page. Be as detailed and specific as possible about what you want to extract. For example: 'Extract all product names and prices from the listing page'.The more specific your instruction, the better the extraction results will be. |
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 mentions extraction 'from the current page' implying it operates within an existing browser context, but doesn't specify prerequisites (e.g., requires an active session), performance characteristics (e.g., execution time, reliability), or what happens on failure. 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 extremely concise - a single sentence that efficiently communicates the core functionality. Every word earns its place: 'Extract' (action), 'structured data or text' (what), 'from the current page' (where), 'using an instruction' (how). There's no wasted language or 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 tool's moderate complexity (extraction operation with one parameter) and 100% schema coverage but no annotations or output schema, the description is minimally adequate. It explains what the tool does but doesn't address behavioral aspects, usage context, or output format. For a tool that performs content extraction without safety annotations, more guidance would be beneficial.
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 description doesn't add meaningful parameter semantics beyond what's already in the input schema. The schema has 100% coverage with a detailed description of the 'instruction' parameter including examples. The tool description merely repeats 'using an instruction' without providing additional context about parameter usage 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 clearly states the tool's purpose: 'Extract structured data or text from the current page using an instruction.' It specifies the verb (extract), resource (structured data or text from current page), and mechanism (using an instruction). However, it doesn't explicitly differentiate from sibling tools like 'browserbase_stagehand_observe' which might also involve page content analysis.
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. With sibling tools like 'browserbase_stagehand_observe' (which might monitor page content) and 'browserbase_screenshot' (which captures visual data), there's no indication of when extraction is preferred over observation or other methods. The description only states what the tool does, not 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.
browserbase_stagehand_get_urlA
Return the current page URL (full URL with query/fragment).
| 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. It states the tool returns the URL but doesn't disclose behavioral traits like whether it requires an active session, potential errors if no page is loaded, or if it's a read-only operation. The description is minimal and lacks important 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 that front-loads the core purpose with zero wasted words. Every part of the sentence ('Return the current page URL (full URL with query/fragment)') directly contributes to understanding the tool's function.
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), the description is adequate but has gaps. It explains what the tool does but lacks context about session requirements or error conditions. For a tool with no annotations, it should provide more behavioral transparency to be fully 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 are 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, 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 specific action ('Return') and resource ('current page URL'), including precise details about what's returned ('full URL with query/fragment'). It distinguishes itself from siblings like navigation or observation tools by focusing solely on URL retrieval.
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 implies usage context (when you need the current page URL), but doesn't explicitly state when to use this tool versus alternatives like 'browserbase_stagehand_observe' or 'browserbase_stagehand_extract'. No guidance is provided about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browserbase_stagehand_observeB
Find interactive elements on the page from an instruction; optionally return an action.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction | Yes | Detailed instruction for what specific elements or components to observe on the web page. This instruction must be extremely specific and descriptive. For example: 'Find the red login button in the top right corner', 'Locate the search input field with placeholder text', or 'Identify all clickable product cards on the page'. The more specific and detailed your instruction, the better the observation results will be. Avoid generic instructions like 'find buttons' or 'see elements'. Instead, describe the visual characteristics, location, text content, or functionality of the elements you want to observe. This tool is designed to help you identify interactive elements that you can later use with the act tool for performing actions like clicking, typing, or form submission. | |
| returnAction | No | Whether to return the action to perform on the element. If true, the action will be returned as a string. If false, the action will not be returned. |
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 that the tool finds interactive elements and optionally returns an action, but it doesn't cover important aspects like whether this is a read-only operation, potential side effects, performance considerations, or error handling. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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 concise and front-loaded with the core purpose in a single sentence. However, the second part ('optionally return an action') could be integrated more smoothly, and there's some redundancy with the schema's detailed parameter descriptions, but overall it's efficient with zero waste.
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 complexity (finding interactive elements on a web page), no annotations, and no output schema, the description is incomplete. It doesn't explain what the return values look like (e.g., structured data, error formats), behavioral constraints, or how it interacts with sibling tools beyond a vague reference to the 'act tool'. This leaves the agent with insufficient context 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%, so the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema by hinting at the purpose ('find interactive elements') but doesn't provide additional syntax, format details, or usage examples for the parameters. 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 tool's purpose: 'Find interactive elements on the page from an instruction; optionally return an action.' It specifies the verb ('find'), resource ('interactive elements'), and scope ('from an instruction'), though it doesn't explicitly differentiate from sibling tools like 'browserbase_stagehand_act' or 'browserbase_stagehand_extract', which keeps it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning that the tool is for identifying elements to later use with the 'act tool', but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'browserbase_stagehand_extract' or 'browserbase_screenshot'. No exclusions or clear alternatives are stated, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap: session management (create/close), navigation (navigate/get_url), interaction (act/observe), extraction (extract), and capture (screenshot). The descriptions reinforce unique functions, making misselection unlikely.
All tools follow a consistent 'browserbase_' prefix with descriptive suffixes (e.g., session_create, stagehand_act). The naming is uniformly snake_case and logically groups tools by functionality (session_*, stagehand_*), providing excellent predictability.
With 8 tools, the server is well-scoped for browser automation, covering core workflows like session lifecycle, navigation, interaction, and data extraction. Each tool earns its place without redundancy or bloat, fitting typical automation needs.
The toolset provides strong coverage for browser automation, including session management, navigation, interaction, and data extraction. A minor gap exists in advanced features like file uploads or cookie handling, but core workflows are fully supported without dead ends.
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
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
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/kolbertistvan2/stagehand-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server