Skip to main content
Glama

browser.observe

Read-only

Capture the current browser state—interactables, tabs, console, and a perception summary—so you can inspect a page and decide the next action.

Instructions

Capture the current browser observation: interactables, tabs, console, and a perception summary. Presets: 'text' — no screenshot or OCR: interactables, accessibility tree and the first 2,000 characters of page text; for text-only models. 'fast' — screenshot only, returned as an image, no text/accessibility extraction; for vision models. 'normal' (default) — text plus a screenshot URL and OCR. 'rich' — normal with twice the interactables and 4,000 characters of text. To read a whole page, use browser.get_html with text_only=true. On Chrome's error page for a navigation the pre-request gate stopped, blocked_navigation says what was stopped and why.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "browser.observe"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMost interactable elements to return.
detailNo'compact' (default) leaves out what choosing the next step does not need: the full session record (see browser.get_session), remote-access diagnostics and, for actions, the pre-action snapshot. 'full' returns the complete payload.compact
presetNotext: page text and interactables, no screenshot. fast: screenshot and title only. normal: both. rich: more text and twice the interactables. Omitted: the deployment default.
session_idNoTarget session id, from browser.create_session or browser.list_sessions. Optional when exactly one session is live; observe and act tools create one when none is.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.8.1
  2. Removedv1.4.2
  3. Changed1 schema field changedv1.4.2
    • addedInput schema / properties / session_id / description
      Added value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
  4. Changed5 schema fields changedv1.0.3
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / limit / maximum
      Previous value: -100New value: +200
    • addedInput schema / properties / preset
      Added value: +{
      +  "default": "normal",
      +  "enum": [
      +    "fast",
      +    "normal",
      +    "rich"
      +  ],
      +  "title": "Preset",
      +  "type": "string"
      +}
    • addedInput schema / properties / session_id / maxLength
      Added value: +120
    • addedInput schema / properties / session_id / minLength
      Added value: +1
  5. First observedv0.5.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld and non-idempotent, so the safety profile is covered; the description adds value beyond that by explaining the presets' return shape (image vs text vs OCR) and by disclosing the blocked_navigation field on Chrome's gate error page. It stops short of describing pagination or size limits on the returned payload.

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 core statement is front-loaded and the preset list is parallel and scannable, with the get_html redirect placed last as an escape hatch. Slight redundancy with the preset enum descriptions costs a point.

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?

With no output schema, the description carries the burden of explaining what comes back, and the preset breakdown does that well, including the blocked_navigation diagnostic. Minor gaps remain around payload size/pagination and why idempotency is false for a read-only capture.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description earns extra by giving the intent behind each preset ('fast — screenshot only ... for vision models', 'rich — twice the interactables and 4,000 characters'), which the schema enum only paraphrases. limit, detail and session_id are left entirely to the schema.

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 and resource: 'Capture the current browser observation: interactables, tabs, console, and a perception summary.' That enumerates the payload and separates it from siblings like browser.screenshot and browser.get_html before the reader reaches either 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?

Explicitly routes by capability ('for text-only models', 'for vision models'), names 'normal' as the default, and redirects whole-page reads to browser.get_html with text_only=true. Both when-to-use and a concrete alternative are stated.

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