Skip to main content
Glama
t3ratech

T3rnel Browser — Session Bridge

Official
by t3ratech

MCP Session Bridge

Listed on mcpservers.org

A free MCP (Model Context Protocol) server that exposes authenticated browser-session automation: session_* tools that run in the user's own Chrome profile and real logged-in session, which cloud browser APIs cannot do. A free standalone mode is also available; it launches a dedicated automation browser so the same session_* tools work without the extension or a license.

What it does

  • Serves MCP over stdio (newline-delimited JSON-RPC) to any client that speaks the Model Context Protocol. The setup guide covers the common ones.

  • Uses a dual-transport design:

    • Extension mode (free; Pro tools gated by the extension) — forwards calls over a local, owner-only relay socket to a native messaging host that Chrome spawns, and from there to the T3rnel Browser extension, which executes them against the live authenticated tabs.

    • Standalone mode (free) — launches its own headful or headless CDP browser on a persistent profile and drives it directly. No license, no extension, and no access to the user's everyday browser.

  • Returns structured page context, form values, snapshots, and screenshots without shipping session cookies to a remote browser.

Related MCP server: Chromeflow

Price

The bridge itself is free, and this package enforces no licence of its own.

Extension mode reaches the buyer's real authenticated session through the T3rnel Browser extension, and the Pro tools it exposes are gated by that extension's own Pro tier — $29.99 once, three devices. Standalone mode is free and needs neither the extension nor a licence. There is no separate subscription for this package, and nothing here checks for one; earlier drafts of this file advertised $9/mo and $39/mo tiers that were never implemented, never enforced and never purchasable.

Project layout

  • src/server.js — MCP stdio server: tool surface, schema validation, dual-transport routing, relay client with reconnect and timeouts, and standalone CDP launcher.

  • src/cdp.js — standalone CDP browser management and WebSocket client.

  • src/native-host.js — native messaging host spawned by Chrome; owns the relay socket and multiplexes concurrent MCP servers.

  • src/framing.js — the 4-byte length-prefixed JSON framing shared by native messaging and the relay socket.

  • src/tools.js — the session_* tool definitions, validation, and mapping to the extension's browser_* tools.

  • src/license.js — offline Ed25519 license verification helpers used by the extension and tests.

  • src/install.js--install / --uninstall native host registration for Chrome, Chromium, Brave and Edge.

  • docs/setup-guide.md — installing on the common MCP clients, plus verification and troubleshooting.

  • docs/chrome-validation-checklist.md — end-to-end validation steps for Chrome with the T3rnel Browser extension.

  • ads/ad-copy.md, the shared headline and description copy used when submitting to MCPize, Smithery, mcp.so and PulseMCP.

  • tests/node --test suite, including end-to-end tests through a real relay socket and native-messaging framing, plus standalone-mode coverage.

Browser support

Extension mode needs the T3rnel Browser extension, which installs on Chrome, Brave, Edge and Chromium from one package. Opera implements no side-panel API and Firefox no debugger API, so both are partly supported; the extension's manifest generator states which capabilities are absent on each. Standalone mode has no browser requirement at all — it launches its own CDP browser.

The extension exposes 99 browser tools, all of which are reachable over this bridge subject to the extension's own Pro gating and its approval gate.

Supported clients

  • Claude Code / Claude Cowork

  • Cursor

  • VS Code

  • Windsurf / Devin Desktop

  • Google Antigravity

  • IntelliJ

  • Codex

  • Grok Build

  • Kimi Code / Kimi Desktop

  • JCode

  • Cline

  • OpenCode

  • Continue.dev

  • KiloCode

  • Roo Code

  • Aider

  • OpenClaw

  • Hermes

  • OpenFang

  • Any client that speaks MCP stdio

Install the T3rnel Browser extension

The bridge works best with the T3rnel Browser extension, which lets your AI drive the browser you are already signed into:

https://t3ratech.github.io/t3rnel-browser-plugin/

Licence

Source-available, not open source. See LICENSE for the terms.

In short: the published npm package is free to use for any purpose, commercial or otherwise; you may read and locally modify this source; you may not redistribute it or publish a derivative without written permission.

Directory listings that expect an SPDX identifier will report "no licence" for this repository. That is expected — GitHub detects the file and classifies it as other / NOASSERTION, because the terms are bespoke rather than one of the recognised open-source licences. The licence exists; it simply is not an OSI one.

Available Tools

22 tools
session_clickA
Destructive

Click an element, by CSS selector or by an @eN ref from session_snapshot. Scrolls the element into view and dispatches a real mouse press and release at its centre, so handlers that ignore synthetic events still fire. Returns {clicked} naming what was targeted. Fails with 'Element not found' rather than clicking something else when nothing matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoA ref from session_snapshot, such as @e12, used instead of selector
tabIdNoTab to act on; uses the active tab when omitted
selectorYesCSS selector for the element to click

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint/openWorldHint annotations, the description discloses side effects: scrolls into view, dispatches a real press/release at centre, returns {clicked}, and fails loudly with 'Element not found' instead of silently mis-clicking. This is behaviorally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, information-dense sentences with no filler; the core action and target are front-loaded, and the distinctive behaviors follow. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description reports return shape, error behavior, selection alternatives, and event semantics, giving an agent everything needed to call it correctly. tabId is left to the schema, which documents it, so no important gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all parameters (100%), and the description adds the selector-vs-ref relationship and that refs come from session_snapshot. However, it says 'or by an @eN ref' while the schema marks selector as required, so the relationship is not fully consistent; an agent could pass only ref and fail validation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific action ('Click'), the target element, and the two ways to identify it (CSS selector or @eN ref), so an agent immediately understands the operation. It also differentiates from sibling tools by emphasizing a real mouse press/release rather than synthetic event dispatch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to use the tool: when an element needs to be clicked with real input events ('handlers that ignore synthetic events still fire') and when a ref from session_snapshot is available. It does not name alternative sibling tools or state exclusions, but the behavior description makes selection straightforward.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_close_tabA
Destructive

