Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TYPESAFE_API_KEYNoYour TypeSafe API key. If not provided, it will be read from ~/.config/typesafe/apikey.txt.

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": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
browseA

Find the element matching an intent and, if the gate allows it, act on it.

    Returns the gate verdict (auto / review / blocked), the confidence, the
    target element and its Playwright selector. Only ``auto`` decisions are
    executed. On large pages even precise intents score 0.8-0.95, so pass
    ``min_confidence`` to set your own bar; risky patterns and the
    deterministic checks still apply and cannot be overridden.
    
gotoA

Open a URL in the current tab, replacing its content, and wait until the DOM is ready. Returns {url, title, elements}, where elements is the number of interactive elements found; call page_state for the candidate list.

goalA

Drive the browser towards a goal: Jev decides every step, jevnav acts.

    ``context_json`` is a JSON object of values the goal may need, e.g.
    {"email": "a@b.c", "password": "${PW}"}. ``success`` is a selector that
    must be visible when the goal is done: pass it and the outcome comes
    back verified or the run is reported as unverified. Returns the outcome
    (done, stuck, review, ...), the steps taken, cost and the verification.
    Risky steps stop the loop and come back unexecuted.
    
page_stateA

Current URL, title and the interactive elements jevnav can see. The elements it can act on carry a jevnav data-jevcid stamp.

consoleA

Recent console messages and page errors, newest last (observation only; not part of a trace). Returns {messages:[{type, text}]}, where type is the console method (log, info, warning, error, debug, ...) or pageerror; only_errors keeps warning, error and pageerror. Read it after an action to see what the page complained about.

networkA

Recent network requests, newest last; only_failed keeps 4xx/5xx and transport errors. Each entry carries method, url, status, resource, error (for failed requests) and id — pass that id to network_detail for headers and body.

screenshotA

Save a PNG of the page (or one element) to a path, for a human to look at.

upload_filesA

Set files on a file input, chosen by a CSS selector or by an intent Jev resolves. With an intent and several file inputs, the choice goes through the gate first. Every path must exist and sit inside --file-root (default: the working directory; set it explicitly if the server runs from / or $HOME); the call replaces the input's current selection. Returns {files, status, reason, target, executed} — status "review" or "blocked" means nothing was set.

dragA

Drag the element at source_selector onto target_selector. The drag runs immediately with no confirmation, so a wrong target can change page state.

press_keyA

Press a key or a combination ("Control+A", "Shift+Enter"). With a selector, presses on that element (first match); without, on the page. Acts immediately — a shortcut or Enter can submit or delete — and returns {key, selector}.

fill_formA

Fill several fields in one call. fields_json is a JSON list of {selector|intent, value, action?}; action is fill (default), select, check or type. fill and select replace the value, type appends, check ticks when value is true-like ("true", "1", "yes", "on" or omitted) and clears otherwise. An intent is resolved by Jev against the page's text, search, combobox, checkbox and radio inputs — or, when the page has none of those, any interactive element. Returns {filled:[...]}; a field with neither selector nor intent is an error.

network_detailA

Headers and (text) body of one recorded request: pass the id from network's output, or url_contains for the newest matching URL. Reads jevnav's own network buffer; nothing is re-requested.

dialog_policyA

Answer dialogs from now on. match=None sets the session default; with a match, adds a rule for dialogs whose text contains it (an earlier rule with the same text is replaced). Applies to future dialogs only; dialogs already seen stay recorded.

resizeA

Resize the browser viewport to width x height. The size persists for the session and can change what the page renders (responsive layout).

emulateA

Emulate media, geolocation ("lat,lon") and connectivity. Media overrides (color scheme, reduced motion, forced colors) apply to the current tab; geolocation and offline apply to the whole browser context, so later tabs and loads keep them. Fields you omit are left unchanged. The position persists context-wide, but only an http(s) origin that called emulate can read it (that origin gets the geolocation permission); call emulate again after navigating elsewhere.

routeA

Stub or block requests matching a URL pattern (testing). The stub persists until unroute; the call is recorded as an action, never part of a replay path.

