Skip to main content
Glama

browser_take_snapshot

Captures a tab's current elements, positions, URL, title, and blocking popups so you can act by element number and take a fresh snapshot after page changes.

Instructions

Look at a tab: returns one line per element, the page position, the tab's URL and title, any popups blocking it, and a snapshotId. Every actionable element carries a number (emsn) at the start of its line — act on the number, never on pixel coordinates. Take a fresh snapshot after anything that changes the page, to see what it became: elements that appear have no number until then. Says so when the page is a PDF, a browser error page or a crashed tab, each of which makes the obvious next move useless. Give tabIds to look at several tabs in one call; each comes back with its own snapshotId. Marks on a line: collapsed (in a closed section: open it first), modal (the page outside it takes no clicks), hover-only (may do nothing on a click), also dblclick / drag / ... (other listeners, perhaps only tracking; the list misses some: a list item without drag may still drag, a spreadsheet cell without right_click may still take one: try it and snapshot), options (a dropdown's choices), readonly (takes no typing; clicking it often opens the page's picker), aria-readonly (the page says not to type, typing still goes in).

Input Schema

NameRequiredDescriptionDefault
tabIdNoTab to act on. Defaults to the foreground tab of that window.
formatNotext (default): one line per element, several times smaller. json: the browser's raw annotatedContent tree, for tools that parse it themselves.
tabIdsNoSeveral tabs at once, in any windows, instead of tabId.
windowIdNoWindow to act on. Defaults to the frontmost window.
showLinksNoMark each link with a footnote, [^3], and list the addresses after the elements. Turn it on when you need addresses: to hand search results to browser_read_pages, or to see where a link goes. A page may change a link on click; to be sure of the address, open it.
timeoutMsNoHow long to wait for the page to settle.
includeImageNoAlso return the annotated screenshot. Off by default because images are large; turn it on when the page needs looking at (dates, layout, visual confirmation).
readWholePageNoRead the page around the screen too (about 8000px each way), not just the screen. The image stays one screen; lines off it are marked offscreen and are still acted on by emsn. Several times larger, so use it to search or read a whole page, not on every look.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and it does well: it discloses the emsn numbering contract (act on numbers, not pixels), that PDFs/error pages/crashed tabs are flagged, popup blocking, and staleness semantics. However, it never states the observation is read-only/safe, nor any rate/size limits beyond the readWholePage warning, leaving the agent to infer safety for a browser-inspection tool.

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?

Front-loaded with the core return contract, which is good, but the sentence is a single dense run-on that crams the marks legend, PDF/error/crash handling, multi-tab behavior, and staleness into one paragraph. The marks list ('also dblclick / drag / ...') is valuable but buried and slightly rambling; a short bullet structure would scan far better.

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 and 8 parameters, the description fully explains the return shape (one line per element, position, URL/title, popups, snapshotId), the emsn numbering model, and the special page states. An agent has everything needed to call it and interpret results correctly.

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, but the description adds real semantic value: it explains what snapshotId means and that each tab gets its own, that showLinks produces [^3] footnotes for handing to browser_read_pages, and that readWholePage keeps one screen while marking offscreen lines still emsn-actionable.

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?

States a specific verb ('Look at a tab') and enumerates exactly what comes back: one line per element, page position, URL/title, blocking popups, snapshotId. This clearly distinguishes it from browser_read_pages and the action tools (browser_click, browser_input_text), which mutate rather than observe.

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/when-not guidance: take a fresh snapshot after anything that changes the page, give tabIds to look at several tabs in one call, enable showLinks only when addresses are needed, enable readWholePage to search/read a whole page 'not on every look'. It even warns that snapshot marks may under-report listeners ('try it and snapshot').

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