Close a tab, named explicitly by its id from session_list_tabs. Returns {closed, tabId}. Unlike every other tool here, tabId is required and there is no active-tab default: closing a tab is not undoable, and the active tab is the one the user is looking at. Requires the T3rnel Browser extension; the standalone browser refuses it by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab to close, from session_list_tabs

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that closing a tab is not undoable, that the active tab is the one the user is looking at, and that the T3rnel Browser extension is required while the standalone browser refuses the call. These details match and enrich the destructiveHint annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences that front-load the action and return value, then add essential caveats. Every sentence contributes meaningful information, from the id source to the irreversibility and environment restriction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description states the return shape. It also covers prerequisites, side effects, environment requirements, and the unique no-default behavior, making the tool fully actionable for a one-parameter destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents tabId as the tab to close from session_list_tabs, and the description primarily repeats that provenance. It adds the no-default context, but that is more behavioral than parameter-specific, so the schema-coverage baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Close'), a clear resource ('a tab'), and the required source of the identifier ('from session_list_tabs'). It also distinguishes itself from sibling tools by explicitly calling out that tabId is required and there is no active-tab default.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context by directing the agent to obtain the tab id from session_list_tabs and warns that this tool, unlike every other session tool, requires an explicit tabId. It does not explicitly name alternative tools or list exclusions beyond the active-tab contrast, but the guidance is sufficient for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_evaluateA
Destructive

Run JavaScript in the page's own context and return its completion value. Use it for what the other tools do not cover — reading computed styles, walking a data structure the page holds, or checking a condition too specific for session_wait. Objects come back as formatted JSON, strings as themselves, and an expression with no value as "undefined". End the code with the expression you want back; a trailing statement returns nothing useful.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesJavaScript to run in the page's own context. Its completion value is returned, so end with the expression you want back
tabIdNoTab to run in; uses the active tab when omitted

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond that: return value formatting (JSON, strings, 'undefined'), and the critical warning that a trailing statement returns nothing useful. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loads the core action, then provides usage context, return semantics, and a practical code-writing tip. Every sentence adds value without repetition or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an arbitrary JavaScript execution tool with no output schema, the description sufficiently covers what the tool does, when to use it, how to format code, and what return values look like. Combined with the annotation's destructive hint and the schema's tabId documentation, nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning by explaining completion-value behavior and advising the agent to end with the expression it wants back, reinforcing and extending the schema's parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Run JavaScript in the page's own context and return its completion value.' It also differentiates itself from siblings by giving concrete use cases (computed styles, walking data structures, conditions too specific for session_wait), which lets an agent distinguish it from other session tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use it for what the other tools do not cover' and lists example scenarios, directly naming session_wait as an alternative for certain checks. This gives clear when-to-use guidance, though it lacks an explicit 'when not to use' list for other siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_fillA
Idempotent

Set a form field's value in one step — input, textarea, or a rich-text editor such as ProseMirror, Lexical or Slate. Writes through the native value setter and then fires input and change, which is what React and Vue listen for. Returns {filled} naming the field. Use session_type instead when a field only reacts to real keystrokes, and session_select for a dropdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoA ref from session_snapshot, such as @e12, used instead of selector
tabIdNoTab to act on; uses the active tab when omitted
valueYesText to place in the field, replacing whatever is there
selectorYesCSS selector for the field to fill

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, the description discloses that it writes through the native value setter, fires input and change events, and returns {filled} naming the field. It also clarifies support for rich-text editors. This is meaningful behavioral context not present in the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences: the action and target, the mechanism and why it works, and the return value plus alternative routing. No filler, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, but the description explicitly names the return value, {filled}. It covers the behavioral mechanism, supported field types, exclusions, and alternatives, making it complete for an agent deciding whether and how to call this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents selector, value, ref, and tabId. The description does not add per-parameter detail beyond what the schema provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Set a form field's value', and expands the target to input, textarea, and rich-text editors. It also names sibling tools (session_type, session_select) and explains what this tool is not, making it easy to distinguish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit routing guidance: use session_type when a field only reacts to real keystrokes, and session_select for a dropdown. It also explains why session_fill works for React/Vue fields by firing input and change, giving the agent a clear decision rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_healthA
Read-onlyIdempotent

Report which transport is live and what it can do. Call this first when another tool fails unexpectedly: it separates 'the extension is not running' from 'this browser does not implement that API', which produce very different fixes. Returns {ok, mode, browser, profileDir} in standalone mode, and the connection state plus the available browser APIs when the extension is attached.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond these: it reports live transport status, separates two failure modes, and specifies different return shapes for standalone versus extension-attached modes. This is exactly the kind of contextual detail that helps an agent predict behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. The primary purpose is front-loaded, followed by the key usage condition and then the return-value details. Every clause contributes practical information for tool selection and invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter diagnostic tool with no output schema and safety annotations already provided, the description is complete. It explains what the tool reports, why it should be called first during failures, and what fields to expect in each mode. An agent has everything needed to invoke and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema describes this completely with an empty properties object. Per the baseline for zero-parameter tools, no parameter explanation is required; the description adds no parameter semantics because there is nothing to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Report which transport is live and what it can do.' It also clarifies its diagnostic role by saying 'Call this first when another tool fails unexpectedly', which clearly separates it from the sibling action tools like session_navigate or session_click.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'Call this first when another tool fails unexpectedly' and explains how it distinguishes root causes. It does not explicitly name alternatives or when-not-to-use scenarios, but the condition and ordering are clear enough for a diagnostic tool with no direct sibling equivalent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_installA
Read-onlyIdempotent