unrouteA

Remove one route stub, or all of them.

perf_metricsA

Chromium performance counters for the current page, read over CDP: DOM nodes, JS heap size, layout and task durations. Cheap telemetry for spotting growth between actions; for real profiling use chrome-devtools. Reads the page, changes nothing, chromium only.

heap_snapshotA

Write a Chromium heap snapshot of the current page to a file (default: jevnav-heap-.heapsnapshot under --file-root, which defaults to the working directory and must be set explicitly if the server runs from / or $HOME; the path must stay inside it), for Chrome DevTools > Memory. A snapshot is a full JS heap dump, often hundreds of MB; an existing file at the same path is overwritten. Use it to chase a memory leak, not for routine inspection — it changes nothing on the page, and it is chromium-only.

lighthouseA

Run Lighthouse (through npx) against the current or given URL and return the scores. Needs node/npx on PATH (npx fetches Lighthouse on first use), takes tens of seconds, and does not change the page.

trace_startA

Start a Playwright trace (open it later with npx playwright show-trace).

trace_stopA

Stop the Playwright trace started by trace_start and write the zip to path (default: jevnav-trace-.zip under --file-root, which defaults to the working directory and must be set explicitly if the server runs from / or $HOME; the path must stay inside it). The zip holds snapshots and, if enabled, screenshots of everything since trace_start — open it with npx playwright show-trace <path>. Stopping without a started trace is an error; passing the same path again overwrites that zip. Chromium, Firefox and WebKit all support it.

dialogsA

Every alert/confirm/prompt seen, with the policy that resolved it.

outlineA

Structural outline of a page or region: the shape an agent can act on, without a screenshot. Returns {selector, count, elements}, one entry per heading, landmark, section, form, label, control, link, image or text block inside selector (default "body"), capped at limit (default 200) in document order; each entry carries tag, level (h1-h6), text, ownText, leaf, name, id, classes and box [x, y, width, height]. A selector that matches nothing falls back to the whole body (the result still echoes the selector you asked for). Use it before editing a region or diffing a mockup against the app — page_state is the clickable list, styles the computed CSS, screenshot for humans. Reads only.

stylesA

Computed styles for the elements matching a selector (the facts behind a visual diff).

read_jsA

Evaluate a JS expression in the page and return its value. This is arbitrary JavaScript: an expression can change page state, so treat it as an action and keep it for reading values only (disable with --no-eval).

wait_forA

Wait until text or a selector appears, then report the page like page_state (element stamps included).

scrollA

Scroll the page down or up by pixels of document height.

tabsA

List the open pages and which one jevnav is driving.

new_pageA

Open a new tab (optionally at a URL) and drive it from now on.

select_pageA

Drive the tab at this index (see tabs). The switch is immediate; the tab keeps its state, and an out-of-range index is an error.

close_pageA

Close the tab at this index and keep driving a remaining one.

summaryA

This session so far: steps, auto/review/blocked counts, cost, latency.

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

Disambiguation4/5

Most tools target clearly distinct concerns: navigation, state inspection, form filling, network, dialogs, tracing, and tab management. A few adjacent pairs (browse vs. goal, page_state vs. outline) could be confused at a glance, but the descriptions define their boundaries well.

Naming Consistency4/5

Names are all lowercase, readable, and mostly follow a verb_noun or imperative style (upload_files, fill_form, trace_start, select_page). The mix of noun-only names like network, dialogs, tabs, and summary is a minor deviation rather than a real inconsistency.

Tool Count2/5

At 33 tools, the surface exceeds the 25+ threshold that typically reads as too many for one server. Each tool appears individually purposeful, but the count is heavy for an agent to consider reliably, and several debugging/performance tools could plausibly be consolidated.

Completeness4/5

The set covers navigation, tab management, state inspection, form interaction, waiting, dialogs, network stubbing, tracing, and high-level goal execution—a broad and mostly complete browser-automation surface. Obvious gaps include no explicit selector-based click tool, no back/forward navigation, and no cookie or storage management.

Maintenance

ActivityMaintained
ResponsivenessNo issues