Skip to main content
Glama
Xxx00xxX33

Browserbase MCP Server

by Xxx00xxX33

multi_browserbase_stagehand_session_create

Create parallel browser sessions for multi-session workflows like data scraping, automation, testing, and batch processing with independent cookies and state.

Instructions

Create parallel browser session for multi-session workflows. Use this when you need multiple browser instances running simultaneously: parallel data scraping, concurrent automation, A/B testing, multiple user accounts, cross-site operations, batch processing, or any task requiring more than one browser. Creates an isolated browser session with independent cookies, authentication, and state. Always pair with session-specific tools (those ending with '_session'). Perfect for scaling automation tasks that require multiple browsers working in parallel.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoHighly recommended: Descriptive name for tracking multiple sessions (e.g. 'amazon-scraper', 'user-login-flow', 'checkout-test-1'). Makes debugging and session management much easier!
browserbaseSessionIDNoResume an existing Browserbase session by providing its session ID. Use this to continue work in a previously created browser session that may have been paused or disconnected.

Implementation Reference

  • The handler function that implements the core logic: creates a new Stagehand session with optional name and existing Browserbase session ID, retrieves the debug URL using Browserbase SDK, and returns session creation confirmation with URLs.
    handle: async (
      context: Context,
      { name, browserbaseSessionID },
    ): Promise<ToolResult> => {
      try {
        const params: CreateSessionParams = {
          browserbaseSessionID,
          meta: name ? { name } : undefined,
        };
    
        const session = await stagehandStore.create(context.config, params);
    
        const bbSessionId = session.metadata?.bbSessionId;
        if (!bbSessionId) {
          throw new Error("No Browserbase session ID available");
        }
    
        // Get the debug URL using Browserbase SDK
        const bb = new Browserbase({
          apiKey: context.config.browserbaseApiKey,
        });
        const debugUrl = (await bb.sessions.debug(bbSessionId))
          .debuggerFullscreenUrl;
    
        return {
          action: async () => ({
            content: [
              {
                type: "text",
                text: `Created session ${session.id}${name ? ` (${name})` : ""}\nBrowserbase session: ${bbSessionId}\nBrowserbase Live Session View URL: https://www.browserbase.com/sessions/${bbSessionId}\nBrowserbase Live Debugger URL: ${debugUrl}`,
              },
            ],
          }),
          waitForNetwork: false,
        };
      } catch (error) {
        const errorMessage =
          error instanceof Error ? error.message : String(error);
        throw new Error(
          `Failed to create browser session: ${errorMessage}. Please check your Browserbase credentials and try again.`,
        );
      }
    },
  • Tool schema definition including name, detailed description, and Zod input schema with optional 'name' and 'browserbaseSessionID' parameters.
    schema: {
      name: "multi_browserbase_stagehand_session_create",
      description:
        "Create parallel browser session for multi-session workflows. Use this when you need multiple browser instances running simultaneously: parallel data scraping, concurrent automation, A/B testing, multiple user accounts, cross-site operations, batch processing, or any task requiring more than one browser. Creates an isolated browser session with independent cookies, authentication, and state. Always pair with session-specific tools (those ending with '_session'). Perfect for scaling automation tasks that require multiple browsers working in parallel.",
      inputSchema: z.object({
        name: z
          .string()
          .optional()
          .describe(
            "Highly recommended: Descriptive name for tracking multiple sessions (e.g. 'amazon-scraper', 'user-login-flow', 'checkout-test-1'). Makes debugging and session management much easier!",
          ),
        browserbaseSessionID: z
          .string()
          .optional()
          .describe(
            "Resume an existing Browserbase session by providing its session ID. Use this to continue work in a previously created browser session that may have been paused or disconnected.",
          ),
      }),
    },
  • Includes the tool in the multiSessionTools array exported as part of the overall TOOLS for MCP registration.
    export const multiSessionTools = [
      createSessionTool,
      listSessionsTool,
      closeSessionTool,
      navigateWithSessionTool,
      actWithSessionTool,
      extractWithSessionTool,
      observeWithSessionTool,
    ];
  • src/index.ts:188-218 (registration)
    Registers all tools (including this one by name) to the MCP server via server.tool() in a loop over the TOOLS array.
    const tools: MCPToolsArray = [...TOOLS];
    
    // Register each tool with the Smithery server
    tools.forEach((tool) => {
      if (tool.schema.inputSchema instanceof z.ZodObject) {
        server.tool(
          tool.schema.name,
          tool.schema.description,
          tool.schema.inputSchema.shape,
          async (params: z.infer<typeof tool.schema.inputSchema>) => {
            try {
              const result = await context.run(tool, params);
              return result;
            } catch (error) {
              const errorMessage =
                error instanceof Error ? error.message : String(error);
              process.stderr.write(
                `[Smithery Error] ${new Date().toISOString()} Error running tool ${tool.schema.name}: ${errorMessage}\n`,
              );
              throw new Error(
                `Failed to run tool '${tool.schema.name}': ${errorMessage}`,
              );
            }
          },
        );
      } else {
        console.warn(
          `Tool "${tool.schema.name}" has an input schema that is not a ZodObject. Schema type: ${tool.schema.inputSchema.constructor.name}`,
        );
      }
    });
  • Uses stagehandStore.create helper to perform the actual session creation (implementation in src/stagehandStore.ts).
    const session = await stagehandStore.create(context.config, params);
    
    const bbSessionId = session.metadata?.bbSessionId;
    if (!bbSessionId) {
      throw new Error("No Browserbase session ID available");
    }
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by describing the session's isolated nature ('independent cookies, authentication, and state') and its purpose for scaling automation. However, it lacks details on error handling, performance implications, or resource constraints that would be helpful for a creation tool.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the core purpose. Most sentences add value, such as use cases and pairing guidance, though it could be slightly more concise by combining some of the listed examples into a broader category.

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

Completeness4/5

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

Given the tool's complexity (creating parallel sessions) and lack of annotations/output schema, the description does a good job explaining the tool's role and usage. It covers the 'why' and 'how' effectively, though it could benefit from mentioning potential limitations or prerequisites for multi-session workflows.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds no additional parameter semantics beyond what's in the schema, but it doesn't need to since the schema is comprehensive. 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.

Purpose5/5

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

The description clearly states the tool's purpose: 'Create parallel browser session for multi-session workflows.' It specifies the verb ('create'), resource ('parallel browser session'), and distinguishes from siblings by emphasizing multi-session capabilities, unlike the single-session 'browserbase_session_create'.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: 'Use this when you need multiple browser instances running simultaneously' and lists specific use cases (parallel data scraping, concurrent automation, etc.). It also states when to pair with other tools: 'Always pair with session-specific tools (those ending with '_session').'

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Xxx00xxX33/mcp-server-browserbase'

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