Firefox Tab Management Agent MCP
Provides tools for managing tabs and native tab groups in a live Firefox session, including listing tabs and groups, opening background URLs, creating and moving tabs into exact groups, ungrouping, and verifying state after writes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Firefox Tab Management Agent MCPOpen these URLs in Firefox in the background and group them as 'Reading Queue'."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agent Bridge for Tab Management in Firefox
Gives any local AI agent precise control over your live Firefox tabs and native tab groups — through a browser extension and a local MCP server, with an optional Agent Skill teaching the exact-match, verify-after-write workflow.
Why this exists
AI agents can already debug Firefox: Mozilla's official Firefox DevTools MCP exposes the console, network, and DOM. But nothing in the official ecosystem lets an agent actually manage tabs or native tab groups — there is no MCP interface for opening pages, filing links into a "Reading Queue" group, moving tabs between groups or windows, or cleaning up after a task. Agents are left with fragile coordinate-clicking or asking the user to do it by hand.
This project closes that gap with a small Firefox extension and a local MCP server that wrap Firefox's own tabs and tabGroups APIs into a verified tool surface:
the extension talks to Firefox directly over loopback — no accounts, no cloud, no telemetry;
the MCP server exposes the tools to any stdio-compatible agent (Claude Code, Codex, Hermes, OpenClaw, OpenCode, WorkBuddy);
the optional Agent Skill teaches agents the exact-match, verify-after-write workflow.
Related MCP server: universal-browser-bridge
What it does
Lists your live tabs and tab groups.
Opens
http/httpspages in the background (no focus stealing).Creates, moves, and removes tab groups with exact names.
Pins, unpins, and duplicates tabs; restores accidentally closed tabs; moves them across windows.
Opens batches of URLs into a group in one atomic step; merges, renames, colors, and collapses groups.
Knows when a page finished loading (event-driven) and which tab is active.
Refuses ambiguous matches, duplicate group names, cross-window grouping, and unpinning without your OK.
Verifies every change against Firefox before reporting success.
What you can do with it
Collect now, read later
You find articles, docs, and research links while browsing a feed, chatting, or working on another device. Instead of opening and organizing every page yourself, send the URLs to your agent:
Open these URLs in Firefox in the background and put every new tab in a group named "Reading Queue" (create it only if missing).
Pages open without stealing focus and stay together in one group. Later, sit down and work through the group as a focused reading queue. Firefox tab groups become your inbox for the web — less clutter, fewer context switches, and zero manual organizing.
Organize research as you go
While reading a feed or working across topics, send links in small batches:
Open these three articles in the background and group them as "Research".
Each topic gets its own tidy group without interrupting what you are doing.
Regroup with one sentence
Changed your mind about the structure? Just say so:
Move every tab from the "Trading" group into "Investing".
One atomic merge_firefox_tab_groups call moves the whole group, removes the now-empty source group, and verifies every tab in the target — no per-tab loops.
Put the important tab first
Working across many open pages? Keep order meaningful:
Move the tab for "quarterly report" to the front of the window.
Exact matching finds the right tab and move_firefox_tab places it where you want, verified against Firefox.
Reset when a task is done
Close the "Finished" group and ungroup everything else in this window.
close_firefox_tab_group closes a whole group (and its empty shell) with verification; ungrouping returns the rest to a clean state — all checked against Firefox before being reported.
Start fresh in a new window
Open a new window in the background and put these links into a group named "Research" there.
new_firefox_window creates the verified window, then the group tools file the links into it — a dedicated research window without leaving your current context.
Keep groups tidy
Rename the "Temp" group to "Later" and collapse it until I come back.
Exact rename with duplicate-title rejection, plus verified collapse/expand, keep your tab-bar readable with one sentence.
Recurring routines
Make it a habit: throughout the day, send article links, docs, and reference pages to your agent. It files them into the right group automatically, so your tabs stay organized with no manual effort at all.
Install in three steps
1. Install the extension
Download tab_management_agent_bridge_for_firefox-0.5.10.xpi from the latest release and open it with Firefox.
2. Run setup once
npm run quickstartThis builds everything and registers the local bridge:
creates the local configuration (port + secret token, mode
0600),registers the Native Messaging Host so Firefox can reach it,
generates a token-free client configuration in
.local/mcp-config.json.
That's it. The token is created and managed automatically — you never see it, and no client config contains it. Re-run npm run setup any time to repair a broken registration.
3. Connect your agent
Claude Code
claude mcp add firefox-tabs -- node /absolute/path/to/agent-bridge-for-tab-management-in-firefox/dist/server/index.jsThen restart Claude Code. Or add the equivalent mcpServers entry to ~/.claude.json.
Codex
.local/add-to-codex.sh # macOS / Linux
.local/add-to-codex.ps1 # Windows PowerShellThen restart Codex.
Hermes
Add to ~/.hermes/config.yaml:
mcp_servers:
firefox-tabs:
command: node
args:
- /absolute/path/to/agent-bridge-for-tab-management-in-firefox/dist/server/index.js
enabled: trueThen restart Hermes (hermes gateway restart).
OpenClaw
Add to ~/.openclaw/openclaw.json:
{
mcp: {
servers: {
"firefox-tabs": {
command: "node",
args: ["/absolute/path/to/agent-bridge-for-tab-management-in-firefox/dist/server/index.js"],
enabled: true
}
}
}
}Or via CLI: openclaw mcp add firefox-tabs --command node --arg /absolute/path/to/dist/server/index.js
OpenCode
Add to ~/.config/opencode/opencode.jsonc:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"firefox-tabs": {
"type": "local",
"command": ["node", "/absolute/path/to/agent-bridge-for-tab-management-in-firefox/dist/server/index.js"],
"enabled": true
}
}
}WorkBuddy
Add to ~/.workbuddy/mcp.json:
{
"mcpServers": {
"firefox-tabs": {
"command": "node",
"args": ["/absolute/path/to/agent-bridge-for-tab-management-in-firefox/dist/server/index.js"]
}
}
}Any other MCP client
Merge .local/mcp-config.json (or the equivalent below) into your client config:
{
"mcpServers": {
"firefox-tabs": {
"command": "node",
"args": ["/absolute/path/to/agent-bridge-for-tab-management-in-firefox/dist/server/index.js"]
}
}
}The server reads the port and token from the shared local configuration automatically. No env vars, no secrets in your client config.
Verify
Ask your agent:
Check the Firefox bridge status, list my tab groups, open https://example.com, and put it in an exact group named Research (create it only if missing). Verify the group ID.
Or open the extension's options page: it shows the auto-configuration status, connection state, and local port — nothing else to configure.
Multiple agents at once
A shared broker on 127.0.0.1:8767 multiplexes any number of agents over the single Firefox connection. The first MCP server you start becomes the broker; every other server instance automatically connects to it as a client — so Claude Code, Hermes, OpenClaw, Codex, and OpenCode can all manage the same Firefox session simultaneously. Each client still authenticates with the same shared secret from the local configuration; nothing else changes in your client configs.
Works alongside the official Firefox MCP
Mozilla's official Firefox DevTools MCP gives agents debugging access through DevTools — console, network, and DOM inspection. It does not manage tabs or native tab groups.
This project covers exactly that gap: opening, closing, duplicating, muting, pinning, and restoring tabs, plus creating, moving, merging, renaming, recoloring, collapsing, and closing native tab groups — with exact matching, cross-window support, and post-write verification. The feature sets do not overlap, so the two servers work side by side in the same client: use Firefox DevTools MCP for debugging, and this bridge for tab and group organization.
Useful commands
npm start # start the MCP server
npm run doctor # check config, permissions, and Native Host registration
npm run uninstall # remove the Native Host registration (keeps config)
npm run uninstall --purge # also delete the local configurationPrivacy & security
Runs entirely on your machine; the Native Messaging Host connects to nothing remote.
The WebSocket bridge binds to
127.0.0.1only and requires the automatically managed token (timing-safe comparison, no token-less fallback).The extension can only talk to the signed extension ID via Native Messaging.
The extension never reads page contents. See PRIVACY.md and SECURITY.md.
Development
Firefox 142+, Node.js 20+:
npm ci
npm run checkLicensed under MPL-2.0. Independent project, not endorsed by Mozilla.
Available Tools
25 toolsclose_firefox_tab_groupA
Close every tab in one exactly named Firefox group (and remove the now-empty group) after verification.
| Name | Required | Description | Default |
|---|---|---|---|
| windowId | No | Window to look in; required when the title exists in more than one window. | |
| groupTitle | Yes | Existing group title; matching is exact and case-sensitive. | |
| confirmClose | Yes | Must be explicitly true; closing a whole group is irreversible. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety disclosure burden. It discloses two key side effects: every tab in the group is closed and the empty group is removed. It does not spell out reversibility or failure behavior, but the schema's confirmClose parameter already establishes that closing a group is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence contains the key details: scope, exact-match requirement, verification, and the side effect of removing the empty group. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus high-coverage schema sufficiently describes the tool's behavior for a destructive group-close operation. It lacks explicit return-value or error semantics, but there is no output schema and the main usage edge cases, such as ambiguous titles, are covered in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents groupTitle matching, confirmClose irreversibility, and optional windowId with a condition. The description adds only the context of "exactly named" and "after verification", which is useful but not essential because the schema already provides the parameter meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies a specific destructive action: "Close every tab in one exactly named Firefox group (and remove the now-empty group)". This distinguishes it from sibling tools like close_firefox_tabs, rename_firefox_tab_group, and merge_firefox_tab_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended use: close an entire group by exact title rather than closing tabs individually. It does not explicitly state when to use this tool instead of close_firefox_tabs or other alternatives, nor does it warn against using it when only some tabs should be closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_firefox_tabsA
Close a batch of exactly identified Firefox tabs by their tabId and verify that Firefox no longer reports them.
| Name | Required | Description | Default |
|---|---|---|---|
| tabIds | Yes | Unique tab IDs returned by list_firefox_tabs. | |
| confirmClose | Yes | Must be explicitly true; closing tabs is irreversible. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the postcondition behavior: it closes the specified tabs and verifies that Firefox no longer reports the tabs. Since no annotations are provided, the description bears the full behavioral disclosure burden, but it does not cover failure handling, partial failures, or the exact shape of the verification result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or repetition. It packs the target, the method of identification, and the post-condition verification into minimal wording, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple batch-close tool, the description covers the operation, the input basis, and the verification behavior. The schema supplies the confirmation and irreversibility details. Its main weakness is not describing the return value or error behavior, but this is acceptable given the narrative 'verify that Firefox no longer reports them' strongly implies a success-oriented check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters (tabIds and confirmClose) already have clear, descriptive schema documentation. The tool description adds little beyond reinforcing 'exactly identified' and tabId-based selection, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action with a direct verb ('Close'), identifies the resource ('Firefox tabs'), and adds the exact targeting mechanism ('by their tabId'). It also distinguishes itself from the sibling close_firefox_tab_group by emphasizing batch closure of individually identified tabs rather than a group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 the tool: when there is a batch of exactly identified tab IDs to close. However, it does not explicitly state when not to use it, nor does it name alternative tools for closing tab groups or individual tabs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_firefox_tab_groupA
Create a new, exactly titled Firefox group from one or more ungrouped tabs in the same window, then verify every tab. Fails if an exact group already exists.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | New group title; matching is exact and case-sensitive. | |
| tabIds | Yes | Unique IDs of ungrouped tabs in one window. | |
| collapsed | No | Whether the new group should start collapsed. | |
| allowUnpin | No | Set true only after the user confirms that grouping may unpin pinned tabs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses post-creation verification and the duplicate-title failure condition, but omits the behavior around pinned tabs (allowUnpin), any permission requirements, or what happens if the input contract is violated. Partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, information-dense sentence that front-loads the main action and includes the key caveats. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no output schema, and no annotations. The description covers the core operation and a failure mode, but doesn't mention return value, pinned-tab behavior without allowUnpin, or prerequisites like the Firefox bridge. Schema descriptions help fill some gaps but not all.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 a bit of context (exact title matching, same-window constraint) but largely repeats what the schema already documents. No significant additional param meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Create a new, exactly titled Firefox group from one or more ungrouped tabs in the same window, then verify every tab.' This clearly distinguishes it from sibling tools like list_firefox_tab_groups or move_firefox_tab_to_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (for creating a new group from ungrouped tabs) and notes that it fails if an exact group already exists. It does not explicitly name alternative tools, but the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_firefox_tabA
Duplicate one exactly identified Firefox tab and verify the new tab's URL and window.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | Exactly one selector form: tabId, URL, or title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose that the tool duplicates a tab and verifies the new tab's URL and window, which adds useful behavioral context. However, it does not mention failure behavior, whether the original tab remains open, or any side effects beyond duplication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, target, and verification step without filler or redundancy. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple and the schema is rich, but there is no output schema and the description does not specify what the tool returns after verification. It covers the core behavior but lacks return-value detail and usage context, leaving moderate gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the selector parameter fully documented via its nested anyOf options. The description adds only the phrase 'exactly identified,' which does not meaningfully supplement the schema's own 'Exactly one selector form' explanation. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Duplicate') with a clear resource ('Firefox tab') and adds unique scope ('exactly identified' and 'verify the new tab's URL and window'). This clearly distinguishes it from sibling tools like open_firefox_tab or move_firefox_tab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as open_firefox_tab or wait_for_firefox_tab. It implies a use case (duplicating a tab by selector) but does not state exclusions or mention sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_firefox_tabA
Return the currently active tab of the focused Firefox window (or null if none).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does disclose the important null-if-none behavior and the focused-window scope, but it does not mention side effects (though 'Return' implies read-only) or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word adds meaning, including the scope and the null fallback.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a very simple zero-parameter getter, and the description provides enough context about what it returns and the null case. However, since there is no output schema, specifying the shape/content of the returned active tab would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema confirms this, so the description does not need to document parameter meaning. Per the zero-parameter baseline, this is appropriately handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and clear resource ('currently active tab of the focused Firefox window'), and distinguishes it from sibling tools like list_firefox_tabs by focusing on the active tab only. The null case is also specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's purpose clear and implies usage when the active tab of the focused window is needed, but it does not explicitly mention when to use an alternative (e.g., list_firefox_tabs for all tabs) or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_firefox_bridge_statusA
Check whether the local Firefox extension is connected to this MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must convey behavior. It states the tool checks connectivity, but does not disclose the return format, potential failure modes, or whether it might require certain state. For a simple status check this is adequate, but it could be more informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no superfluous words. It is front-loaded and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema, no annotations), the one-sentence description covers the essential purpose. It could mention what the status looks like, but the low complexity makes this less critical. The description is complete enough for an agent to select and invoke the tool appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is an empty object. There is nothing for the description to explain, so the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and a clear resource ('whether the local Firefox extension is connected to this MCP server'). It clearly distinguishes this from sibling tools that manipulate tabs/tab groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool's action but does not explicitly say when to use it or when not to use it. The sibling context implies it is a diagnostic tool for verifying connectivity before other Firefox operations, but no explicit usage guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_firefox_tab_groupsA
List Firefox tab groups, optionally restricted to one window ID.
| Name | Required | Description | Default |
|---|---|---|---|
| windowId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. The verb 'List' strongly implies a read-only operation, and the 'optionally restricted' clause conveys a filtering behavior. However, it does not disclose return format, pagination, or error behavior (e.g., what happens with an invalid windowId). This is a minimal but not fully transparent disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with only 11 words, front-loading the verb and resource. Every word contributes value; there is no fluff or repetition of schema constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description covers the core functionality: listing groups and the optional filter. It does not mention return format or edge cases, but these are less critical given the tool's simplicity. It is fairly complete for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides zero description for the windowId parameter, but the description adds meaningful context: 'optionally restricted to one window ID' explains that windowId is a filter. It does not elaborate on how to obtain a window ID, but for a single optional param with clear constraints in the schema, this is sufficient to understand its role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with the specific verb 'List' and clearly identifies the resource: 'Firefox tab groups.' It also notes the optional window restriction, which distinguishes it from sibling tools like list_firefox_tabs (which lists tabs) and create_firefox_tab_group (which creates groups). This makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need to enumerate Firefox tab groups, optionally filtered by a window ID. However, it does not explicitly mention alternatives or exclusion criteria. The sibling tool names provide some context, but the description itself does not say 'use this instead of list_firefox_tabs' or similar. This is adequate but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_firefox_tabsA
List Firefox tabs with stable IDs, exact URLs, titles, window IDs, and current group IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must convey behavior. It adds useful context like 'stable IDs' and 'exact URLs', implying reliability and accuracy. However, it does not disclose error handling, empty results, or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, then specifies return fields. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the return fields, but omits guidance on the scope parameter and any usage context. For a simple tool with no output schema, the description is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional 'scope' parameter is fully left to the schema enum, with no explanation in the description. Schema coverage is 0% and the description doesn't compensate by explaining how scope affects the listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'List' and resource 'Firefox tabs', enumerates exact fields returned (stable IDs, URLs, titles, window IDs, group IDs), clearly distinguishing from sibling list_firefox_tab_groups which lists groups, not tabs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit mention of when to use this tool versus siblings. Usage is implied by the verb 'List' but no alternatives or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_firefox_windowsA
List Firefox windows with per-window tab and group counts, and each group's title and size. Use it to pick a target window for cross-window moves.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. The description states what information is returned (per-window tab and group counts, group titles and sizes) but does not disclose any side effects, permissions, or limitations. Since this is a read-only listing tool, the lack of side-effect disclosure is less critical, but the description could mention that it only lists windows and does not modify anything. The description adds some value beyond the schema (which has no parameters) by specifying the output content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and output, and the second sentence provides a clear use case. Every word earns its place; there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is complete enough. It specifies the output content (per-window tab and group counts, group titles and sizes) and the intended use case. It could potentially mention that it returns a list of windows, but that is implied. The description is adequate for an agent to understand what the tool does and when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100% (vacuously, since there are no parameters). The description adds meaning by explaining what the tool returns, which is the only relevant semantic content. With no parameters, the description's role is to clarify the tool's output, which it does effectively. Baseline for 0 params is 4, and the description meets that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Firefox windows with per-window tab and group counts, and each group's title and size. It uses a specific verb ('List') and resource ('Firefox windows'), and distinguishes itself from sibling tools like list_firefox_tabs and list_firefox_tab_groups by focusing on windows and their aggregate counts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: 'Use it to pick a target window for cross-window moves.' This provides clear context for usage, though it doesn't explicitly mention when not to use it or name alternative tools for other scenarios. However, the purpose is clear enough that an agent can infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_firefox_tab_groupsA
Move every tab of the source group into the target group in one verified operation, then remove the now-empty source group.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target group title; matching is exact and case-sensitive. | |
| from | Yes | Source group title; matching is exact and case-sensitive. | |
| windowId | No | Window for both groups; required when the titles exist in more than one window. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to rely on, the description discloses key behaviors: it moves all tabs, operates 'in one verified operation' (implying atomicity), and removes the empty source group. It stops short of edge cases like error handling or empty groups, but the most consequential side-effects are clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately identifies the action and its result. Every word adds value; no redundancy or fluff is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (3 parameters, no output schema), the description sufficiently explains the operation's outcome and side-effects. It could elaborate on what 'verified' means or how windowId affects behavior, but these are optional enhancements rather than critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover all three parameters with clear semantics (e.g., case-sensitive exact matching for `to` and `from`, and disambiguation for `windowId`). The description adds no extra parameter-level detail beyond reflecting the operation's intent, so it stays at the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific operation: 'Move every tab of the source group into the target group' and adds a distinctive side-effect ('then remove the now-empty source group'). It differentiates itself from tab-level tools like move_firefox_tab_to_group by the group-level scope and cleanup action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the description's specification of merging and cleaning up, but no explicit alternatives, exclusions, or 'when to use this instead of' hints are given. An agent infers that it's for merging groups, but the description does not guide comparing with move_firefox_tabs_to_group or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_firefox_tabA
Move one exactly identified Firefox tab to a target position within its own window and verify the result. Ambiguous matches fail safely.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | 0-based target position in the tab's window; -1 moves it to the end. | |
| selector | Yes | Exactly one selector form: tabId, URL, or title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: verification after the move and fail-safe handling of ambiguous matches. With no annotations, this description carries the full burden and adequately covers the operation's main side effects and error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the action and key constraints, consisting of two clear sentences without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the action, the scope (same window), verification, and failure behavior. No output schema exists, so return details are not required. It is complete for this operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides detailed descriptions for selector and index. The description adds no new parameter semantics beyond echoing 'exactly identified tab', which is redundant given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool moves one exactly identified tab to a target position within its own window, with verification and fail-safe on ambiguous matches. This distinguishes it from sibling tools like move_firefox_tab_to_group or move_firefox_tab_to_window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context by specifying 'within its own window' and mentions verification and fail-safe behavior, but does not explicitly compare to alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_firefox_tabs_to_groupA
Move a batch of exactly identified Firefox tabs into one existing, exactly named group in one verified operation (cross-window supported with an explicit windowId).
| Name | Required | Description | Default |
|---|---|---|---|
| tabIds | Yes | Unique tab IDs returned by list_firefox_tabs. | |
| windowId | No | Target window for the group; omit to use the first tab's window. | |
| allowUnpin | No | Set true only after the user confirms that grouping may unpin pinned tabs. | |
| groupTitle | Yes | Existing group title; matching is exact and case-sensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral transparency. It mentions 'one verified operation' and cross-window support, but omits potential side effects like unpinning (implied by allowUnpin) and does not describe error handling or prerequisites (e.g., tabs must be from list_firefox_tabs). It provides partial transparency but leaves important details to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no filler. Every word adds meaning without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives an overview but lacks critical nuances: it does not explicitly mention that allowUnpin may cause tabs to be unpinned, nor what happens if the group is not found or tabs are not valid. Given no annotations and no output schema, more behavioral detail would be helpful, but the essential operation is conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions, so baseline is 3. The description adds useful context: 'exactly identified' for tabIds (implying prior enumeration), 'existing, exactly named' for groupTitle (emphasizing exact match), and 'cross-window supported with an explicit windowId' for windowId. This goes beyond the schema's static definitions, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('move'), the objects ('a batch of exactly identified Firefox tabs'), and the target ('into one existing, exactly named group'), explicitly distinguishing it from the singular move_firefox_tab_to_group by emphasizing batch and cross-window capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use the tool (for batch moves, cross-window scenarios) and implies prerequisites (exact tab IDs and group name). It does not explicitly exclude alternatives like the singular move, but the 'batch' and 'exactly identified' phrasing provides clear context. No explicit exclusions are given, but the context is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_firefox_tab_to_groupA
Move one exactly identified Firefox tab into an existing, exactly named group in the same window and verify the result. Ambiguous matches fail safely.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | Exactly one selector form: tabId, URL, or title. | |
| windowId | No | Target window for the group; omit to use the tab's own window. | |
| allowUnpin | No | Set true only after the user confirms that grouping may unpin a pinned tab. | |
| groupTitle | Yes | Existing group title; matching is exact and case-sensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does disclose useful behaviors: 'verify the result' indicates a post-condition check, and 'Ambiguous matches fail safely' signals non-destructive handling of ambiguous selectors. However, it does not mention side effects like unpinning, permission requirements, or what happens on failure (e.g., error messages, no-op). For a mutation tool, this is modest transparency and justifies a 3 rather than a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, target, and key constraints ('exactly identified', 'existing', 'same window', 'verify', 'fail safely') with zero filler. Every phrase contributes to selection and safe invocation, making it an exemplar of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description should cover outcomes and errors more. It mentions 'verify the result' but does not describe what the verification returns or how failures are reported. It also does not clarify prerequisites (e.g., group must exist, tab must not be pinned unless allowUnpin). While the schema covers parameters, the description leaves some operational gaps for an agent planning invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; each parameter is already well-documented (e.g., selector forms, allowUnpin for pinned tabs, groupTitle case-sensitivity). The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies. It does not compensate or add extra nuance, but no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb+resource: 'Move one exactly identified Firefox tab into an existing, exactly named group in the same window.' It clearly distinguishes from siblings by emphasizing 'one', 'existing group', and 'same window', contrasting with move_firefox_tabs_to_group (multiple), move_firefox_tab_to_window (window target), and move_firefox_tab (likely generic move). The phrase 'exactly identified' and 'exactly named' further narrows scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when moving a single, uniquely identified tab to an existing group in the same window. It does not explicitly name alternatives (e.g., 'use move_firefox_tabs_to_group for multiple tabs' or 'use move_firefox_tab_to_window for different windows') and lacks explicit exclusions. The context is clear but no explicit when-not guidance is provided, so this falls short of a 4 or 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_firefox_tab_to_windowA
Move one exactly identified Firefox tab to another window (without grouping it) and verify the resulting window.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | 0-based target position in the target window; -1 = end. | |
| selector | Yes | Exactly one selector form: tabId, URL, or title. | |
| windowId | Yes | Target Firefox window. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full transparency burden. It discloses that the tool moves a tab to another window, excludes grouping, and verifies the result, which adds useful context. However, it does not mention permissions, destructiveness (e.g., if the source tab is removed), or what 'verify' actually returns or checks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It efficiently states the core action, key constraint ('without grouping it'), and verification behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex tool with a rich schema, the description successfully conveys the main purpose, the exact-identification constraint, and the verification behavior. The main gap is the lack of detail about what 'verify' entails or what the return value looks like, especially since no output schema is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters with detailed descriptions (selector forms, windowId, and index). The description's phrase 'exactly identified' loosely aligns with the schema's exact-match requirements but adds no new semantic detail beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Move' and resource 'Firefox tab to another window', clearly stating the action and destination. It also adds 'without grouping it' to distinguish from group-moving tools and 'verify the resulting window' to define the outcome, making it stand out from sibling tools like move_firefox_tab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without grouping it' implies this is for cross-window moves rather than group moves, but there is no explicit comparison to alternatives such as move_firefox_tab or move_firefox_tab_to_group. It doesn't state when to prefer this tool over others or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_firefox_windowA
Open a new Firefox window, optionally with an explicit http(s) URL, without stealing focus by default; returns the verified window ID and first tab.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL for the first tab of the new window. | |
| active | No | Whether the new window should become active. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses that focus isn't stolen by default and that the window is verified, but omits details like what happens if the URL is invalid or what the verification process entails. It provides some useful context but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one clear, front-loaded sentence, with no redundancy. It quickly covers purpose, optional URL, focus behavior, and return value without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two optional params and no output schema; the description covers the action, focus behavior, and return value. It lacks a bit on error cases but is adequately complete for low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the two params; the description adds the 'without stealing focus by default' nuance, which clarifies the 'active' param, but doesn't add syntax or format beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Open a new Firefox window' and specifies optional URL and focus behavior. It distinguishes this from sibling tools like open_firefox_tab by targeting a new window rather than a tab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to open a new window) and that it can take a URL, and mentions the optional active parameter. It doesn't explicitly exclude alternatives like open_firefox_tab, but the purpose is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_firefox_tabA
Open an explicit http:// or https:// URL in Firefox, inactive by default, and return the verified tab ID and window ID.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| active | No | Whether the new tab should become active. | |
| windowId | No | Firefox window in which to open the tab. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses useful behavioral traits like the tab being inactive by default and returning verified IDs, but it does not explain what 'verified' means, potential failure modes, permission requirements, or side effects beyond the obvious tab creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that wastes no words. It packs the core action, URL constraint, default behavior, and return values into a compact and readable form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description adequately covers the main behavior and return values. It does not explain what happens if windowId is omitted, but the schema's property descriptions fill that gap. The meaning of 'verified' could be clearer, but overall the description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with url lacking a description. The description adds important meaning by restricting url to 'explicit http:// or https://', which is beyond the schema's 'uri' format. The active and windowId parameters are already documented in the schema, and the description provides no extra nuance for them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: opening an explicit http:// or https:// URL in Firefox. It also adds specific scope details ('inactive by default') and return value ('verified tab ID and window ID'), which distinguishes it from sibling tools like list_firefox_tabs or create_firefox_tab_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for opening a Firefox tab with a URL and notes the default inactive behavior, but it does not explicitly state when to prefer this tool over alternatives or when not to use it. No alternative tools are mentioned, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_firefox_tabs_into_groupA
Open a batch of explicit http(s) URLs in the background and put every new tab into one exactly named group in one atomic operation (creating the group only if missing); on failure, already opened tabs are closed again.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| windowId | No | Window in which to open the tabs. | |
| collapsed | No | Initial collapsed state only when the group is created. | |
| allowUnpin | No | Set true only after the user confirms that grouping may unpin pinned tabs. | |
| groupTitle | Yes | Group title; existing groups are reused, otherwise created. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses important behaviors: tabs are opened in the background, the group is created only if missing, the operation is atomic, and on failure already opened tabs are closed. It does not mention all potential side effects, such as unpinning behavior or focus changes, but the core behavioral traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with no filler. Every clause contributes essential information: background opening, grouping, atomicity, group creation condition, and rollback behavior. It is front-loaded with the main action and structured logically, making it both concise and effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the lack of annotations, and the absence of an output schema, the description covers the key behavioral guarantees well: atomic batch opening, group creation/reuse, and rollback on failure. It does not explain what happens when groupTitle already exists beyond 'creating the group only if missing,' nor does it define failure conditions precisely, but it is sufficiently complete for most selection and invocation scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (80%), so the baseline is 3; however, the tool description adds meaning beyond the schema by clarifying that URLs must be 'explicit http(s) URLs,' that the group is 'exactly named' and reused/created, and that the operation is atomic with rollback. The 'urls' parameter itself has no schema description, but the description compensates by defining what kind of URLs are accepted. This additional context raises the score to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Open a batch of explicit http(s) URLs in the background and put every new tab into one exactly named group in one atomic operation.' This distinctively differentiates from siblings like open_firefox_tab (single tab) and move_firefox_tabs_to_group (existing tabs), and it specifies the resource (URLs) and grouping behavior precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need to open multiple URLs at once into a single, specifically named tab group. It conveys this context clearly through 'batch,' 'exactly named group,' and 'atomic operation,' though it does not explicitly name alternatives or state when not to use it. This is clear context without formal exclusions, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pin_firefox_tabC
Pin one exactly identified Firefox tab and verify it.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | Exactly one selector form: tabId, URL, or title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions verification but does not disclose potential side effects, such as changes to tab state, error handling when the tab is not found or already pinned, or any mutation of the browser session. Without annotations, the agent is left unaware of these behaviors, which is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and direct, using a single sentence that conveys the action and the verification step. There is no unnecessary verbosity or redundancy, and it is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple selector forms) and lack of an output schema, the description is insufficient. It does not mention return values, error scenarios (e.g., ambiguous or missing selector), or any edge cases. The 'verify' step is vague and does not clarify what is returned or how verification is performed, leaving the agent without essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds the phrase 'exactly identified' which reinforces the uniqueness requirement of the selector, but the schema already provides detailed descriptions for each selector variant (e.g., exact URL match, ignore fragment). The description does not add further meaning beyond what the schema covers, so it provides minimal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (pin) and the requirement of exact identification. It also mentions verification, which adds clarity. However, it could be more explicit about what 'pin' entails (e.g., making the tab non-closable or pinning its position), but the core purpose is understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like unpin or other tab management tools. It lacks context about typical use cases or scenarios where this tool is preferred, making it hard for an agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_firefox_tab_groupA
Rename one exactly named Firefox group to a new exact title and verify the result; fails if the new title already exists in the window.
| Name | Required | Description | Default |
|---|---|---|---|
| newTitle | Yes | New exact group title. | |
| windowId | No | Window to look in; required when the title exists in more than one window. | |
| groupTitle | Yes | Existing group title; matching is exact and case-sensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It adds key behaviors: 'verify the result' and 'fails if the new title already exists in the window.' This goes beyond what the name alone implies, although it does not cover all nuances like permission requirements or return value structure, which are not provided elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with the verb and object first. It includes essential details—verification and failure condition—without any filler, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 3 parameters and no output schema, the description covers the main operation, verification, and failure scenario. It does not explicitly discuss windowId handling, but the schema covers that, and the mention of 'window' in the failure condition provides a hint. Overall, it is mostly complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 reinforces the exactness of title matching ('exactly named', 'exact title') and introduces the duplicate-title failure condition, which adds slight context to newTitle. However, the schema already describes each parameter's purpose, so the value added is marginal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Rename one exactly named Firefox group to a new exact title' using a specific verb and resource. It also distinguishes itself from sibling tools like create_firefox_tab_group and set_firefox_tab_group_color by focusing on renaming, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (renaming a Firefox tab group with an exact title match), including a notable failure condition when the new title already exists. It does not explicitly mention alternatives or when not to use it, but the context is sufficiently clear without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_firefox_tabA
Restore the most recently closed Firefox tab or window (or a specific session) and return the restored tab and window IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | No | A session ID from a previous close; omit to restore the most recent one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explains the action and what it returns (IDs), making behavior transparent without hidden side effects mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with no redundant information, well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the action, the optional parameter, and the return value; sufficient for a simple tool even though edge cases like no closed items aren't mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes sessionId, so the tool description adds minimal extra meaning beyond 'specific session', which is already implied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (restore) and resource (closed tab or window), and distinguishes from any sibling tool that opens or manages tabs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use (restore most recent or specific session), but does not explicitly mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_firefox_tab_group_collapsedA
Collapse or expand one exactly named Firefox group and verify the resulting collapsed state.
| Name | Required | Description | Default |
|---|---|---|---|
| windowId | No | Window to look in; required when the title exists in more than one window. | |
| collapsed | Yes | Whether the group should be collapsed. | |
| groupTitle | Yes | Existing group title; matching is exact and case-sensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It does reveal that the tool verifies the resulting collapsed state, which adds useful behavioral detail. However, it does not mention error handling (e.g., group not found), permission requirements, or side effects, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one sentence, front-loaded, and contains zero waste. It packs action, resource, and a verification detail efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but this description alone doesn't fully prepare an agent for edge cases like multiple windows or missing groups. No output schema exists, and the description's verification claim isn't elaborated (e.g., how it verifies, what it returns). Still, it's adequate for a basic action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal parameter meaning beyond the schema; 'exactly named' aligns with the schema's exact case-sensitive matching, but the description does not enrich understanding of 'collapsed' or 'windowId' further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('collapse or expand') and the resource ('one exactly named Firefox group'), plus adds a distinguishing trait: verifying the resulting state. This separates it from sibling tools like rename or color change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for toggling collapse state but offers no explicit guidance on when to use it versus alternatives, nor any exclusions. Context is clear, but there is no mention of alternative approaches or prerequisites beyond the exact-name requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_firefox_tab_group_colorA
Set the color of one exactly named Firefox group and verify the resulting color.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | Firefox tab group color. | |
| windowId | No | Window to look in; required when the title exists in more than one window. | |
| groupTitle | Yes | Existing group title; matching is exact and case-sensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden for behavioral disclosure. It adds the useful trait that the tool verifies the resulting color after setting it, and implies the operation is a mutation. However, it does not describe error behavior, permissions, or what happens if the group is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the primary action and the verification behavior. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter tool, the description covers the essential behavioral context: exact matching, the color setting, and verification. However, it omits return value format and error handling, but given the lack of an output schema and the low complexity, the description is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three parameters and their constraints. The description adds no additional parameter semantics, which is acceptable given the schema's completeness, yielding the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('set the color') and the specific resource ('one exactly named Firefox group'), distinguishing it from sibling tools like rename or collapse. The phrase 'exactly named' also differentiates it from any fuzzy-matching behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the prerequisite that the group title must exist and match exactly, which provides some usage context. However, it does not explicitly mention when to use this tool over alternatives or exclude cases like multiple windows, which is only hinted at in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ungroup_firefox_tabA
Remove one exactly identified Firefox tab from its current group and verify the result.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | Exactly one selector form: tabId, URL, or title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'Remove' and 'verify the result', which indicates a post-check, but it does not disclose whether the tab remains open, error behavior, or reversibility. This is partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with a clear verb and scope, no filler. It front-loads the action and result, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one well-documented parameter, but no output schema or annotations. The description mentions verification but lacks edge-case behavior (e.g., what if the tab is not in a group, or the selector matches multiple tabs). It is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for the selector forms. The description adds the phrase 'exactly identified' which reinforces the uniqueness requirement, but does not add new parameter-level semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove'), the resource ('Firefox tab'), and the scope ('from its current group'), plus verification. It distinguishes from sibling tools like move_firefox_tab_to_group, which implies moving rather than removing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: use when you need to remove a tab from a group. The phrase 'exactly identified' hints at the need for a precise selector, but there is no explicit guidance on when not to use it, such as when the tab isn't in a group, or comparison with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpin_firefox_tabA
Unpin one exactly identified Firefox tab and verify it.
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | Exactly one selector form: tabId, URL, or title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds 'and verify it', indicating a verification step after unpinning, which is useful. However, it does not explain failure behavior (e.g., tab not found, tab not pinned) or the exact nature of verification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately states the action and verification aspect, making it easy for an agent to scan and extract meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter, but there is no output schema and no annotations. The description states the action and verification but does not specify return values or outcome details. It is adequate for a basic mutation tool but leaves some ambiguity about success/failure semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameter details, including the selector structure and property descriptions. The description adds little beyond the schema, only reinforcing that the tab must be 'exactly identified', which is already implied by the selector's exact-match options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Unpin' and the resource 'Firefox tab', making the tool's core function explicit. The phrase 'exactly identified' narrows the scope to a single tab and distinguishes it from batch operations and the sibling 'pin_firefox_tab' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the term 'unpin', but there is no explicit guidance on when to choose this tool over alternatives, such as 'pin_firefox_tab' for the opposite action or 'list_firefox_tabs' for finding tab IDs. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_firefox_tabA
Wait until the Firefox extension reports a tab as fully loaded (event-driven; returns immediately if the event already arrived). Use it after open/duplicate to know when the page finished loading.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes | Tab ID returned by open_firefox_tab or duplicate_firefox_tab. | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the normalization burden. It does disclose that it's event-driven and returns immediately if already loaded, which is valuable. However, it does not describe timeout behavior or what happens on failure. Thus, it's decent but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, the first states the core function immediately camiseta. Concise, front-loaded, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It's a simple tool with 2 params and no output schema. The description covers purpose, usage, and a key behavior (event-driven). It might benefit from explaining timeout behavior, but given simplicity, it's fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: tabId has a description, timeoutMs does not. The description adds context for tabId (returned by open/duplicate) but doesn't explain timeoutMs beyond what's in the schema (type, default, range). With low coverage, the description should compensate more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource (
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it after open/duplicate to know when page finishes loading. Could mention when not to use (e.g., for other browser tabs or polling), but the given scenario is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: status check, listing tabs, listing groups, opening a tab, creating a group, moving a tab, and ungrouping a tab. There is no overlap in their actions or target resources.
All tool names follow a consistent snake_case verb_noun pattern, prefixed with 'firefox' for domain clarity (e.g., list_firefox_tabs, move_firefox_tab_to_group). The verbs are uniform and predictable across the set.
With 7 tools, the server is well-scoped for Firefox tab management. Each tool addresses a core operation without redundancy or bloat, fitting comfortably within the ideal 3-15 range.
The core lifecycle of tab grouping is covered: listing, opening, creating groups, moving tabs, and ungrouping. However, operations like closing tabs, deleting groups, or renaming groups are missing, which would round out the full management surface.
Maintenance
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
Live browser debugging for AI assistants — DOM, console, network via MCP.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceReal browser tabs for AI agents through a safe localhost MCP bridge, enabling control of Chrome tabs via MCP-compatible AI CLIs.2
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible AI agents to securely control Chrome tabs via a local bridge, with explicit per-tab sharing and human approval for consequential actions.MIT
- AlicenseNot gradedqualityBmaintenanceGives MCP-compatible AI agents direct control of your real browser with existing sessions, logins, and cookies. Supports multiple agents concurrently with tab targeting.11MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-capable CLIs to operate real, already-logged-in Firefox tabs via a WebExtension and native messaging, without simulated input. Supports navigation, clicking, typing, reading, screenshots, and console/network capture with policy gating and frame awareness.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Johnnyzlee/agent-bridge-for-tab-management-in-firefox'
If you have feedback or need assistance with the MCP directory API, please join our Discord server