Return setup instructions for the T3rnel Browser extension and for the free standalone automation browser. Needs no browser and no licence, so it is the one tool that always answers — call it when another tool reports the extension is missing. Returns installation steps as text.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful contextual behavior beyond that: no browser or licence is required, it 'always answers,' and it returns text. This is sufficient for a non-mutating informational tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose. It contains a slight redundancy between 'Return setup instructions' and 'Returns installation steps as text,' but the final clause does clarify the output format, so the overall structure is still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has no parameters, no output schema, and annotations that already cover its safety profile, the description provides everything needed: target resources, trigger context, dependency constraints, and return type. An agent can select and invoke this tool correctly without further information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties and schema description coverage is 100%, so the baseline for a 0-parameter tool is 4. There are no parameters to document, and the description does not need to compensate for any schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it 'Return[s] setup instructions for the T3rnel Browser extension and for the free standalone automation browser.' It is clearly distinct from all sibling tools, which are runtime/automation operations, and it identifies itself as the fallback tool when another tool reports the extension is missing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit trigger: 'call it when another tool reports the extension is missing.' It also explains why this is the right fallback: 'Needs no browser and no licence, so it is the one tool that always answers.' No sibling tool performs installation instructions, so no alternative routing is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_list_tabsA
Read-onlyIdempotent

List every open tab. Returns an array of {id, title, url}. The ids are what every other tool's optional tabId argument accepts; omit tabId and a tool acts on the active tab, which is rarely what you want once you have opened tabs of your own.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds valuable behavioral context beyond that: the returned ids are the shared contract used by all sibling tools, and omitting tabId selects the active tab, which is rarely desired. This is precisely the kind of cross-tool behavior an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The core action and return format are front-loaded, and the second sentence earns its place by explaining the practical relationship to every other tool's tabId argument.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool, the description is complete: it names what is returned, the fields in each item, and how those fields are used by sibling tools. Even without an output schema, the agent has everything needed to call this tool and interpret its results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero parameters and an empty input schema, so there is nothing for the description to clarify about parameters. The schema description coverage is 100% and the description avoids inventing parameter details, matching the baseline for a zero-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('List every open tab') and then specifies the exact return shape as an array of {id, title, url}. It clearly distinguishes this tool from siblings like session_read_page or session_snapshot by focusing on tab enumeration and the ids consumed by other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when this tool is useful: to obtain tab ids for other tools' optional tabId arguments. It also gives an explicit caution against relying on the active-tab default once you have opened your own tabs, effectively telling the agent when not to omit tabId.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_loginA
Idempotent

Decrypt stored credentials for a domain and fill them into the page's sign-in form. Requires the T3rnel Browser extension with Pro, because the encrypted vault lives in the extension; the refusal comes from the extension rather than from this bridge, so there is one gate rather than two that can disagree. The standalone browser has no vault — sign in once by hand in its profile instead, and the session persists.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoTab holding the sign-in form; uses the active tab when omitted
domainYesDomain the credentials are saved for, such as "github.com"
submitNoIgnored; kept so older callers do not break
masterPasswordNoPassphrase that unlocks the extension's vault. Never log or persist it

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only and not destructive. The description adds useful behavioral context by explaining where the vault lives, that refusal comes from the extension rather than the bridge, and that a standalone browser profile cannot use this tool. This goes beyond what annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary behavior, then provides prerequisite and fallback guidance. It is reasonably concise, though the 'one gate rather than two that can disagree' phrasing is slightly elaborate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with full schema coverage and safety annotations, the description covers the main operational context: prerequisites, error source, and fallback behavior. It does not describe return values, but there is no output schema to explain, and the core calling conditions are clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The description reinforces the domain and fill behavior but does not add new parameter-level semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it decrypts stored credentials for a domain and fills them into the sign-in form. This clearly distinguishes it from manual form-filling siblings like session_fill and from credential-saving siblings like session_store_login.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when the tool works (T3rnel Browser extension with Pro) and when it does not (standalone browser has no vault), including the alternative action: sign in once by hand. This gives an agent concrete decision rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_navigateA
Idempotent

Navigate a tab to a URL inside the user's authenticated session, so pages behind a login load as themselves rather than as a signed-out visitor. Reuses the active tab unless newTab is true. Returns {navigated} with the requested URL, and newTab when a tab was created. It returns once navigation is dispatched, not once the page has settled — follow it with session_wait before reading.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute URL to navigate to, including the scheme
tabIdNoTab id from session_list_tabs; uses the active tab when omitted
newTabNoOpen in a new tab instead of reusing the active tab (default false)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavioral traits: navigation returns before the page settles, it reuses the active tab unless newTab is true, and it returns a {navigated} payload plus a newTab field when applicable. This is valuable context that the annotations alone do not provide, and it does not contradict the readOnlyHint, openWorldHint, idempotentHint, or destructiveHint values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences carry a full picture: purpose, tab behavior, return value, and asynchronous timing. The most important operational detail (return before page settles) is front-loaded near the end but clearly stated, and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description explains what is returned and the important timing caveat. For a simple 3-parameter tool with fully described schema properties and safety-relevant annotations, the description gives the agent everything needed to invoke it correctly and know what to expect next.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the baseline is 3. The description adds some context about active-tab reuse and returned fields, but it mostly reinforces what the schema already states rather than introducing new parameter semantics. It is adequate but not a major value-add over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Navigate a tab to a URL inside the user's authenticated session.' It clearly distinguishes this from sibling tools like session_read_page or session_screenshot by focusing on navigation and the authenticated-session context. The distinction between logged-in and signed-out behavior further clarifies the tool's unique purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to use the tool (navigating within an authenticated session) and provides sequencing guidance ('follow it with session_wait before reading'). It does not explicitly name alternatives or state when not to use it, but the guidance is sufficient for an agent to select this tool correctly in most cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_pressA
Destructive

