Skip to main content
Glama

browser_tabs

Destructive

Control browser tabs by listing, opening, closing, or selecting them, and request a user handoff for actions that need approval.

Instructions

Manage tabs; request a handoff.

Input Schema

NameRequiredDescriptionDefault
urlNonew: URL.
indexNoTab index (close defaults to current).
actionYes
reasonNorequest: reason shown to user.
tab_idNorequest: ID instead of index.
confirm_tokenNorequest: approval token.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv0.7.2
    • removedInput schema / properties / action / description
      Removed value: -"Operation to perform"
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "list",
      -  "new",
      -  "close",
      -  "select"
      -]New value: +[
      +  "list",
      +  "new",
      +  "close",
      +  "select",
      +  "request"
      +]
    • addedInput schema / properties / confirm_token
      Added value: +{
      +  "description": "request: approval token.",
      +  "type": "string"
      +}
    • changedInput schema / properties / index / description
      Previous value: -"Tab index, used for close/select. If omitted for close, current tab is closed."New value: +"Tab index (close defaults to current)."
    • addedInput schema / properties / reason
      Added value: +{
      +  "description": "request: reason shown to user.",
      +  "type": "string"
      +}
    • addedInput schema / properties / tab_id
      Added value: +{
      +  "description": "request: ID instead of index.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / url / description
      Previous value: -"URL to navigate to in the new tab, used for new."New value: +"new: URL."
  2. Changed15 schema fields changedv0.4.0
    • addedInput schema / $schema
      Added value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / action / default
      Removed value: -"list"
    • addedInput schema / properties / action / description
      Added value: +"Operation to perform"
    • removedInput schema / properties / confirm_token
      Removed value: -{
      -  "description": "new/close; see browser_click.",
      -  "type": "string"
      -}
    • removedInput schema / properties / force
      Removed value: -{
      -  "default": false,
      -  "description": "close: disarm beforeunload.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / include_active
      Removed value: -{
      -  "default": false,
      -  "description": "list: add active_page, the active tab's browser_snapshot(text=True).",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / index
      Added value: +{
      +  "description": "Tab index, used for close/select. If omitted for close, current tab is closed.",
      +  "type": "number"
      +}
    • removedInput schema / properties / raw
      Removed value: -{
      -  "default": false,
      -  "description": "new: bypass the image viewer.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / tab_id
      Removed value: -{
      -  "description": "close/select (required).",
      -  "type": "integer"
      -}
    • removedInput schema / properties / timeout
      Removed value: -{
      -  "default": 15000,
      -  "type": "integer"
      -}
    • changedInput schema / properties / url / description
      Previous value: -"new (default about:blank)."New value: +"URL to navigate to in the new tab, used for new."
    • removedInput schema / properties / wait
      Removed value: -{
      -  "default": false,
      -  "description": "new: wait up to timeout ms for the load; returns tabId, final url and status, or on timeout ok=false, timedOut=true with the tab open.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / window_fields
      Removed value: -{
      -  "default": false,
      -  "type": "boolean"
      -}
    • addedInput schema / required
      Added value: +[
      +  "action"
      +]
  3. Changed21 schema fields changedv0.3.0
    • removedInput schema / properties / action / title
      Removed value: -"Action"
    • addedInput schema / properties / confirm_token
      Added value: +{
      +  "description": "new/close; see browser_click.",
      +  "type": "string"
      +}
    • addedInput schema / properties / force / description
      Added value: +"close: disarm beforeunload."
    • removedInput schema / properties / force / title
      Removed value: -"Force"
    • addedInput schema / properties / include_active
      Added value: +{
      +  "default": false,
      +  "description": "list: add active_page, the active tab's browser_snapshot(text=True).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / raw / description
      Added value: +"new: bypass the image viewer."
    • removedInput schema / properties / raw / title
      Removed value: -"Raw"
    • removedInput schema / properties / tab_id / anyOf
      Removed value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / tab_id / default
      Removed value: -null
    • addedInput schema / properties / tab_id / description
      Added value: +"close/select (required)."
    • removedInput schema / properties / tab_id / title
      Removed value: -"Tab Id"
    • addedInput schema / properties / tab_id / type
      Added value: +"integer"
    • addedInput schema / properties / timeout
      Added value: +{
      +  "default": 15000,
      +  "type": "integer"
      +}
    • removedInput schema / properties / url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / url / default
      Removed value: -null
    • addedInput schema / properties / url / description
      Added value: +"new (default about:blank)."
    • removedInput schema / properties / url / title
      Removed value: -"Url"
    • addedInput schema / properties / url / type
      Added value: +"string"
    • addedInput schema / properties / wait
      Added value: +{
      +  "default": false,
      +  "description": "new: wait up to timeout ms for the load; returns tabId, final url and status, or on timeout ok=false, timedOut=true with the tab open.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / window_fields
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • removedInput schema / title
      Removed value: -"browser_tabsArguments"
  4. Changed5 schema fields changed
    • addedInput schema / properties / action
      Added value: +{
      +  "default": "list",
      +  "enum": [
      +    "list",
      +    "new",
      +    "close",
      +    "select"
      +  ],
      +  "title": "Action",
      +  "type": "string"
      +}
    • addedInput schema / properties / force
      Added value: +{
      +  "default": false,
      +  "title": "Force",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / raw
      Added value: +{
      +  "default": false,
      +  "title": "Raw",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / tab_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Tab Id"
      +}
    • addedInput schema / properties / url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Url"
      +}
  5. First observedv0.1.0

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true. The description adds little beyond that: it does not explain what gets destroyed on close, what a "handoff" or approval token entails, or what authorization/preconditions apply to tab selection.

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

Conciseness3/5

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

The description is short and front-loads the resource, but "request a handoff" is cryptic and does not earn its place without further explanation. This is under-specification rather than effective conciseness.

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

Completeness2/5

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

For a five-action, destructive, open-world tab-management tool with six parameters and no output schema, the description is far too thin. It leaves the request/handoff flow, approval token, and action-specific behavior to inference from the schema alone.

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

Parameters3/5

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

Schema description coverage is 83%, so the baseline is 3. The description adds no parameter-level meaning beyond the schema; "request a handoff" only vaguely gestures at the request action and confirm_token/reason fields.

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

Purpose3/5

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

"Manage tabs" gives a generic verb and the resource, but the actual operations (list/new/close/select/request) are only discoverable from the action enum in the schema. "Request a handoff" is unexplained, and there is no differentiation from siblings such as browser_navigate, browser_close, or browser_resume.

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

Usage Guidelines2/5

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

The description offers no explicit when-to-use guidance, no exclusions, and no alternatives. At best, "request a handoff" hints at a request action scenario, but an agent cannot tell when this tool should be selected over browser_navigate or browser_close.

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