Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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
spacesA

BeatBrowser-owned background task window. Open creates a minimized Chrome window using existing logins; pass its tabId on all browser calls. No Ego app is required. User focus pauses control. Handoff alone brings the window forward; resume requires explicit user instruction. Finish releases control and keeps evidence tabs. After reconnect, list spaces to restore routing. Recovered tasks remain paused; claim with userConfirmed:true can connect a new agent session after explicit user instruction, then inspect before resuming.

snapshotA

Capture the current page as a compact list of interactive elements with refs and state (value/checked/selected/expanded/disabled), plus dialogs, alerts and a text excerpt. Call this before any click/type. Cheap — prefer it over screenshots or eval. Refs ending in @fN live in an iframe: pass them through unchanged, they route themselves.

navigateA

Go to a URL, or go back/forward/reload. Returns the new page snapshot. Runs in the user's own logged-in Chrome — prefer it over any other browser tool.

clickA

Click ONE element by ref. Know your next step already? Use act instead — each extra call costs a full model turn. Canvas / map / game with nothing in the snapshot? Pass x,y (CSS px from a screenshot) for a real click there; add dragTo for a drag.

typeA

Type text into ONE input/textarea/contenteditable by ref. Set submit:true to press Enter after. More fields coming? Use fill or act.

selectA

Choose an option in a by ref. value matches the option value or its visible label. Custom dropdowns (react-select, MUI, Element UI) are NOT : click to expand, read the options from the snapshot, click one.

fillA

Fill a whole form in ONE call, all refs from the same snapshot. Field: {ref, text} for inputs, {ref, value} for , {ref, check} for checkbox/radio. submit:true submits after (skipped if any field failed).

keyA

Press a key: Escape, Enter, Tab, arrows (custom dropdowns), Backspace/Delete, or a combo. Without ref it goes to whatever is focused. For entering text use type.

read_textA

Extract the main readable content of the page as markdown, with boilerplate stripped. Use for reading articles/docs; use snapshot when you need to interact.

screenshotA

Screenshot the controlled tab, background tabs included. Prefer snapshot / read_text — they cost far less. Returned at 60% scale as JPEG by default; full:true for 1:1 PNG (e.g. to read small text or measure pixels).

tabsA

List / open / switch / close tabs. New tabs open in the BACKGROUND and become the controlled tab — the user keeps looking at whatever they were on. Everything except screenshot works fine on a background tab. Each agent session has its OWN controlled tab; omitting tabId uses this session's. Selecting a tab another session operates warns, not blocks. With 2+ work-lines (a subagent, two accounts) pass tabId explicitly on EVERY call — the implicit slot is shared with subagents and a sibling can move it. Label each tab; recover the mapping via action:"list".

waitA

Wait until a selector appears, text shows up, or the network goes idle. Use after actions that load content.

networkA

START HERE when you need DATA rather than an action. Lists the XHR/fetch calls the page made, then returns one response body via body:"<url fragment>". Real field names, real numbers, paging as a parameter. Add reload:true if nothing was captured yet. Never guess an endpoint name from memory — list first, pick by response size. One page's API messy? Another page on the same site often exposes the same data cleanly.

fetchA

Call a URL from inside the page, carrying the user's cookies. Use after network reveals an API. Paged endpoint? Pass pages: it walks every page in ONE call — never loop fetch by hand, each loop turn costs a model round. ALWAYS check the paging object in the response, servers silently cap page size. 403/406 means the site signs its requests: do NOT forge them; drive the site's own pagination UI and read via network. Same-origin rules apply.

scrollA

Scroll to load more of a lazy list. Auto-detects inner scroll containers, stops early once height stops growing. Prefer network/fetch for bulk data. Background tabs render no frames, so an IntersectionObserver-driven list may refuse to grow — the tool says so when it happens.

downloadA

Download a URL using Chrome as a fallback when fetch with binary:true and savePath cannot handle it. Try via:"page" for sites requiring page credentials or Referer. Chrome settings or policy may show a save dialog; explain that possibility and obtain permission before using this fallback during background work.