Press a single keyboard key on the focused element, or on a named element after focusing it. Use it to submit a form with Enter, dismiss a dialog with Escape, or walk a suggestion list with ArrowDown. Returns {pressed} naming the key. Supported keys are Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown and Space; anything else fails with the supported list rather than doing nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesOne of Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown, Space
refNoA ref from session_snapshot, such as @e12, used instead of selector
tabIdNoTab to act on; uses the active tab when omitted
selectorNoCSS selector for the element to press the key on; uses the focused element when omitted

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description adds valuable behavioral details: it returns '{pressed}' naming the key, and it discloses the exact error behavior ('anything else fails with the supported list rather than doing nothing'). It also explains the focusing behavior ('or on a named element after focusing it'), which is not evident from the schema alone. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action, followed by purpose examples, return value, and supported keys/error behavior. Each sentence serves a distinct function with no filler. The structure quickly informs an agent what the tool does, when to use it, and what to expect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with four parameters, one required, no output schema, and annotations already providing safety semantics, the description covers the essential behavioral context: focus targeting, return value, supported keys, and failure mode. The schema covers parameter details and tab/selector behavior, so nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description reinforces the meaning of the key parameter by listing supported keys and clarifies the selector/ref use case ('on a named element after focusing it'), but it does not add substantial detail beyond the schema. Baseline 3 is appropriate because the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Press a single keyboard key on the focused element, or on a named element after focusing it.' It clearly identifies the tool as a key-press operation and distinguishes it from sibling tools like session_click and session_type by its focus on keyboard keys. The concrete use cases (submit form with Enter, dismiss dialog with Escape, walk suggestion list with ArrowDown) reinforce the tool's unique purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: 'Use it to submit a form with Enter, dismiss a dialog with Escape, or walk a suggestion list with ArrowDown.' This gives clear context for when the tool is appropriate, though it does not explicitly mention when not to use it or name alternative tools. Because the examples imply the alternative (typing full text with session_type, clicking with session_click), the guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_read_pageA
Read-onlyIdempotent

Read a page's visible text, as rendered in the user's authenticated session. Returns {url, title, text, truncated}; text is the body's rendered innerText capped at 50,000 characters, and truncated is true when the page was longer. Prefer this over session_snapshot when the goal is to read or summarise; prefer session_snapshot when the goal is to interact.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoTab to read; uses the active tab when omitted

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, open-world behavior, so the description adds value by disclosing the exact returned fields, the 50,000-character cap, the truncated flag semantics, and that text is rendered innerText from the authenticated session. This goes beyond the structured annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise, purposeful sentences: what it does, what it returns with key limits, and when to use it vs. a sibling. Every sentence earns its place and the most important behavior is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter read tool with no output schema, the description fully specifies the return shape, the truncation behavior, and the sibling distinction. The agent has everything needed to invoke it correctly and understand the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents tabId with its integer type and default behavior ('uses the active tab when omitted'), so schema description coverage is 100%. The description does not add parameter-level detail, but none is needed given the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Read a page's visible text, as rendered in the user's authenticated session') and immediately contrasts with session_snapshot by scoping this tool to reading/summarizing rather than interacting. This clearly distinguishes it from its sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to prefer this tool over session_snapshot ('when the goal is to read or summarise') and when to prefer the alternative ('when the goal is to interact'). This gives the agent direct routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_record_eventsA
Read-onlyIdempotent

Fetch the captured events of a recording, in the order they happened. Returns {events, count}, where count is the total held for the session and events is one page of {type, timestamp, tabId, data}; type is one of click, scroll, keypress, input, navigation, focus, select or resize. Page through long recordings with limit and offset rather than reading them whole, since a session can hold tens of thousands of events. Requires the T3rnel Browser extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum events to return in this page (default 100)
offsetNoNumber of events to skip, for paging through a long recording (default 0)
sessionIdYesRecording session to read, from session_record_list

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and idempotentHint annotations, the description discloses the paginated nature of the response, the return shape ({events, count}), the event type enum, and the requirement for the extension. This enriches the agent's understanding of actual behavior without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise but information-dense, leading with the core purpose, then the return structure, paging advice, and the prerequisite. Every sentence adds value with no redundant phrasing, making it easy to scan and act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, paginated tool with simple parameters and no output schema, the description covers all needed aspects: return format, event types, paging behavior, and environmental requirement. An agent can correctly invoke this tool and process results without further clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters are fully described in the schema (100% coverage), and the description adds practical context by explaining that limit and offset are for paging through recordings and that sessionId comes from session_record_list. This goes beyond the schema's basic definitions, providing meaningful usage insight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches captured events of a recording, specifying the order and the return structure. It distinguishes itself from sibling tools by focusing on reading events rather than recording or replaying them, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on paging through large sessions with limit and offset, and notes the prerequisite of the T3rnel Browser extension. It does not explicitly exclude alternatives like session_record_replay, but the context makes it clear this is for reading raw events, which is sufficient for most use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_record_listA
Read-onlyIdempotent

List every recording, running or finished, so a caller can find the id that session_record_events and session_record_replay need. Returns {sessions}, each entry being {id, tabId, active, startedAt, stoppedAt, stoppedReason, eventCount, durationMs}. Requires the T3rnel Browser extension.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds useful behavioral context beyond that: it lists both running and finished recordings, specifies the return shape, and notes the T3rnel Browser extension requirement. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose. Every sentence carries useful information: what it lists, why a caller would use it, what it returns, and what it requires. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool, the description is complete: it names the dependent sibling tools, describes the output fields, includes both active and finished recordings, and notes the runtime dependency. No output schema exists, so the detailed return description is especially valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty, so there are no parameter semantics to clarify. The description appropriately focuses on the return shape rather than inputs; the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource ('List every recording, running or finished') and clearly differentiates the tool's purpose as locating the id needed by session_record_events and session_record_replay. This makes the tool's role among many session siblings immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: the caller should use this tool when they need a recording id for session_record_events or session_record_replay. It does not explicitly state when not to use it or name alternative listing tools, but the intended usage is nonetheless clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_record_replayA
Destructive

