Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
AGENT_EYES_CONFIGNoPath to a custom settings file, overriding the default .agent-eyes/settings.json discovery.
AGENT_EYES_BROWSERNoHow the browser is obtained: "managed", "headless", "headed", or "cdp".managed
AGENT_EYES_CDP_URLNoDevTools endpoint for browser mode "cdp" (e.g. http://localhost:9222).
AGENT_EYES_HEADLESSNoManaged mode only: run Chrome with no visible window (--headless=new), keeping the real-Chrome fingerprint and logged-in profile.true
AGENT_EYES_ALLOW_EVALNoSet to "1" to enable the standalone evaluate_script tool, which runs JavaScript in the page.0
AGENT_EYES_VISIBILITYNoVisibility mode: "on-demand" (never steal focus; only await_human_interaction shows a window) or "always" (keep a visible window foregrounded, implies headless false).on-demand
AGENT_EYES_CHROME_PATHNoPath to the Chrome/Chromium/Edge executable. "auto" detects a real Chrome.auto
AGENT_EYES_PROFILE_DIRNoPersistent Chrome profile directory for managed mode. Defaults to ~/.agent-eyes/chrome-profile when unset.
AGENT_EYES_CHROME_FLAGSNoExtra Chrome flags as a JSON array string, e.g. ["--no-sandbox"].[]
AGENT_EYES_CHROME_KEEPALIVENoLeave the managed Chrome running between sessions for an instant warm reconnect.true

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
capture_page_screenshotA

Screenshot a URL at one breakpoint. Opens or navigates the persistent session — cookies, logins and page state survive across calls, and re-requesting the already-open URL does not reload it. The full-resolution render is always saved under .agent-eyes/captures/ and its path reported; format, quality, maxWidth and sizeMode control what the wire image costs.

matrix_responsive_auditA

Capture one URL at all four breakpoints in a single call, webp-compressed to keep a four-image turn affordable (sizeMode "thumb" shrinks it further). All four full-resolution renders are saved to one run directory and their paths reported; the previously active viewport is restored afterwards.

capture_elementA

Screenshot ONE element, cropped to its bounding box — far cheaper than a full page when you only need a button, card, or nav. Navigates, applies the optional viewport, scrolls the selector's first match into view, and crops. The full-resolution crop is saved to disk; a webp thumbnail goes on the wire.

label_interactivesA

Set-of-mark prompting: paints a numbered badge over every interactive element in the viewport — links, buttons, inputs, selects, ARIA widgets, anything with a pointer cursor — and returns the marked screenshot plus a legend mapping each number to a stable, unique selector and its accessible label. Pick your target off the picture by number, then act on its exact selector with interact_and_audit. The overlay is removed after capture.

compare_to_baselineA

Visual regression checkpointing. set_baseline renders the URL at the given breakpoint and saves a lossless PNG baseline; diff_against_baseline re-renders and pixel-diffs against it, returning a variance score, dimension drift, and a red-on-grayscale delta overlay that is also saved to disk. fullPage covers the whole scroll height as a separate baseline. Scroll is reset to the top first, so earlier interactions cannot misalign the comparison.

visual_diff_regionsA

Visual regression that points at code, not pixels: diffs the current render against a saved baseline, clusters the changed pixels into regions, and hit-tests each against the live DOM — so you get "button.cta-primary — 1,240 changed px" instead of "3.2% of pixels changed". A delta overlay is saved to disk. Requires a baseline from compare_to_baseline with matching fullPage.

detect_layout_matrixA

Zero-image layout diagnostics across all four breakpoints in one call. An in-page script measures the DOM and flags horizontal overflow, container spill or clipping, silently truncated text, destructive collisions, and sub-44px tap targets on mobile. Findings carry unique, addressable selectors. With annotate (default on), each breakpoint with findings also gets a red-outline render saved to disk and reported by path, costing no image tokens.

find_breakpointsA

Zero-image responsive stress test: steps the viewport width from minWidth to maxWidth, probing horizontal overflow at each stop, and reports the exact width ranges where the layout breaks — the ones the four named viewports skip over. Restores the prior viewport afterwards.

measure_layout_shiftA

Cold-load CLS diagnostic: arms a layout-shift observer BEFORE the page parses, reloads, watches ~2s, then reports the aggregate score (good ≤ 0.10, poor > 0.25) and the exact elements that jumped, ranked by attributed shift — jank no static screenshot shows. Zero image tokens. Rebuilds a pristine page, discarding any in-page state.

interact_and_auditA

Perform ONE interaction on the currently open page, then return a webp screenshot AND a fresh text layout audit of the resulting state, so breakage from an expanded menu, an active tab, or an opened modal shows up immediately. Gestures, blocking waits, and pointer gestures on viewport pixel coordinates are all available — see action for what each one needs. An ambiguous selector acts on the first match and says so. Pass viewport to switch breakpoints before the selector resolves, ignoreSelector to mute known layout noise. Open a page with capture_page_screenshot first.

run_interaction_sequenceA

Batch pipeline for multi-step flows such as forms and nested menus: navigates, optionally matches a viewport, then runs the steps in one fast loop and returns ONE screenshot plus ONE layout audit after the final step — far cheaper than chaining interact_and_audit. Steps mix gestures, waits, expect_* assertions and evaluate_script, so a single call can drive AND verify a flow. A failing gesture or wait aborts at its index with earlier steps applied; failed expect_* checks let the flow finish but mark the whole response a FAILURE.

measure_elementA

Zero-image element inspector: one element's live rendering spec from getComputedStyle and getBoundingClientRect — dimensions, position, typography, computed padding and margin, and ancestor-composited foreground/background colors with a WCAG AA (4.5:1) / AAA (7:1) contrast verdict including the large-text relaxation. Verifies design-system and a11y specs without image tokens.

scan_accessibilityA

Zero-image WCAG foundation audit of the live DOM. Flags missing alt (or empty alt not declared decorative), heading hierarchy breaks (h2 → h4, or a document whose first heading starts deeper than h2), and inputs, selects, textareas and buttons with no computable accessible name — placeholders do not count. Grouped text report with unique, addressable selectors.

review_designA

Zero-image DESIGN audit — the taste counterpart to scan_accessibility. Measures the page's actual design system (palette, type scale, weights and families, spacing rhythm, radii, shadows) and flags design smells: too many font sizes or colors, off-grid spacing, cramped or over-long or sub-16px body text, inconsistent radii, near-miss alignment — each with an addressable selector.

extract_design_tokensB

Turn "make it look like " into a buildable spec: the palette with inferred roles (page background, surfaces, text, accent, accent gradient), the type scale, body size, weights and fonts, the spacing base and scale, radii and shadows — as an inferred-roles summary plus a pasteable CSS :root block. Optionally saved to .agent-eyes/styles/.

extract_site_designA

Crawl a handful of same-origin pages (nav links first) and return ONE consolidated design brief: the system merged across pages — fonts by role, color roles, type ramp, spacing, radii, shadows, ranked by cross-page frequency so the real system wins — plus each page's section anatomy and a pasteable CSS :root + Tailwind theme. Design and structure only, never copy, images, or logos.

manage_sessionA

Reach authenticated pages. set adds cookies, localStorage seeds and extra headers to the persistent session, applied to the live context and replayed onto any future one so they survive a crash. save snapshots cookies + localStorage to .agent-eyes/sessions/.json (gitignored — it holds plaintext tokens); load restores a snapshot by recreating the context, after which you navigate to use it; clear drops everything.

authenticate_loginA

Log the user into a site with THEIR account, without the AI ever seeing the credentials. The human types username and password into a localhost secure page; the server fills them in, submits, and returns ONLY a status: success, otp_required (then call submit_2fa_code), error, push_wait, or unknown. Selectors are auto-detected when omitted, and the ones used are reported so a retry can correct them. NEVER returns a screenshot, since a 2FA or error page can render secrets — capture separately after success, then manage_session action=save. Blocks until the human answers the prompt or 180s elapse. The first sign-in to each new site asks for consent unless assumeConsent is set.

submit_2fa_codeA

Complete a two-factor challenge raised by authenticate_login, without the AI ever seeing the code. The human types the current one-time code into a localhost secure page; the server fills the auto-detected code field, submits, and returns ONLY a status: success (then manage_session action=save), error, or unknown. Acts on the page authenticate_login left behind and never navigates. Blocks until answered or 180s elapse.

enroll_credentialsA

Save a profile's credentials to the encrypted vault (.agent-eyes/vault.json, AES-256-GCM) so later logins run with no human present: authenticate_login source=vault and submit_2fa_code source=totp pull from it. The human types every secret — the master passphrase, username, password, and with withTotp the authenticator seed — into the localhost prompt; the AI never sees any value. Optionally stores loginUrl and form selectors too. Returns a non-secret summary.

manage_vaultA

Keep the credential vault recoverable. status reports whether a vault exists, whether it is unlocked, and its profile names — never secrets. reset permanently DELETES the vault after the human types RESET into the secure prompt, the escape hatch for a forgotten passphrase; re-enroll afterwards. change_passphrase re-encrypts every profile under a new one.

await_human_interactionA

Hand the live browser to the human for something the AI cannot or must not automate — a Cloudflare "Verify you are human" check, a CAPTCHA, an interstitial. It never solves the challenge and never bypasses anti-bot protection: it puts a window on screen, shows a localhost prompt with your reason and a Done button, and BLOCKS until the human clicks Done, the page reaches expectUrlContains, the human cancels, or timeoutMs elapses. Returns status (completed | cancelled | timeout) and the current url. The ONLY tool that shows a window: managed mode browses invisibly and is relaunched visibly here, so unsaved in-page state is lost. Headless mode returns a clear error instead of hanging.

manage_tabsA

Keep several real tabs open at once and switch between them by a label you assign — a preview in one, a staging site in another, neither losing its state. open opens a named tab and makes it active, switch activates an existing one, close closes one (never the last), list returns each tab's label, url, viewport and active flag. Every OTHER tool acts on the ACTIVE tab. The default tab is "main".

verify_fixA

Confirm a fix REACHED the deployed site rather than a stale local tab. Reloads the URL by default, evaluates small measurable assertions per element, and returns a per-check PASS/FAIL table of measured vs expected plus an overall verdict — a failed verdict marks the response an error, so verify-loops and CI catch it. This is what catches "the tool said fixed but production still has the bug".

mock_routeA

Stub matching requests with canned responses, so flaky or third-party endpoints cannot change what you capture. add registers a URL glob → {status, contentType, body, headers}; clear removes stubs by pattern or all; list shows the active ones. Stubs are context-level: they survive navigations and a crash until cleared. Only sub-resources can be mocked, never the top-level navigation.

wait_for_responseA

Wait for a network response whose URL matches a pattern, and report its status, method, content-type and size, plus an optional body snippet. An optional trigger interaction fires AFTER the waiter is armed, so a fast response cannot be missed (click Save, await POST /api/save). On timeout it lists the responses it did see, to help fix the pattern. Acts on the open page.

generate_audit_galleryA

Build .agent-eyes/gallery.html — a sortable contact sheet of every screenshot in a capture run, clean and annotated, each with URL, viewport, tool, selector, timestamp, dimensions and issue count, thumbnails linking to the full-resolution files. Aggregates every run unless you scope it to one. Returns the gallery path for a human to open.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 27 tools

Disambiguation3/5

Many tools overlap in purpose (capture_page_screenshot vs matrix_responsive_audit vs capture_element, compare_to_baseline vs visual_diff_regions, scan_accessibility vs review_design). Detailed descriptions help differentiate them, but an agent could still hesitate between similar-sounding audit and capture tools.

Naming Consistency5/5

Tool names consistently follow a clear verb_noun snake_case pattern (authenticate_login, capture_element, manage_session, scan_accessibility). Even multi-word names like compare_to_baseline and run_interaction_sequence maintain the same grammatical style and predictable structure.

Tool Count2/5

27 tools is a large surface for a single server, exceeding the 25+ threshold. While many serve distinct QA purposes, the set feels heavy compared to typical well-scoped servers, and several tools could be consolidated (e.g., baseline/diff tools, multiple audit tools).

Completeness4/5

The tool surface covers the full browser QA lifecycle: authentication, session persistence, screenshots, interaction, responsive layout, accessibility, design extraction, visual regression, network mocking, and verification. Minor gaps exist (e.g., no explicit DOM text extraction or page source tool), but agents can work around them with existing gestures and evaluate_script steps.

Maintenance

ActivityMaintained
ResponsivenessNo issues