Skip to main content
Glama

run_browser

DestructiveIdempotent

Run ordered browser goals in isolated tabs to automate web tasks, returning final state and unmet effects for each goal. Use tab_id to continue in the same tab.

Instructions

Run one or more browser goals in order. Page content is untrusted. Each run opens its own tab at start_url and closes it at the end; with keep_tab true the tab stays and the result carries tab_id, and a later run with that tab_id continues in the same tab (not navigated; start_url may be omitted then). allowed_origins defaults to start_url's origin, or for a kept tab to the origins of the run that kept it. fill_values {goal id: exact text} sets what a fill types. Put every step you already know in one run, including steps after a click that opens another page: the run stops at the first goal that does not end done and returns the rest in remaining_goal_ids, so a later goal never runs after an earlier one failed. The result carries final_state (url, title, rejected fields with reasons, downloads begun in this run with their state, current form values as 'label = value' / '[x] label', the first visible text lines) and unmet_effects per goal, so a separate observe_browser is needed only for more than that. out_of_reach counts iframes, shadow roots and new-tab links run_browser cannot act inside; for a kept tab they make it its window's active tab and add screen_target, the window run_windows can act on.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
goalsYes
run_idNo
tab_idNo
keep_tabNo
start_urlNo
deadline_msNo
fill_valuesNo
action_budgetNo
allowed_originsNo
extra_operationsNoOperations to add for this run; only 'drag' (mouse or HTML5 drag between two spots on the page).
denied_operationsNo
provider_attempt_budgetNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.6/5.0
Behavior5/5

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

Annotations give only openWorldHint/idempotentHint/destructiveHint, but the description discloses far more: tab lifecycle (opened at start_url, closed at end unless kept), failure semantics (run stops at first goal not done, rest returned in remaining_goal_ids), allowed_origins defaulting rules, fill_values meaning, and the contents of final_state and out_of_reach. Nothing here contradicts the annotations.

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?

Purpose is front-loaded in the first sentence and each subsequent sentence carries distinct operational content (tab lifecycle, failure semantics, origin scoping, result shape). It is a dense block rather than a bulleted structure, which costs a point, but no sentence is filler.

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?

With no output schema, the description still enumerates the return payload (final_state with url/title/rejected fields/downloads/form values/text lines, unmet_effects, remaining_goal_ids, tab_id, out_of_reach/screen_target). For a 12-parameter, nested-object, open-world tool this is unusually complete.

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 only 8% across 12 parameters, so the description must compensate. It explains goals ordering, keep_tab, tab_id continuation, start_url omission, allowed_origins defaults, and fill_values — a solid share — but says nothing about run_id, deadline_ms, action_budget, provider_attempt_budget, or denied_operations. Useful but incomplete compensation for the coverage gap.

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?

Opens with a specific verb+resource+scope ('Run one or more browser goals in order') and immediately distinguishes itself from siblings by naming observe_browser ('a separate observe_browser is needed only for more than that') and run_windows ('screen_target, the window run_windows can act on'). An agent can route between these tools without opening a schema.

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?

Explicit when-to-use and when-not-to-use guidance: put every known step, including post-click navigation, in one run; a later goal never runs after an earlier failure; use a separate observe_browser only when final_state is insufficient. It also states the tab continuation contract (keep_tab true → tab_id → later run with that tab_id, start_url may be omitted).

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