Replay a stopped recording in its original tab, reproducing the recorded interactions in order. Returns {sessionId, totalEvents, replayedEvents, failedEvents, errors}, so a partial replay reports which steps failed instead of appearing to succeed. The tab must still be open. This acts on the live page and its effects are real — it will re-send messages, re-submit forms and re-spend money — so the extension classifies it high risk and gates it behind an approval prompt. Requires the T3rnel Browser extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
speedNoReplay speed multiplier; 1 is the recorded pace, 2 is twice as fast (default 1)
sessionIdYesStopped recording session to replay, from session_record_list

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, and idempotentHint=false. The description goes beyond this by detailing concrete real-world effects (re-sending messages, re-submitting forms, spending money), the high-risk classification with an approval prompt, the requirement that the tab must be open, and how partial replay failures are reported. This is exactly the kind of context an agent needs for a destructive action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four information-dense sentences in a logical order: action, return behavior, prerequisites, and risk warning. Every sentence earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the return shape is fully disclosed. The description covers preconditions, failure reporting, real-world consequences, and safety gating. With only two parameters fully documented in the schema, nothing important is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description restates that the session must be a stopped recording but does not add new meaning beyond what the schema already provides for sessionId or speed. No extra parameter-level guidance is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (replay), a specific resource (a stopped recording), and the precise scope (in its original tab, reproducing interactions in order). It clearly differentiates from sibling record_* tools, which create, list, or inspect recordings, by focusing on the replay action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context and preconditions: the recording must be stopped, the original tab must still be open, and the T3rnel Browser extension is required. It also warns that this acts on the live page and is gated behind an approval prompt, but it does not explicitly name alternative tools or stated when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_record_startA

Begin recording what happens in a tab: clicks, scrolls, keystrokes, form fills, selections and navigations, each with a timestamp. Returns {recording, sessionId, tabId} — keep the sessionId, since every other recording tool needs it. Requires the T3rnel Browser extension. Recording stops on its own if the tab closes or after four hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoTab to record; uses the active tab when omitted
maxEventsNoMaximum events to keep, oldest dropped first (default 10000)
sessionIdNoRecording session id; one is generated when omitted

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses meaningful behavior: it starts background recording of specific user interactions, requires an extension dependency, returns a structured object, and has automatic termination after tab close or four hours. These are exactly the kind of side effects and limits an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it states the core action, lists what is recorded, gives the return shape, and then covers prerequisites and automatic stopping. Every sentence carries useful information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no required parameters and no output schema, the description covers everything needed to call it correctly: what happens, what is returned, what dependency is required, and when recording ends. This is sufficient context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all three parameters with 100% coverage, so the description does not need to repeat them. It adds value by emphasizing that the sessionId is essential for subsequent recording tools, which helps an agent understand its significance, but this is a minor semantic addition over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Begin recording') and resource ('what happens in a tab'), enumerates the event types captured, and distinguishes itself from siblings like session_record_stop and session_record_events by framing it as the starting point. It leaves no doubt about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context: the T3rnel Browser extension is required, the recording has automatic stop conditions, and the returned sessionId is needed by all other recording tools. It does not explicitly name alternatives or say when not to use it, but the start/stop/event sibling structure makes the use case evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_record_stopA
Idempotent

Stop a recording and return {recording, sessionId, eventCount, durationMs}. The events themselves are read separately with session_record_events, so this is cheap to call on a long recording. Requires the T3rnel Browser extension. With several recordings active, sessionId is required and the error names how many are running.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdNoSession to stop; required only when more than one recording is active

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds the extension requirement, the performance trait ('cheap to call on a long recording'), and the error behavior when multiple recordings are active. No contradiction with idempotentHint=true or destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no filler. The primary action and return value are front-loaded, followed by necessary operational context and edge-case guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the return value, prerequisite, and an important conditional requirement, which is enough for a simple one-optional-parameter tool with idempotency and destructive hints provided by annotations. Minor gaps like behavior on already-stopped recordings are not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents sessionId. The description restates the condition and adds a detail about the error message, but does not materially expand parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Stop a recording') and names the exact return payload, distinguishing it clearly from sibling tools like session_record_start and session_record_events. No ambiguity about what the tool accomplishes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly points to session_record_events as the alternative for reading events, and clarifies when sessionId is required. It does not enumerate every sibling, but gives enough context to route the agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_screenshotA
Read-onlyIdempotent

