Skip to main content
Glama

run_sequence

Execute multi-step browser automation in one session: navigate, click, fill, select, then capture screenshots, PDFs, or compare pages with diffs.

Instructions

Execute a multi-step browser automation sequence. Navigate pages, interact with elements (click, fill, select), and capture multiple screenshots/PDFs/diffs in a single browser session. Use the "diff" step to compare the current page state against another URL after automation. Each output counts as 1 API request.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
stepsYesArray of steps to execute in order. Must include at least one output step (screenshot, pdf, or diff). Max steps depend on plan (20 Free/Hobby, 30 Starter, 50 Growth, 100 Scale); the server returns a clear plan_limit error if exceeded. Max 5 outputs.
cookiesNoCookies to set before navigation — "name=value" strings or full cookie objects (domain, path, secure, httpOnly, sameSite, expires). Up to 100. Domain defaults to the first navigate step's host.
blockAdsNoBlock advertisements on the page
darkModeNoEmulate dark color scheme (default: false)
viewportNoBrowser viewport size
authStateNoAuthenticated recording/capture: cookies + localStorage injected BEFORE the first navigation, so protected pages (dashboards, admin panels) render logged-in. Prefer this over scripting a login flow. Values are never logged.
blockChatsNoBlock live chat widgets
session_idNoPersistent session ID (Starter+ only). Reuse a live browser page created with create_session — browser state (cookies, localStorage, auth) carries over from previous requests in this session.
blockBannersNoHide cookie consent banners (default: false)
blockTrackersNoBlock tracking scripts
deviceScaleFactorNoDevice pixel ratio (default: 1)
observeAfterEachStepNoFREE (no extra request charged). After every step, attach a compact, token-budgeted state snapshot — page type + the top interactive elements (id/role/name/selector) + suggested actions, NO screenshot. Use this when a step might open a dropdown/popover/modal or navigate: read the trace to confirm what is now on screen and pick the right selector for the NEXT call, instead of blind-batching. Hidden/off-screen elements are filtered out.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changedv1.17.0
    • addedInput schema / properties / authState
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Authenticated recording/capture: cookies + localStorage injected BEFORE the first navigation, so protected pages (dashboards, admin panels) render logged-in. Prefer this over scripting a login flow. Values are never logged.",
      +  "properties": {
      +    "cookies": {
      +      "description": "Session cookies (up to 100). Objects may include domain, path, secure, httpOnly, sameSite, expires. Chrome-extension exports (sameSite: no_restriction/lax/strict, expirationDate) are accepted as-is.",
      +      "items": {
      +        "$ref": "#/properties/cookies/items"
      +      },
      +      "maxItems": 100,
      +      "type": "array"
      +    },
      +    "localStorage": {
      +      "description": "localStorage entries to set before the page loads (for token-in-localStorage apps)",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "items": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "name": {
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "name",
      +                "value"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "origin": {
      +            "description": "Origin the items belong to, e.g. \"https://app.example.com\"",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "origin",
      +          "items"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / cookies
      Added value: +{
      +  "description": "Cookies to set before navigation — \"name=value\" strings or full cookie objects (domain, path, secure, httpOnly, sameSite, expires). Up to 100. Domain defaults to the first navigate step's host.",
      +  "items": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "additionalProperties": true,
      +        "properties": {
      +          "domain": {
      +            "type": "string"
      +          },
      +          "expirationDate": {
      +            "type": "number"
      +          },
      +          "expires": {
      +            "type": "number"
      +          },
      +          "httpOnly": {
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "path": {
      +            "type": "string"
      +          },
      +          "sameSite": {
      +            "enum": [
      +              "Strict",
      +              "Lax",
      +              "None",
      +              "strict",
      +              "lax",
      +              "no_restriction",
      +              "unspecified"
      +            ],
      +            "type": "string"
      +          },
      +          "secure": {
      +            "type": "boolean"
      +          },
      +          "url": {
      +            "type": "string"
      +          },
      +          "value": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "value"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "maxItems": 100,
      +  "type": "array"
      +}
    • addedInput schema / properties / observeAfterEachStep
      Added value: +{
      +  "description": "FREE (no extra request charged). After every step, attach a compact, token-budgeted state snapshot — page type + the top interactive elements (id/role/name/selector) + suggested actions, NO screenshot. Use this when a step might open a dropdown/popover/modal or navigate: read the trace to confirm what is now on screen and pick the right selector for the NEXT call, instead of blind-batching. Hidden/off-screen elements are filtered out.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / steps / description
      Previous value: -"Array of steps to execute in order. Must include at least one screenshot or pdf step. Max 20 steps, max 5 outputs."New value: +"Array of steps to execute in order. Must include at least one output step (screenshot, pdf, or diff). Max steps depend on plan (20 Free/Hobby, 30 Starter, 50 Growth, 100 Scale); the server returns a clear plan_limit error if exceeded. Max 5 outputs."
    • changedInput schema / properties / steps / items / properties / action / enum
      Previous value: -[
      -  "navigate",
      -  "click",
      -  "dblclick",
      -  "fill",
      -  "select",
      -  "hover",
      -  "scroll",
      -  "wait",
      -  "wait_for",
      -  "evaluate",
      -  "screenshot",
      -  "pdf"
      -]New value: +[
      +  "navigate",
      +  "click",
      +  "dblclick",
      +  "fill",
      +  "select",
      +  "hover",
      +  "scroll",
      +  "wait",
      +  "wait_for",
      +  "evaluate",
      +  "press_key",
      +  "screenshot",
      +  "pdf",
      +  "diff"
      +]
    • changedInput schema / properties / steps / items / properties / delay / description
      Previous value: -"Pre-capture delay in ms (for screenshot action)"New value: +"Pre-capture delay in ms (for screenshot/diff actions)"
    • changedInput schema / properties / steps / items / properties / fullPage / description
      Previous value: -"Capture full scrollable page (for screenshot action)"New value: +"Capture full scrollable page (for screenshot/diff actions)"
    • changedInput schema / properties / steps / items / properties / fullPageScroll / description
      Previous value: -"Auto-scroll for lazy images (for screenshot action)"New value: +"Auto-scroll for lazy images (for screenshot/diff actions)"
    • addedInput schema / properties / steps / items / properties / html_b
      Added value: +{
      +  "description": "HTML of the comparison page (for diff action). The current page state is \"A\"; this HTML is rendered as \"B\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / steps / items / properties / key
      Added value: +{
      +  "description": "Key to press (for press_key action). Use Escape to dismiss a dropdown/popover/modal, Enter to submit, Tab to move focus.",
      +  "enum": [
      +    "Escape",
      +    "Enter",
      +    "Tab",
      +    "Backspace",
      +    "Delete",
      +    "Space",
      +    "ArrowUp",
      +    "ArrowDown",
      +    "ArrowLeft",
      +    "ArrowRight",
      +    "Home",
      +    "End",
      +    "PageUp",
      +    "PageDown"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / steps / items / properties / name / description
      Previous value: -"Name for the output (for screenshot/pdf actions)"New value: +"Name for the output (for screenshot/pdf/diff actions)"
    • changedInput schema / properties / steps / items / properties / selector / description
      Previous value: -"CSS selector for the target element (also used for element screenshots)"New value: +"CSS selector for the target element (also used for element screenshots; optional for press_key to focus a field first)"
    • addedInput schema / properties / steps / items / properties / selector_a
      Added value: +{
      +  "description": "CSS selector to capture on the current page as side \"A\" (for diff action). If omitted, captures the full viewport/page.",
      +  "type": "string"
      +}
    • addedInput schema / properties / steps / items / properties / threshold
      Added value: +{
      +  "description": "Pixelmatch sensitivity 0–1 (for diff action, default: 0.1). Lower = more sensitive.",
      +  "maximum": 1,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / steps / items / properties / url_b
      Added value: +{
      +  "description": "URL of the comparison page (for diff action). The current page state is \"A\"; this URL is rendered as \"B\".",
      +  "format": "uri",
      +  "type": "string"
      +}
    • changedInput schema / properties / steps / maxItems
      Previous value: -20New value: +100
  2. First observedv1.8.1

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose two useful traits not in the schema body: everything runs in a single browser session and each output counts as 1 API request (billing/cost behavior). It omits error behavior, plan-limit enforcement, and session reuse, though the schema's steps/session_id descriptions cover the latter two, lowering the marginal value added here.

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?

Three tight sentences, front-loaded with the core capability and ending on the cost model, with no filler. It is appropriately sized for a tool this broad, though the diff sentence could be folded in more economically.

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

Completeness3/5

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

For a complex 12-parameter tool with deeply nested step objects and no output schema, the description covers purpose and cost but says nothing about what the call returns, how outputs are delivered, or failure/plan-limit handling. The rich schema compensates for parameters, but the description is thin relative to the tool's complexity.

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 baseline is 3. The description adds only a high-level grouping of the action enum (click, fill, select) and one note about the diff step, which does not add syntax or semantics beyond the already thorough per-property schema descriptions.

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

Purpose4/5

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

States a specific verb (Execute) and resource (multi-step browser automation sequence) and enumerates the action families it covers (navigate, click/fill/select, screenshot/PDF/diff). An agent can distinguish it from single-purpose siblings like take_screenshot or act_on_page, but the description never names those siblings to make the contrast explicit.

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

Usage Guidelines3/5

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

Gives one concrete usage hint (use the "diff" step to compare the current page state against another URL after automation), which is genuine guidance. However, it never says when to prefer this over act_on_page or take_screenshot, nor when a single-step tool is the better choice, leaving the core routing decision to inference.

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