io.github.t3ratech/mcp-session-bridge
NPM · @T3RATECH/MCP-SESSION-BRIDGE · SCANNED SEP 20
Drive a browser you are already signed into, through the free T3rnel Browser extension.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 14 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability78
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3047 tokens (~138/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 22 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities20
- Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
How do I install the io.github.t3ratech/mcp-session-bridge server?
io.github.t3ratech/mcp-session-bridge runs locally as an npm package, launched with npx -y @t3ratech/mcp-session-bridge. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @t3ratech/mcp-session-bridge
claude mcp add t3ratech-mcp-session-bridge -- npx -y @t3ratech/mcp-session-bridge
{
"mcpServers": {
"t3ratech-mcp-session-bridge": {
"command": "npx",
"args": [
"-y",
"@t3ratech/mcp-session-bridge"
]
}
}
} {
"servers": {
"t3ratech-mcp-session-bridge": {
"command": "npx",
"args": [
"-y",
"@t3ratech/mcp-session-bridge"
]
}
}
} codex mcp add t3ratech-mcp-session-bridge -- npx -y @t3ratech/mcp-session-bridge
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"t3ratech-mcp-session-bridge": {
"type": "local",
"command": [
"npx",
"-y",
"@t3ratech/mcp-session-bridge"
],
"enabled": true
}
}
} openclaw mcp add t3ratech-mcp-session-bridge --command npx --arg -y --arg @t3ratech/mcp-session-bridge
mcp_servers:
t3ratech-mcp-session-bridge:
command: "npx"
args: ["-y", "@t3ratech/mcp-session-bridge"] {
"McpServers": {
"t3ratech-mcp-session-bridge": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@t3ratech/mcp-session-bridge"
]
}
}
} assistant mcp add t3ratech-mcp-session-bridge -t stdio -c npx -a -y @t3ratech/mcp-session-bridge
{
"mcpServers": {
"t3ratech-mcp-session-bridge": {
"command": "npx",
"args": [
"-y",
"@t3ratech/mcp-session-bridge"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 6 Sept 26 +15
- Malware scan: unverified → pass ▲ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/@t3ratech/mcp-session-bridge@1.2.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
session_click ~136
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | – | A ref from session_snapshot, such as @e12, used instead of selector |
| selector | string | yes | CSS selector for the element to click |
| tabId | integer | – | Tab to act on; uses the active tab when omitted |
No output schema declared.
No examples provided.
session_close_tab ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| tabId | integer | yes | Tab to close, from session_list_tabs |
No output schema declared.
No examples provided.
session_evaluate ~146
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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | JavaScript to run in the page's own context. Its completion value is returned, so end with the expression you want back |
| tabId | integer | – | Tab to run in; uses the active tab when omitted |
No output schema declared.
No examples provided.
session_fill ~164
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | – | A ref from session_snapshot, such as @e12, used instead of selector |
| selector | string | yes | CSS selector for the field to fill |
| tabId | integer | – | Tab to act on; uses the active tab when omitted |
| value | string | yes | Text to place in the field, replacing whatever is there |
No output schema declared.
No examples provided.
session_health ~83
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
session_install ~61
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
session_list_tabs ~66
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
session_login ~172
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain the credentials are saved for, such as "github.com" |
| masterPassword | string | – | Passphrase that unlocks the extension's vault. Never log or persist it |
| submit | boolean | – | Ignored; kept so older callers do not break |
| tabId | integer | – | Tab holding the sign-in form; uses the active tab when omitted |
No output schema declared.
No examples provided.
session_navigate ~150
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.
| Name | Type | Req | Description |
|---|---|---|---|
| newTab | boolean | – | Open in a new tab instead of reusing the active tab (default false) |
| tabId | integer | – | Tab id from session_list_tabs; uses the active tab when omitted |
| url | string | yes | Absolute URL to navigate to, including the scheme |
No output schema declared.
No examples provided.
session_press ~218
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.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | One of Enter, Tab, Escape, Backspace, Delete, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown, Space |
| ref | string | – | A ref from session_snapshot, such as @e12, used instead of selector |
| selector | string | – | CSS selector for the element to press the key on; uses the focused element when omitted |
| tabId | integer | – | Tab to act on; uses the active tab when omitted |
No output schema declared.
No examples provided.
session_read_page ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| tabId | integer | – | Tab to read; uses the active tab when omitted |
No output schema declared.
No examples provided.
session_record_events ~167
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum events to return in this page (default 100) |
| offset | integer | – | Number of events to skip, for paging through a long recording (default 0) |
| sessionId | string | yes | Recording session to read, from session_record_list |
No output schema declared.
No examples provided.
session_record_list ~74
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
session_record_replay ~164
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.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | Stopped recording session to replay, from session_record_list |
| speed | number | – | Replay speed multiplier; 1 is the recorded pace, 2 is twice as fast (default 1) |
No output schema declared.
No examples provided.
session_record_start ~143
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.
| Name | Type | Req | Description |
|---|---|---|---|
| maxEvents | integer | – | Maximum events to keep, oldest dropped first (default 10000) |
| sessionId | string | – | Recording session id; one is generated when omitted |
| tabId | integer | – | Tab to record; uses the active tab when omitted |
No output schema declared.
No examples provided.
session_record_stop ~97
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.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | Session to stop; required only when more than one recording is active |
No output schema declared.
No examples provided.
session_screenshot ~142
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | png (default, lossless) or jpeg (smaller, and the only format quality applies to) |
| quality | integer | – | JPEG quality from 0 to 100; ignored for png |
| tabId | integer | – | Tab to capture; uses the active tab when omitted |
| windowId | integer | – | Window to capture from; uses the current window when omitted |
No output schema declared.
No examples provided.
session_select ~213
Choose an option in a <select> 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.
| Name | Type | Req | Description |
|---|---|---|---|
| index | integer | – | Zero-based option index to choose; tried last |
| ref | string | – | A ref from session_snapshot, such as @e12, used instead of selector |
| selector | string | yes | CSS selector for the <select> |
| tabId | integer | – | Tab to act on; uses the active tab when omitted |
| text | string | – | Visible option text to choose; matched exactly first, then by substring |
| value | string | – | Option value to choose; tried first |
No output schema declared.
No examples provided.
session_snapshot ~141
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.
| Name | Type | Req | Description |
|---|---|---|---|
| tabId | integer | – | Tab to snapshot; uses the active tab when omitted |
No output schema declared.
No examples provided.
session_store_login ~136
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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain the credentials belong to, such as "github.com" |
| masterPassword | string | – | Passphrase that unlocks the extension's vault. Never log or persist it |
| password | string | yes | Password to encrypt and store. It is never returned by any tool |
| username | string | yes | Username or email to store |
No output schema declared.
No examples provided.
session_type ~162
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | – | A ref from session_snapshot, such as @e12, used instead of selector |
| selector | string | yes | CSS selector for the field to type into |
| tabId | integer | – | Tab to act on; uses the active tab when omitted |
| text | string | yes | Text to type, one character at a time |
No output schema declared.
No examples provided.
session_wait ~208
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.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | yes | What to wait for: load (the load event), url (value appears in the URL), or selector (element appears) |
| tabId | integer | – | Tab to wait on; uses the active tab when omitted |
| timeoutMs | integer | – | Maximum wait in milliseconds (default 10000) |
| value | string | – | URL substring or CSS selector to wait for; required for the url and selector conditions |
No output schema declared.
No examples provided.
What is the io.github.t3ratech/mcp-session-bridge server?
io.github.t3ratech/mcp-session-bridge is listed in the public MCP registry as io.github.t3ratech/mcp-session-bridge. Drive a browser you are already signed into, through the free T3rnel Browser extension. This page covers its npm package (@t3ratech/mcp-session-bridge).
Is the io.github.t3ratech/mcp-session-bridge server safe to use?
io.github.t3ratech/mcp-session-bridge scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.t3ratech/mcp-session-bridge server expose?
io.github.t3ratech/mcp-session-bridge exposes 22 tools: session_install, session_health, session_list_tabs, session_close_tab, session_navigate, and 17 more. Their descriptions and schemas cost roughly 3,047 tokens of context every time the server is loaded.
Is the io.github.t3ratech/mcp-session-bridge server still maintained?
io.github.t3ratech/mcp-session-bridge is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.t3ratech/mcp-session-bridge server under?
io.github.t3ratech/mcp-session-bridge declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.