Capture what is currently on screen in a tab. Returns a data: URL holding a base64 PNG or JPEG. This is the visible viewport only — it does not scroll or stitch, so a long page needs the extension's full-page capture instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoTab to capture; uses the active tab when omitted
formatNopng (default, lossless) or jpeg (smaller, and the only format quality applies to)png
qualityNoJPEG quality from 0 to 100; ignored for png
windowIdNoWindow to capture from; uses the current window when omitted

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description adds valuable behavioral context: the output is a data: URL containing base64 PNG or JPEG, and the capture is strictly the visible viewport with no scrolling or stitching. This meaningfully enriches the tool's behavior beyond what readOnlyHint/idempotentHint convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences with no filler: the action comes first, then the return format, then the critical limitation and alternative. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately explains the return value. Combined with complete parameter schemas and supportive annotations, nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters including defaults and enum behavior. The description only restates the PNG/JPEG output, so it adds little beyond the structured parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Capture what is currently on screen in a tab.' It also clarifies the exact scope ('visible viewport only') and distinguishes itself from full-page capture, so an agent can understand what the tool does at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when not to use the tool ('does not scroll or stitch') and points to the alternative ('a long page needs the extension's full-page capture instead'). This gives clear usage guidance without relying on inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_selectA
Idempotent

Choose an option in a dropdown, by value, by visible text, or by index. Filling a select as though it were a text field does nothing — the native value setter belongs to HTMLInputElement and has no effect here — which is the silent failure this tool exists to prevent. Matches value first, then exact visible text, then a substring, then index. Returns {selected, value, text} for the chosen option, and on no match fails with the available options listed.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoA ref from session_snapshot, such as @e12, used instead of selector
textNoVisible option text to choose; matched exactly first, then by substring
indexNoZero-based option index to choose; tried last
tabIdNoTab to act on; uses the active tab when omitted
valueNoOption value to choose; tried first
selectorYesCSS selector for the <select>

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the silent failure mode (native value setter belonging to HTMLInputElement has no effect) and explains the tool exists to prevent it. It additionally spells out the matching order, the return object shape {selected, value, text}, and the failure behavior (lists available options). This goes well beyond the annotations (readOnlyHint false, idempotentHint true, etc.) and gives a complete picture of runtime behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet information-dense, with every sentence serving a purpose: stating the core action and selection methods, explaining a common pitfall, detailing the matching precedence, and specifying output and error behavior. It is front-loaded with the purpose and avoids any redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a dropdown-selection tool with moderate complexity, the description covers all aspects an agent needs: how to choose (methods), why not to use alternative methods, the order of resolution, the return value, and error handling. There is no output schema, but the description compensates by specifying the return shape. Combined with the thorough schema and annotations, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context by explaining that value is tried first, then exact text, then substring, then index, which clarifies the interplay between the value, text, and index parameters beyond their individual schema entries. It also notes that ref is used instead of selector, reinforcing the schema's wording. This adds moderate value above the schema, warranting a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb 'choose' and the resource 'option in a <select> dropdown', then elaborates on the three selection modes (value, visible text, index). It also contrasts itself with text-field filling, which is a sibling operation, making the purpose unambiguous and differentiated from session_fill.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly warns that filling a select as a text field does nothing, thereby telling the agent when NOT to use session_fill and implicitly steering it to this tool for dropdowns. It also details the matching priority (value → exact text → substring → index), which helps the agent decide which parameter to supply based on the target option.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_snapshotA
Idempotent

Capture a semantic map of a page for deciding what to act on. Returns {url, title, elements}, where each element is {ref, tag, text} — ref being an @eN handle that session_click, session_fill, session_type, session_select and session_press all accept in place of a CSS selector. Prefer this over session_read_page when the goal is to interact rather than to read: it lists only elements a user could actually operate. Skips zero-size and hidden elements, caps each label at 120 characters, and stops at 200 elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoTab to snapshot; uses the active tab when omitted

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with annotations present, the description adds meaningful behavioral detail: it skips zero-size and hidden elements, caps labels at 120 characters, stops at 200 elements, and explains the ref handle format. This goes beyond the idempotent and non-destructive hints already supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler. The first sentence states purpose and return shape, the second explains ref semantics and sibling-tool usage, and the third lists limits. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one optional parameter and no output schema, the description fully covers the output structure, element shape, ref semantics, sibling relationships, and truncation behavior. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter, tabId, is already documented as 'Tab to snapshot; uses the active tab when omitted.' The description adds no additional parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Capture a semantic map of a page for deciding what to act on.' It also distinguishes itself from session_read_page by framing this as the interactive-element snapshot versus a read-oriented page snapshot. The title 'Snapshot interactive elements' reinforces the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly gives the when-to-use rule: 'Prefer this over session_read_page when the goal is to interact rather than to read.' It also explains that the returned @eN refs are accepted by session_click, session_fill, session_type, session_select, and session_press, making the workflow clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_store_loginA
Idempotent

Encrypt credentials for a domain and store them in the extension's vault, for session_login to use later. Requires the T3rnel Browser extension with Pro. The password is never returned by this or any other tool, and never appears in a listing or an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain the credentials belong to, such as "github.com"
passwordYesPassword to encrypt and store. It is never returned by any tool
usernameYesUsername or email to store
masterPasswordNoPassphrase that unlocks the extension's vault. Never log or persist it

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write (readOnlyHint=false), idempotent, and non-destructive. The description adds the crucial security guarantee that the password is never returned or listed, and the prerequisite of the extension with Pro. This goes beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The core action is front-loaded, followed by a critical requirement and a security guarantee. Every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple store operation with no output schema, the description covers the purpose, prerequisite, and security behavior. It lacks discussion of error cases or overwrite semantics, but these are less critical given the idempotency hint and simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters are documented in the schema. The description reinforces the password's privacy but does not add substantive meaning beyond the schema. It meets the baseline but adds little extra.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (encrypt and store credentials for a domain) and a clear resource (the extension's vault), with an explicit purpose tied to session_login. This distinguishes it from siblings like session_login and session_record_* without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly indicates when to use: before session_login to persist credentials. It also notes the requirement (extension with Pro) and that the password is never returned. However, it does not explicitly mention 'when not to use' or name alternative tools, though the context of storing vs. logging in is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_typeA

Type text one character at a time, firing the key events a real keyboard would. Use this instead of session_fill when a field only reacts to keystrokes — search boxes with live suggestions, autocompletes, and inputs with per-character validation. Returns {typed} with the number of characters sent. Slower than session_fill, so reach for it only when session_fill leaves the page unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoA ref from session_snapshot, such as @e12, used instead of selector
textYesText to type, one character at a time
tabIdNoTab to act on; uses the active tab when omitted
selectorYesCSS selector for the field to type into

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds useful behavioral context: it fires keyboard events, returns {typed} with the character count, and is slower than session_fill. It does not fully describe side effects of triggering real keystrokes, but with annotations present the additional information is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences: primary behavior, when to use versus session_fill, and return/performance notes. Everything earns its place and the most important scoping information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a relatively simple tool with 4 parameters, no output schema, and a clear sibling relationship, the description covers what the tool does, when to use it, what it returns, and its performance tradeoff. No critical information seems missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents selector, text, ref, and tabId. The description reinforces that text is typed one character at a time and mentions the {typed} return value, but it does not need to compensate for missing schema details, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Type text one character at a time, firing the key events a real keyboard would.' It clearly distinguishes itself from session_fill by naming it, so an agent can tell which tool to use without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this tool instead of session_fill when a field only reacts to keystrokes, and gives concrete examples: search boxes with live suggestions, autocompletes, and per-character validation. It also tells the agent to prefer session_fill unless this tool is needed, providing clear routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_waitA
Read-onlyIdempotent

