Skip to main content
Glama
obra

superpowers-chrome

by obra

use_browser

Navigate, click, type, and evaluate JavaScript in a persistent Chrome browser, with automatic page captures (screenshot, markdown, HTML, console logs) after every action.

Instructions

Control persistent Chrome browser with automatic page capture.

Every DOM action (navigate, click, type, select, eval) auto-captures to the session dir:

  • {prefix}.png — viewport screenshot

  • {prefix}.md — page content as structured markdown

  • {prefix}.html — full rendered DOM

  • {prefix}-console.txt — browser console messages

Prefer reading these files to using 'extract' or 'screenshot' whenever possible.

Schema: 4 parameters — action, selector (CSS/XPath or null), payload (string or object), timeout (ms). selector targets a DOM element (null/omit for navigation, eval, tab management, etc.). payload is a string for simple actions (navigate=URL, type=text, eval=JS, keyboard_press=key). payload is an object for structured actions (set_viewport={width,height}, drag_drop={target}, etc.) — a JSON-encoded string of the same object works too. Tabs are tracked as sticky state; use switch_tab to change the active tab. Use action='help' for full per-action payload shapes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform. action='help' lists all actions with payload shapes.
payloadNoExtra data for the action. Both a plain object and an equivalent JSON-encoded string are accepted for every structured shape below (e.g. set_viewport accepts either {width:390,height:844} or '{"width":390,"height":844}'). Literal string for code/free-text actions, taken as-is and never JSON-parsed even if it happens to look like JSON (eval=JS source, type=literal text, await_text=literal text to wait for, select=literal option value). String or object for simple cases (navigate=URL, set_profile=name, new_tab=URL, attr=attribute name or {selector,attr}). Structured object (or its JSON-string equivalent) for the rest: set_viewport={width,height,mobile?} (no bare-string form), keyboard_press=key string or {key,modifiers:{shift?,ctrl?,alt?,meta?}}, extract=format string or {format:'text'|'html'|'markdown',selector?}, screenshot=path string or {path,fullpage?,selector?}, scroll=direction string or {deltaX?,deltaY?,selector?}, drag_drop=target selector string, {x,y} target coords, or {source,target}, mouse_move={x,y,steps?,fromX?,fromY?} (no bare-string form), file_upload=path string, JSON array-of-paths string, or {selector,files:[...]}, get_console_messages={since:epochMs} or a bare epoch-ms timestamp, switch_tab=tab index/url-substring/title-substring). See action='help' for per-action payload shapes.
timeoutNoTimeout in ms for await_element / await_text actions.
selectorNoCSS or XPath selector — what to act on. Null/omitted for actions that don't target an element (navigate, eval, list_tabs, etc.). XPath must start with / or //. dialog::accept and dialog::dismiss are special selectors for handling open dialogs.
tab_indexNoLegacy: behaves like switch_tab. Sets the active tab to this index before running the action. Prefer the switch_tab action.
Behavior5/5

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

Beyond the annotations (readOnlyHint false, openWorldHint true, etc.), the description discloses the automatic capture mechanism with specific artifact filenames, the sticky tab state, payload parsing rules (literal strings vs. JSON), special selector syntax (e.g., dialog::accept, XPath prefix), and the existence of action='help' for exhaustive shapes. This is far richer than the boolean hints alone and fully describes the tool's behavioral traits.

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 lengthy but well-structured: it starts with the core purpose, presents capture artifacts in a bulleted list, then explains parameter semantics. Every sentence contributes useful information; however, the payload paragraph is dense and could be split or trimmed without losing value. Overall, it earns a 4 for being appropriately organized and front-loaded, but not maximally concise.

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

Completeness5/5

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

Given the tool's complexity (38 actions) and lack of an output schema, the description is highly complete: it explains what the tool produces (captured files), how to use the primary mechanisms (reading files, tab switching), and directs to action='help' for exhaustive payload shapes. It compensates for the absence of an output schema by describing the file artifacts and their contents, making the tool's behavior predictable.

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

Parameters5/5

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

Although the schema already documents all parameters (100% coverage), the description adds significant meaning: it explains when selector is null/omitted, how payload varies between string and object forms with examples, which actions take which payload types, and the legacy role of tab_index. This practical guidance goes beyond the schema's property descriptions and materially helps the agent choose correct parameter values.

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 opens with 'Control persistent Chrome browser with automatic page capture,' which clearly identifies the resource (Chrome browser) and the core capability (control with page capture). This is further refined by enumerating the available actions (navigate, click, type, etc.), making the tool's scope unmistakable even in the absence of sibling tools.

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

Usage Guidelines4/5

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

The description gives explicit internal usage guidance, such as 'Prefer reading these files to using 'extract' or 'screenshot' whenever possible' and 'use switch_tab to change the active tab.' It does not name alternatives since no sibling tools are provided, but it clearly directs users on when to use the file-based workflow versus direct actions. A statement about when not to use the tool at all is missing, preventing a 5.

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/obra/superpowers-chrome'

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