Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VEIL_CHROMENoPath to the Chrome/Chromium executable. If not set, the server assumes Chrome/Chromium is on the system PATH.
VEIL_CDP_URLNoA host:port or WebSocket URL of an already running Chrome instance with remote debugging enabled. When set, the MCP server attaches to that browser instead of launching its own.
VEIL_HEADLESSNoSet to '1' to run the browser in headless mode. If unset, the server runs in headful mode (using an auto-managed Xvfb when no display is available) for the strongest stealth fingerprint.

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
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
veil_gotoA

Navigate the browser to a URL (launches Chrome on first call). waitUntil 'load' (default) or 'networkidle' (wait until no network for ~500ms — better for SPAs that fetch after load).

veil_reloadA

Reload the current page. waitUntil 'load' (default) or 'networkidle'.

veil_backA

Go back one entry in session history (errors if there's nothing earlier). waitUntil 'load' (default) or 'networkidle'.

veil_forwardA

Go forward one entry in session history (errors if there's nothing later). waitUntil 'load' (default) or 'networkidle'.

veil_snapshotA

Return the page as a numbered list of interactive elements from the accessibility tree. Use the [ref] numbers with veil_click / veil_fill. No CSS selectors needed.

veil_clickB

Click an element by its snapshot ref (human-like mouse path).

veil_fillC

Click a field by ref and type text into it (human cadence).

veil_typeC

Type text into the currently focused element.

veil_selectA

Set a dropdown (by snapshot ref) to a value and fire input+change — the reliable way to drive a native , which click+type can't. Value matches an option's value, then its visible label/text.

veil_pressA

Press a single named key on the focused element. Use 'Enter' to submit a search box or form (fill a field, then veil_press Enter). Supported: Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown.

veil_scrollA

Scroll the page by a pixel delta via a real mouse-wheel event (positive dy scrolls down, positive dx scrolls right). Reveals lazy-loaded / off-screen content; re-run veil_snapshot after.

veil_set_viewportA

Set the viewport size (and optional deviceScaleFactor / mobile emulation) — the page sees this as window.innerWidth/Height, screen size, and devicePixelRatio. Emulate a phone or force a fixed desktop size for reproducible screenshots.

veil_set_user_agentA

Override the User-Agent at runtime, keeping the Sec-CH-UA client-hint brands aligned with it (a bare UA with mismatched hints is a fingerprint tell).

veil_set_fingerprintA

Apply a COHERENT fingerprint/profile — UA + client hints + navigator.platform, screen, timezone/locale/geolocation, WebGL vendor/renderer, and seeded canvas/audio noise, all internally consistent. Pass a preset name, random:true (+ optional seed for a deterministic identity), or a full fingerprint object. Call this BEFORE veil_goto for full effect: the injected values take hold on the next navigation; the UA/client-hint/timezone/screen overrides apply immediately. This is coherent identity control, not a magic bullet.

veil_block_resourcesA

Block resource loads to speed up scraping and shrink your footprint — by type (image, font, media, stylesheet, script, xhr, fetch, document, websocket, ...) and/or by URL substring. Calls accumulate; coexists with the private-network guard. Lift with veil_unblock_resources.

veil_unblock_resourcesA

Lift all resource blocking set by veil_block_resources (leaves the private-network guard untouched).

veil_wait_forA

Poll a JS expression in the page until it is truthy, instead of a fixed sleep — e.g. "document.querySelector('.results')". Returns when the condition holds; errors on timeout.

veil_wait_for_selectorA

Poll until a CSS selector matches, then return (the selector-shaped convenience over veil_wait_for). Pass visible:true to also require the element to be laid out and not display:none/visibility:hidden. Errors on timeout.

veil_click_atA

Trusted click at absolute viewport coordinates (x, y). Use when there is no snapshot ref to target — a canvas, map, or custom widget.

veil_get_cookiesA

Return the browser's current cookies as JSON (name, value, domain, path, expires, httpOnly, secure, sameSite, ...). Symmetric with cookie injection. Optionally pass urls to scope the read to specific origins.

veil_uploadA

Attach local files to a file (even a hidden one) without an OS file picker. Paths must be absolute. selector defaults to the first input[type=file]; pass a specific one if the page has several.

veil_upload_via_pickerA

Attach files through a control that opens a file picker (SPAs like Gemini that create the lazily on click). Pass the snapshot ref of the trigger element and absolute file paths.

veil_textB

Read one element's rendered text (innerText) by snapshot ref — a price, status, or result cell — without dumping the whole page.

veil_attributeA

Read one attribute of an element by snapshot ref (e.g. href, value, aria-label, a data-* attribute). Returns the raw string, or null if absent.

veil_screenshotA

Capture a PNG screenshot (returned as an image for vision). Default is the current viewport. Pass a snapshot ref to shoot just that element's bounding box, clip for an explicit {x,y,width,height} page rectangle, or fullPage:true for the whole scrollable page.

veil_evalB

Evaluate a JS expression in the page and return the value.

veil_pdfA

Render the current page to a PDF and save it to disk — Chrome prints PDF in HEADLESS mode only (VEIL_HEADLESS=1). Pass path for the output file, or omit to write a temp file; returns the saved path. Options: landscape, printBackground (default true), scale, pageRanges.

veil_fedcm_enableA

Arm FedCM interception BEFORE navigating to a site that shows a Google/federated 'one-tap' sign-in on load. Order: veil_fedcm_enable -> veil_goto the sign-in page -> veil_fedcm_signin. (Skip this for an active 'Sign in with Google' button; veil_fedcm_signin arms itself when you pass a triggerRef.)

veil_fedcm_signinA

Complete a federated ('Sign in with Google', FedCM) login that Chrome renders as a native chooser no click can reach: waits for the intercepted account chooser, selects an account, and returns it. Pass triggerRef to first click an active sign-in button; omit it for one-tap/passive flows (call veil_fedcm_enable before navigating). accountIndex defaults to 0.

veil_closeA

Close the browser.

veil_dragA

Drag from one point to another — real mousedown -> mousemove(button held) -> mouseup, not the HTML5 drag events. Use this for 'drag a card onto a canvas' UIs (site/page builders, Kanban boards, sortable lists) whose drop targets don't respond to a plain click. Pass ref for the source if it has a snapshot ref, otherwise fromX/fromY; the destination is almost always a plain div with no ref, so give toX/toY read off a veil_screenshot.

veil_framesA

List cross-origin child iframes discovered on the current page (e.g. a drag-and-drop site builder whose whole canvas is one iframe on a different subdomain). Same-origin iframes don't need this — they already show up in a normal veil_snapshot. Call after veil_goto if a page you expect to interact with returns '(no interactive elements)'.

veil_use_frameA

Point every following veil_snapshot/veil_click/veil_fill/veil_type/veil_eval call at one child iframe (index from veil_frames), instead of the main page. Omit index (or pass null) to switch back to the main page. Existing refs are invalidated on switch — call veil_snapshot again after switching.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/acunningham-ship-it/veilbrowser'

If you have feedback or need assistance with the MCP directory API, please join our Discord server