Block until a page reaches a known state, so the next tool acts on a settled page rather than a half-loaded one. Waits for the load event, for the URL to contain a string, or for a selector to appear. Returns as soon as the condition holds — {condition, waited} for load, {condition, url} for url, {condition, found} for selector — and fails at the timeout with a named error rather than hanging the client. Polls every 200ms; the default timeout is 10000ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoTab to wait on; uses the active tab when omitted
valueNoURL substring or CSS selector to wait for; required for the url and selector conditions
conditionYesWhat to wait for: load (the load event), url (value appears in the URL), or selector (element appears)
timeoutMsNoMaximum wait in milliseconds (default 10000)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a lot beyond the annotations: it polls every 200ms, uses a 10000ms default timeout, returns as soon as the condition holds, fails with a named error instead of hanging, and specifies the exact return shape for each condition. Annotations already declare readOnly and non-destructive, and the description is consistent with them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence adds useful information: purpose, wait conditions, return shapes, timeout behavior, polling interval, and failure mode. It is front-loaded with the main purpose before going into mechanics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with four well-documented parameters, no output schema, and safe read-only annotations, the description covers everything an agent needs to invoke it correctly: what conditions exist, what happens on success/failure, defaults, and polling behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameters are already well documented. The description adds context about behavior, such as how the value relates to URL and selector conditions, but does not significantly extend the meaning of the parameters beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: it blocks until a page reaches a known state, then releases so the next tool can act on a settled page. It names the three wait conditions (load, URL substring, selector), which distinguishes it from sibling tools like session_navigate or session_snapshot that perform actions or read state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: before a subsequent tool acts on a page that must be fully loaded or settled. It does not explicitly name alternatives or state when not to use it, but the intended placement in a workflow is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 18 tool updatesv1.2.0
    • Changedsession_click4 fields changed
      • addedInput schema / properties / ref / examples
        Added value: +[
        +  "@e12"
        +]
      • addedInput schema / properties / ref / pattern
        Added value: +"^@?e\\d+$"
      • addedInput schema / properties / selector / description
        Added value: +"CSS selector for the element to click"
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to act on; uses the active tab when omitted"
    • Addedsession_close_tab
    • Changedsession_evaluate2 fields changed
      • addedInput schema / properties / code / description
        Added value: +"JavaScript to run in the page's own context. Its completion value is returned, so end with the expression you want back"
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to run in; uses the active tab when omitted"
    • Changedsession_fill5 fields changed
      • addedInput schema / properties / ref / examples
        Added value: +[
        +  "@e12"
        +]
      • addedInput schema / properties / ref / pattern
        Added value: +"^@?e\\d+$"
      • addedInput schema / properties / selector / description
        Added value: +"CSS selector for the field to fill"
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to act on; uses the active tab when omitted"
      • addedInput schema / properties / value / description
        Added value: +"Text to place in the field, replacing whatever is there"
    • Changedsession_login5 fields changed
      • changedInput schema / properties / domain / description
        Previous value: -"Domain the credentials are saved for, e.g. \"github.com\""New value: +"Domain the credentials are saved for, such as \"github.com\""
      • addedInput schema / properties / domain / examples
        Added value: +[
        +  "github.com"
        +]
      • addedInput schema / properties / masterPassword / description
        Added value: +"Passphrase that unlocks the extension's vault. Never log or persist it"
      • changedInput schema / properties / submit / description
        Previous value: -"Ignored; kept for compatibility"New value: +"Ignored; kept so older callers do not break"
      • addedInput schema / properties / tabId / description
        Added value: +"Tab holding the sign-in form; uses the active tab when omitted"
    • Changedsession_navigate6 fields changed
      • addedInput schema / properties / newTab / default
        Added value: +false
      • changedInput schema / properties / newTab / description
        Previous value: -"Open in a new tab instead of reusing the active tab"New value: +"Open in a new tab instead of reusing the active tab (default false)"
      • changedInput schema / properties / tabId / description
        Previous value: -"Tab id from session_list_tabs"New value: +"Tab id from session_list_tabs; uses the active tab when omitted"
      • changedInput schema / properties / url / description
        Previous value: -"Absolute URL to navigate to"New value: +"Absolute URL to navigate to, including the scheme"
      • addedInput schema / properties / url / examples
        Added value: +[
        +  "https://github.com/notifications"
        +]
      • addedInput schema / properties / url / format
        Added value: +"uri"
    • Changedsession_press5 fields changed
      • addedInput schema / properties / key / description
        Added value: +"One of Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown, Space"
      • addedInput schema / properties / ref / examples
        Added value: +[
        +  "@e12"
        +]
      • addedInput schema / properties / ref / pattern
        Added value: +"^@?e\\d+$"
      • addedInput schema / properties / selector / description
        Added value: +"CSS selector for the element to press the key on; uses the focused element when omitted"
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to act on; uses the active tab when omitted"
    • Changedsession_read_page1 field changed
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to read; uses the active tab when omitted"
    • Changedsession_record_events7 fields changed
      • addedInput schema / properties / limit / default
        Added value: +100
      • addedInput schema / properties / limit / description
        Added value: +"Maximum events to return in this page (default 100)"
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / offset / default
        Added value: +0
      • addedInput schema / properties / offset / description
        Added value: +"Number of events to skip, for paging through a long recording (default 0)"
      • addedInput schema / properties / offset / minimum
        Added value: +0
      • addedInput schema / properties / sessionId / description
        Added value: +"Recording session to read, from session_record_list"
    • Changedsession_record_replay4 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Stopped recording session to replay, from session_record_list"
      • addedInput schema / properties / speed / default
        Added value: +1
      • changedInput schema / properties / speed / description
        Previous value: -"Replay speed multiplier (default 1)"New value: +"Replay speed multiplier; 1 is the recorded pace, 2 is twice as fast (default 1)"
      • addedInput schema / properties / speed / exclusiveMinimum
        Added value: +0
    • Changedsession_record_start4 fields changed
      • addedInput schema / properties / maxEvents / default
        Added value: +10000
      • changedInput schema / properties / maxEvents / description
        Previous value: -"Maximum number of events to capture (default 10000)"New value: +"Maximum events to keep, oldest dropped first (default 10000)"
      • addedInput schema / properties / maxEvents / minimum
        Added value: +1
      • changedInput schema / properties / sessionId / description
        Previous value: -"Optional recording session id; one is generated if omitted"New value: +"Recording session id; one is generated when omitted"
    • Changedsession_record_stop1 field changed
      • changedInput schema / properties / sessionId / description
        Previous value: -"Session to stop; required only when multiple recordings are active"New value: +"Session to stop; required only when more than one recording is active"
    • Changedsession_screenshot7 fields changed
      • addedInput schema / properties / format / default
        Added value: +"png"
      • addedInput schema / properties / format / description
        Added value: +"png (default, lossless) or jpeg (smaller, and the only format quality applies to)"
      • changedInput schema / properties / quality / description
        Previous value: -"JPEG quality 0-100"New value: +"JPEG quality from 0 to 100; ignored for png"
      • addedInput schema / properties / quality / maximum
        Added value: +100
      • addedInput schema / properties / quality / minimum
        Added value: +0
      • changedInput schema / properties / tabId / description
        Previous value: -"Tab to capture (defaults to the active tab)"New value: +"Tab to capture; uses the active tab when omitted"
      • addedInput schema / properties / windowId / description
        Added value: +"Window to capture from; uses the current window when omitted"
    • Changedsession_select5 fields changed
      • changedInput schema / properties / index / description
        Previous value: -"Option index to choose"New value: +"Zero-based option index to choose; tried last"
      • addedInput schema / properties / ref / examples
        Added value: +[
        +  "@e12"
        +]
      • addedInput schema / properties / ref / pattern
        Added value: +"^@?e\\d+$"
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to act on; uses the active tab when omitted"
      • changedInput schema / properties / value / description
        Previous value: -"Option value to choose"New value: +"Option value to choose; tried first"
    • Changedsession_snapshot1 field changed
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to snapshot; uses the active tab when omitted"
    • Changedsession_store_login4 fields changed
      • addedInput schema / properties / domain / description
        Added value: +"Domain the credentials belong to, such as \"github.com\""
      • addedInput schema / properties / masterPassword / description
        Added value: +"Passphrase that unlocks the extension's vault. Never log or persist it"
      • addedInput schema / properties / password / description
        Added value: +"Password to encrypt and store. It is never returned by any tool"
      • addedInput schema / properties / username / description
        Added value: +"Username or email to store"
    • Changedsession_type5 fields changed
      • addedInput schema / properties / ref / examples
        Added value: +[
        +  "@e12"
        +]
      • addedInput schema / properties / ref / pattern
        Added value: +"^@?e\\d+$"
      • addedInput schema / properties / selector / description
        Added value: +"CSS selector for the field to type into"
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to act on; uses the active tab when omitted"
      • addedInput schema / properties / text / description
        Added value: +"Text to type, one character at a time"
    • Changedsession_wait6 fields changed
      • addedInput schema / properties / condition / description
        Added value: +"What to wait for: load (the load event), url (value appears in the URL), or selector (element appears)"
      • addedInput schema / properties / tabId / description
        Added value: +"Tab to wait on; uses the active tab when omitted"
      • addedInput schema / properties / timeoutMs / default
        Added value: +10000
      • changedInput schema / properties / timeoutMs / description
        Previous value: -"Maximum wait in milliseconds"New value: +"Maximum wait in milliseconds (default 10000)"
      • addedInput schema / properties / timeoutMs / minimum
        Added value: +1
      • changedInput schema / properties / value / description
        Previous value: -"URL substring or selector to wait for"New value: +"URL substring or CSS selector to wait for; required for the url and selector conditions"
  2. 21 tool updatesv1.1.1
    • First observedsession_click
    • First observedsession_evaluate
    • First observedsession_fill
    • First observedsession_health
    • First observedsession_install
    • First observedsession_list_tabs
    • First observedsession_login
    • First observedsession_navigate
    • First observedsession_press
    • First observedsession_read_page
    • First observedsession_record_events
    • First observedsession_record_list
    • First observedsession_record_replay
    • First observedsession_record_start
    • First observedsession_record_stop
    • First observedsession_screenshot
    • First observedsession_select
    • First observedsession_snapshot
    • First observedsession_store_login
    • First observedsession_type
    • First observedsession_wait