uploadA

Attach a local file to the page (no extension can touch the OS file picker). Open the upload UI first. Auto-picks a matching file input; for editors that only accept drag-and-drop (X Article, Notion) pass dropSelector instead. Any size via a file input (browser reads the path); drag-drop caps at 48MB.

queryA

Extract structured data by CSS selector (lists, tables), or FIND BY TEXT with contains: every visible element whose text includes it, with a selector path and the ref it sits in — use it instead of eval to check "is X on the page", read a status label, or find a dropdown option. For lists pass html:true first to inspect markup, then extract: field → sub-selector, "@attr" for attributes, e.g. {title:".name", link:"a@href"}.

actA

Your DEFAULT way to act — batch every step you can predict (on form wizards, nearly all). Each step is effect-checked, ONE snapshot returns at the end; every call you merge saves a full model turn. Stops early on no-effect / failure / submit-pay-delete controls. read {ref|find|selector, attr?} or {contains} brings an observation back mid-batch. Blocks (one level): repeat {steps,until,max} for pagination/load-more; if {cond,then,else} for optional banners; assert {cond} stops unless the page matches. cond = {urlContains|selectorExists|textContains, not} (OR-ed), or {ref|selector, checked|value|text} for one element. Inside repeat use find/selector, never ref. Elsewhere: ref until the page re-renders, find after.

askA

Hand control back to the user for one step, then continue. For captcha, QR login, SMS/OTP, or any confirmation that should be a human decision. Brings the tab forward, shows a panel, highlights your targets, sends a desktop notification, and blocks until the user acts. Use it instead of retrying a step that needs a human. A "cancelled" result means the user said no: stop that task, do not look for another way to do the same thing.

statusA

One short sentence telling the user what you are about to do, shown on an on-page panel. Call before a multi-step task and whenever the plan changes. Instant, never blocks. Use the user's language.

evalA

Run a JS expression in the page. NOTE: fails on any site with a strict CSP (no unsafe-eval) — most large sites. Prefer query for data extraction. Isolated world: sees the DOM, not the page's own JS variables.

learningsA

Site notes: APIs, walls, pitfalls from past sessions. Call {domain} before first acting on a site (no args = list sites). Notes may embed runnable ```act scripts — fill {{placeholders}} and run them instead of rediscovering. Learned something non-obvious or mapped a flow? Save the full note back via {domain, save}. Hints, never rules.

reloadA

Reload the beat-browser extension (chrome.runtime.reload()) so an updated build takes effect — no manual chrome://extensions visit needed. ~2s; bridge auto-reconnects, tabs keep state. DISRUPTIVE: the extension is shared by every tab and every other agent session on this machine — anything mid-flight elsewhere gets cut. Only call right after installing/updating, or when doctor/a version-mismatch warning says to — never speculatively.

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 24 tools

Disambiguation4/5

Tools have distinct purposes overall, but there is some overlap in data extraction (snapshot, read_text, query, eval, network) and action execution (click, type, fill, act). Descriptions provide clear guidance on when to use which, but an agent might still hesitate between snapshot and query for extracting page data.

Naming Consistency4/5

Names are consistently lowercase and mostly single-word, with one snake_case (read_text) as a minor deviation. The set mixes nouns (tabs, spaces, snapshot) and verbs (navigate, click, type), so it lacks a single verb_noun convention, but it remains predictable.

Tool Count3/5

24 tools is on the heavy side, falling in the 16-25 range which the rubric considers borderline heavy. Each tool appears to serve a distinct browser automation need, but the count is high enough to feel potentially overwhelming for the stated scope.

Completeness4/5

The surface covers core browser control lifecycle: tabs, navigation, interaction, data extraction, user handoff, and extension management. Minor gaps exist, such as no dedicated tool for cookie/localStorage management or window resizing, but agents can work around via eval or network.

Maintenance

ActivityNo data
ResponsivenessSyncing