Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HEADLESSNoAdd --headless to run Chrome in headless mode instead of headed mode.false
ISOLATEDNoAdd --isolated to use a fresh isolated profile; isolated servers never share.false
AUTO_CONNECTNoAdd --auto-connect to auto-connect to a running Chrome instance.false
CDP_ENDPOINTNoAttach to a running Chrome instance via the --cdp-endpoint flag.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
sessionA

Browser session: status (mode, headless, browser version, profile, tabs, active tab), launch (restart with new options; tabs are not carried over, cookies persist in a persistent profile), close (close the browser in launch mode, disconnect in attach modes).

tabsA

Tabs: list ("t1 "Title" url (active)"), new (optionally at url, becomes active unless background:true; returns a viewport snapshot when url is given (call snapshot for the whole page)), select (make active; brings it to the front in headed mode), close (default the active tab; the previously active tab becomes active). Tab ids are never reused; popups are registered automatically.

navigateA

Go to a URL (scheme-less gets https://), or back/forward/reload. Returns "[tN] navigated "" ()" and a viewport snapshot (call snapshot for the whole page; snapshot:false to skip, snapshot:true attaches the whole page). HTTP error statuses are reported, network failures are errors with the net::ERR code. A page that loaded (committed) but did not reach wait_until within timeout_ms is not an error: the result adds "(still loading: …)"; only a navigation that never committed is an error, and it is stopped.

snapshotA

Compact accessibility snapshot of a tab: one line per element "- role "name" eN attrs", indented by nesting; iframes are inlined. interactive mode (default) lists controls, headings, landmarks, dialogs, alerts; full adds text, lists, tables, images. Page with offset (line offset) when the footer says so.

screenshotA

Screenshot of the viewport (default), the full page, or a target element. Default jpeg quality 70, long edge at most max_edge (1280). Afterwards, "x,y" targets use this image's pixel coordinates. annotate draws each visible ref label on its element (removed before returning). save writes it under /screenshots/.

readA

Main content of the page (or of target) as markdown: title, headings, paragraphs, lists, links as text, simple tables. Navigation, footers, cookie banners, sidebars and ads are excluded. Long content is cut at max_chars content chars and ends with "… more chars (offset= to continue)"; pass that offset for the next page.

findA

Find elements by case-insensitive substring over accessible name, visible text (also text split across elements: the smallest element holding it), placeholder, label and value, in all frames. Exact matches first. An empty query with a role lists every element of that role. Each hit is a snapshot line with its ref, followed by a line " in ".

clickA

Click a target (ref, "x,y", or selector). Auto-waits for the element to be visible, stable, enabled and not covered. Returns an effect summary (navigation, new tabs, dialogs, downloads, live-region announcements as → alert (not JS dialogs), console errors).

typeA

Type text into a field (input, textarea, contenteditable). Replaces the value by default; append adds to it; slowly sends key-by-key events (autocomplete widgets); submit presses Enter afterwards. The typed text is never echoed.

fill_formA

Fill several fields in one call and optionally click submit (only if every field succeeded). Values: text-like fields take a string (replaced); select takes an option value or label (string[] for multiple); checkbox/switch take a boolean; radio takes true, or a label/value on any radio of the group; file inputs take path(s) inside the allowed roots; date/time/color/range take the string value. One result line per field; values are never echoed.

pressA

Press keys or chords in order, e.g. ["Tab"], ["Control+a"], ["Meta+Shift+K"], ["ArrowDown","Enter"]. target is focused first.

hoverA

Move the mouse over a target (reveals :hover menus and tooltips).

scrollA

Scroll the page or a container. Without direction/to, target is scrolled into view. With direction (amount px, default 80% of the viewport/container) or to top|bottom, target is the scroll container (default the page). Reports "scrolled y=/ viewport=" and a height change (infinite scroll).

dragA

Drag from one target to another with real mouse events; works for HTML5 drag-and-drop and pointer-event drags.

uploadA

Upload files: target is an input[type=file] (files set directly) or an element that opens a file chooser (intercepted; no native dialog appears). Paths must resolve inside the allowed roots (cwd, output dir, ~/Downloads, ~/Desktop, ~/Documents, --allow-file-root); dot-files are refused unless --allow-hidden-files.

dialogA

Accept or dismiss the pending JS dialog (confirm, prompt, beforeunload) on a tab; text answers a prompt. Alerts are auto-accepted.

waitA

Wait for exactly one condition: text (appears), text_gone, target with state (visible default, hidden, attached, detached), url (substring or /regex/), load_state, or ms (unconditional, at most 30000). On timeout the error names the condition.

evaluateA

Run JavaScript in the page. script is an expression or a function source; a function is called with the target element (or no argument). Promises are awaited. The result is JSON (truncated); DOM elements are rendered as snapshot lines with refs. Page exceptions are returned as errors.

videoA

Watch videos on the page (all frames, incl. cross-origin iframes). list: one line per video (ref, frame, src, duration, time, paused, muted, volume, rate, size, readyState, text tracks). play/pause/seek(time)/set(rate, muted, volume, loop). frames: images by element screenshot, each preceded by "frame i/n @ mm:ss.ss": times=[s…] (seek each), count (default 6, evenly spaced over start..end), or every_ms + duration_ms (sample while playing); seek-based capture restores time and paused state; all-black frames (DRM) are flagged. captions: text-track cues as "mm:ss.ss-mm:ss.ss text", optional start/end window. Default target: the largest visible playing video, else the largest visible one.

consoleA

Console messages and uncaught page errors of a tab, buffered from tab creation (at most 500): "[level] hh:mm:ss.mmm message (url:line)". level error|warning (warnings and errors)|all; pattern is a substring or /regex/; clear empties the buffer after reading.

networkA

Requests of a tab (at most 1000): "r METHOD status|failed: type url ms ". Filter by pattern (substring or /regex/), type (document, fetch, xhr, script, …), failed_only (network failures and HTTP >= 400). request_id shows headers (credentials redacted) and the body (text truncated at 10k; binary shows its size).

batchA

Run up to 50 tool calls sequentially in one call: steps [{tool, args}]. Each step's output is under "## step : " (images kept). stop_on_error (default true) lists the remaining steps as skipped after a failure. Over the output cap, every step keeps its header and first line and the rest is shared; a cut step ends with "… chars cut from step ". batch cannot nest.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target clearly distinct purposes (click vs hover vs drag vs upload; console vs network vs video). A few pairs could be confused at a glance—snapshot/read/find all extract page content, and type/fill_form/press all input text—but the descriptions draw sharp boundaries (accessibility tree vs markdown vs text search; single-field vs multi-field vs key chords).

Naming Consistency4/5

All names are lowercase snake_case, and there is a coherent underlying convention: verbs for actions (navigate, click, scroll) and nouns for subsystem controllers (session, tabs, console, network, video). Only fill_form breaks the single-word pattern, and the verb/noun split is a minor deviation rather than a real inconsistency.

Tool Count4/5

22 tools is on the heavy side, but browser automation is genuinely broad and each tool maps to a real capability (video, network, console, batch are legitimate subsystems rather than filler). Slightly over-scoped but nothing feels redundant enough to remove.

Completeness4/5

The surface covers navigation, interaction, forms, dialogs, uploads, extraction, screenshots, network, console, media and batching—an unusually complete lifecycle for a browser agent. Minor gaps: no direct cookie/storage manipulation, no download-management tool (only reported as a click effect), and no explicit viewport/resize control outside launch options.

Maintenance

ActivityMaintained
ResponsivenessNo issues