TDQS

A4.5/5.0
Disambiguation5/5

Each tool has a distinct, well-defined purpose with clear boundaries: navigation, reading, interacting, waiting, recording, and login are all separated. Tools like session_read_page vs session_snapshot and session_fill vs session_type explicitly differentiate their use cases and recommend alternatives, eliminating ambiguity.

Naming Consistency5/5

All tools follow a strict 'session_' prefix with a verb or verb_noun structure in snake_case, such as session_list_tabs, session_close_tab, session_record_start. The pattern is uniform, making it easy to predict and group related actions.

Tool Count4/5

At 22 tools, the count is slightly above the typical 3-15 range, but each tool addresses a distinct browser automation capability (tab, navigation, interaction, recording, login). The granularity is justified by the breadth of the domain, though it borders on heavy.

Completeness5/5

The tool surface covers the full lifecycle of browser session automation: setup, health check, tab management, page navigation, reading and interacting (click, fill, type, select, press), waiting, screenshots, login credential storage, and full recording/replay. There are no obvious dead ends; all workflows from basic browsing to complex testing workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    single-binary MCP server that gives AI agents a browser. 66 tools for navigation, form filling, data extraction, screenshots, and DOM diffing — built on pure Chrome DevTools Protocol.
    11
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Chrome extension + MCP server. Lets coding agents (Claude Code, Codex CLI) drive your real Chrome — sessions intact, 2FA stays with the user. 26 browser tools: form fill on React/CodeMirror/Monaco, privileged fetch that bypasses page CSP, authenticated downloads, in-extension docx parsing. Battle-tested by 400+ hours of real agentic browser work before public v0.9 release.
    31
    2
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that lets AI assistants drive real Chromium browsers — navigate, click, type, read pages, run OCR, and record network traffic. 43 tools, credentials stay local, zero telemetry.
    -
  • A
    license
    A
    quality
    A
    maintenance
    MCP server + Chrome extension that drive the user's real, logged-in Chrome over a local WebSocket. 59 token-efficient web-dev tools: compact element refs instead of screenshots, server-side table filtering, visual regression, accessibility/SEO/security audits, network mocking. Also runs on ChromeOS/Crostini.
    63
    77
    3
    MIT

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/t3ratech/mcp-session-bridge'

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