fire-fodex
This server enables an AI agent to remotely control Firefox browser tabs via MCP (Model Context Protocol) for comprehensive browser automation.
Tab Management: List all open tabs, open new tabs, claim existing tabs for agent control, release claimed tabs without closing, and close tabs entirely.
Navigation: Navigate to URLs, go back/forward in browsing history, and reload pages.
Page Inspection: Capture compact DOM snapshots (configurable element count/text length), take PNG screenshots (with cropping and full-page options), and find visible elements by text, role, label, placeholder, CSS selector, or auto-detection.
Synchronization: Wait for specific conditions such as text appearance, selector presence, navigation completion, URL changes, page load, or element focus.
Mouse & Pointer Interaction: Click by coordinates or selector, move the mouse, scroll pages or specific elements, and drag elements from one point to another.
Keyboard & Text Input: Type text into elements (with optional clear-first), paste text, send key presses, focus elements, and select text ranges in inputs, textareas, or contenteditable elements.
Script Execution: Run arbitrary JavaScript directly on the page for custom automation, with built-in protections blocking direct cookie/storage extraction.
All operations are session-based, requiring a session tab ID obtained by listing or claiming tabs.
Allows an AI agent to control Firefox, including listing open tabs, navigating, clicking, typing, scrolling, taking screenshots, and executing page-side actions via a WebExtension and native messaging.
Click on "Deploy 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., "@fire-fodexlist my open Firefox tabs"
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.
fire-fodex
Firefox を、MCP agent からそのまま触るためのローカルツールです。
Chrome じゃなくて Firefox を使いたい。
でも AI agent からタブを見たり、クリックしたり、スクショを取ったりしたい。
そのために WebExtension、native messaging、MCP server をつないでいます。
OpenAI の Chrome plugin の移植ではありません。Firefox 用に別で作った橋です。
まだ v1 なので、かなりローカル開発者向けです。拡張機能は手で読み込みます。MCP server も自分で起動します。普段使いのブラウザプロファイルで動かす前に、コードは一回見てください。
できること
Firefox のタブ一覧を見る
新しいタブを開く
既存タブを agent 用に確保する
ページ移動、リロード、戻る、進む
表示中ページの軽い snapshot を取る
画面内の文字を探す
クリック、入力、貼り付け、フォーカス、テキスト選択、キー入力
マウス移動、スクロール、ドラッグ
文字や selector が出るまで待つ
通常スクショと full-page スクショ
Related MCP server: mcp-zen
やらないこと
Firefox の cookie、保存済みパスワード、profile database、localStorage は直接読みません
ブラウザの情報を勝手に外へ送りません
cloud sync、account auth、操作録画、権限 UI はありません
AMO 向けの配布はまだしていません
firefox_eval はあります。ページ側で少しだけ処理したい時の逃げ道です。
ただし sandbox ではありません。cookie、storage、password 抜き取りっぽい文字列は止めますが、それで安全と言い切れるものではないです。信用できない agent に、普段の Firefox profile を触らせないでください。
必要なもの
Windows
Firefox Stable
Node.js 24+
npm 11+
セットアップ
cd path\to\fire-fodex
npm install
npm run build
npm run install:hostFirefox 側で拡張機能を読み込みます。
Firefox を開く
about:debugging#/runtime/this-firefoxに行くLoad Temporary Add-on...を押すextension\manifest.jsonを選ぶ
MCP server を起動します。
npm run mcpMCP client 側の設定例です。
{
"mcpServers": {
"fire-fodex": {
"command": "node",
"args": [
"path\\to\\fire-fodex\\dist\\mcp-server\\index.js"
]
}
}
}Tools
firefox_list_tabsfirefox_claim_tabfirefox_open_tabfirefox_navigatefirefox_snapshotfirefox_screenshotfirefox_findfirefox_wait_forfirefox_mouse_clickfirefox_mouse_movefirefox_scrollfirefox_dragfirefox_focusfirefox_select_textfirefox_pastefirefox_evalfirefox_clickfirefox_typefirefox_keypressfirefox_backfirefox_forwardfirefox_reloadfirefox_close_tabfirefox_release
基本は、見てから触る流れです。
firefox_snapshotやfirefox_findで画面を見るform は
firefox_focus、firefox_paste、firefox_type、firefox_keypresspointer 操作は
firefox_mouse_click、firefox_mouse_move、firefox_scroll、firefox_dragページが変わる操作の後は
firefox_wait_for見た目が大事なら
firefox_screenshot
確認
npm run typecheck
npm test
npm run lint:extension
npm run check
powershell -ExecutionPolicy Bypass -File scripts\smoke.ps1smoke.ps1 は、native host を入れて Firefox 側で拡張機能を読み込んでから動かしてください。
権限
拡張機能は <all_urls> を要求します。普通のサイトを横断して操作するためです。
強い権限です。v1 は「中身を読んで、自分のローカルで動かす」人向けとして置いています。
仕組み
AI agent / MCP client
|
| stdio MCP
v
fire-fodex MCP server
|
| localhost JSON request
v
native messaging host
|
| Firefox native messaging stdio
v
Firefox WebExtension
|
| tabs + content scripts
v
Firefox tabs拡張機能がつながっている間、native host は 127.0.0.1:17365 で待ち受けます。
Available Tools
24 toolsfirefox_backC
Go back in a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id |
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 disclosing behavior. It only states 'Go back', omitting details such as what happens if there is no browsing history, whether it throws an error, or if it requires the tab to have navigated previously. This is insufficient for safe invocation.
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 wasted words. However, it lacks structured information such as parameter explanation or behavioral notes. While concise, it could be more informative without becoming verbose.
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 navigation tool with one parameter and no output schema, the description is minimally adequate. However, it does not cover edge cases (e.g., no history) or explain the return value (e.g., success/failure). Slightly more detail would improve completeness.
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% (the one parameter has a description). The tool description adds no additional meaning to the parameter 'sessionTabId' beyond the schema's description (which contains a typo 'fire-fodex'). The baseline 3 is appropriate as the schema already documents the parameter.
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 'Go back in a Firefox tab' clearly states the action (go back) and resource (Firefox tab). It is distinguishable from sibling 'firefox_forward' which does the opposite. However, it lacks specificity about browsing history, making it slightly less than a perfect 5.
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 guidance is provided on when to use this tool versus alternatives (e.g., firefox_forward, firefox_navigate). There are no prerequisites or warnings about when not to use it (e.g., no history). This forces the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_claim_tabC
Claim an existing Firefox tab by sessionTabId.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id |
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 fails to mention side effects (e.g., whether the tab becomes active), failure scenarios (e.g., invalid ID), or state changes. The single sentence is insufficient for a mutation operation.
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, concise sentence that front-loads the key information. It is efficient, but it lacks structure (e.g., bullet points) and does not earn additional points for organization given the simplicity of the tool.
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 one required parameter, lack of output schema, and no annotations, the description is incomplete. It does not clarify what the tool returns or how the agent should handle the result, making it insufficient for correct invocation without additional 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 schema has 100% description coverage for the single parameter, so the description adds no new meaning beyond reiterating the parameter name. The baseline is 3, and no additional semantic value 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 clearly states the action 'Claim an existing Firefox tab' and the input 'by sessionTabId', making the purpose identifiable. However, it doesn't explain what 'claim' means in this context or distinguish it from sibling tools like firefox_focus or firefox_open_tab, which could lead to ambiguity.
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 guidance is provided on when to use this tool versus alternatives such as firefox_open_tab or firefox_list_tabs. There are no conditions, prerequisites, or exclusions mentioned, leaving the agent without context for proper selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_clickC
Click an element in a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| selector | Yes | CSS selector or fire-fodex element ref |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It only says 'click', omitting details like feedback, error handling, or whether the element must be visible.
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, no redundancy, but too brief to provide useful context. Conciseness comes at the cost of completeness.
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 2 parameters with full schema coverage but no annotations or output schema, the description lacks behavioral details, return value info, and context relative to many sibling tools.
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 descriptions already exist. The tool description adds no additional meaning beyond the schema, so 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 action (click) and resource (element in a Firefox tab). However, it does not distinguish from similar sibling tools like firefox_mouse_click, which might perform a similar 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?
No guidance on when to use this tool versus alternatives (e.g., firefox_mouse_click, firefox_drag). No context about prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_close_tabC
Close a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fails to disclose any behavioral traits. It does not indicate that closing a tab is destructive (irreversible), what happens if the sessionTabId is invalid, or any side effects. With no annotations, the description carries the full burden and is insufficient.
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 concise sentence with no unnecessary words. It is appropriately front-loaded and efficient.
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 like closing a tab, the description is minimally adequate. However, it lacks contextual information such as how to obtain the sessionTabId (e.g., from firefox_list_tabs) or that the action is irreversible. Given no output schema, more context about return behavior would help.
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 tool description adds no meaning beyond the schema, which already describes sessionTabId. The schema description has a typo ('fire-fodex'), but the tool description does not correct or elaborate.
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 (close) and resource (Firefox tab), which distinguishes it from siblings like firefox_open_tab. However, it does not mention that it closes a specific tab identified by sessionTabId, missing an opportunity to clarify the target.
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 guidance is provided on when to use this tool versus alternatives (e.g., firefox_release or navigating away). There is no mention of prerequisites, such as having a valid sessionTabId or ensuring the tab exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_dragC
Drag from one point or element to another.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| fromX | No | ||
| fromY | No | ||
| fromSelector | No | CSS selector or fire-fodex element ref | |
| toX | No | ||
| toY | No | ||
| toSelector | No | CSS selector or fire-fodex element ref | |
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| steps | No | ||
| observe | No | snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only states the basic drag action, omitting details like mouse event simulation, timing, or whether it works in cross-origin frames. Lacks the behavioral context needed for correct invocation.
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 very short (one sentence), which is concise but at the expense of necessary detail. It could be front-loaded with more context without becoming overly lengthy.
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 high parameter count (10) and lack of output schema, the description is incomplete. It does not explain what the tool returns, prerequisites (e.g., tab must be open and interactive), or behavior on failure. A more complete description would include these aspects.
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 40%, but the description adds no parameter clarification. Many parameters (fromX, fromY, toX, toY, steps) lack explanations in both schema and description. The existing schema descriptions are brief and contain typos ('fire-fodex'), reducing clarity.
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 'Drag from one point or element to another' clearly specifies the action (drag) and the source and target (point or element). It distinguishes from sibling tools like click, move, etc., which involve different interactions.
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 guidance on when to use this tool versus alternatives, such as for complex drag-and-drop operations requiring multiple steps or when a simpler click suffices. No exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_evalB
Run page JavaScript for local browser automation. Obvious cookie/storage extraction is blocked.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| script | Yes | ||
| frameRef | No | Optional frame ref returned by firefox_snapshot. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only notes that 'obvious cookie/storage extraction is blocked,' which is a constraint, but omits details like return values, synchronicity, or side effects on page state.
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 that conveys the core functionality with no wasted words. It is front-loaded and efficiently states the action.
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 ability to execute arbitrary JavaScript, the description is insufficient. It lacks explanation of return values, error handling, sandboxing, or integration with other tools, making it hard for an agent to use correctly without additional 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?
Schema description coverage is 67% (parameters sessionTabId and frameRef have descriptions, but script lacks one). The description adds no information about parameters, such as the type of script expected or the role of frameRef, failing to compensate for the gap.
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 explicitly states 'Run page JavaScript for local browser automation,' clearly indicating the tool's purpose. The verb 'run' and resource 'page JavaScript' are specific, and it is distinct from siblings like firefox_click or firefox_navigate.
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 does not provide guidance on when to use this tool versus alternatives. It only mentions a limitation (cookie/storage extraction blocked) but no explicit conditions or scenarios for preferred usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_findB
Find visible page elements by text, role, label, placeholder, CSS selector, or approximate query.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| query | Yes | ||
| by | No | auto | |
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions finding 'visible' elements and 'approximate query', which hints at behavior, but lacks details on return values, error handling (e.g., no match), or side effects (e.g., scrolling). Some transparency is present but significant gaps remain.
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 that front-loads key information. Every word adds value, and there is no redundancy. It is 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?
Given the tool has 5 parameters, no output schema, and no annotations, the description is insufficient. It does not explain the return format, error conditions, or how elements are matched (e.g., exact vs. substring). The complexity of element location requires more context than 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?
Only 40% of parameters have schema descriptions. The description adds meaning for the 'by' parameter by listing allowed values (text, role, etc.), but does not explain 'query', 'sessionTabId', 'frameRef', or 'limit'. For a tool with 5 parameters and low schema 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 clearly identifies the action ('Find') and the resource ('visible page elements'). It distinguishes the tool by listing multiple search methods (text, role, label, placeholder, CSS selector, approximate query), which separates it from sibling tools like click or focus. The verb+resource+scope is specific and 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 no guidance on when to use this tool versus alternatives like firefox_click or firefox_focus. It does not mention prerequisites, when not to use it, or suggest alternative tools for similar tasks. The agent is left to infer context from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_focusC
Focus an element by selector/ref or viewport point.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| selector | No | CSS selector or fire-fodex element ref | |
| x | No | ||
| y | No | ||
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| observe | No | snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It does not disclose whether focusing scrolls the element into view, requires visibility, or has side effects like changing focus order. The behavior beyond the basic action is unclear.
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 is concise and front-loaded with the key action. No unnecessary words, but could be slightly expanded with additional context without losing 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?
Given no output schema and moderate parameter count (6), the description is too sparse. It does not explain return behavior, success/failure conditions, or how the observe parameter affects the operation. More detail is needed for effective use.
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 meaning by indicating that focusing can be done by selector/ref or via viewport coordinates (x, y). However, the relationship between selector and coordinates is not clarified (e.g., mutually exclusive?). Schema coverage is 50% but the description partially compensates.
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 ('Focus') and the target ('element') and specifies the methods: by selector/ref or viewport point. This distinguishes from sibling tools like click or select_text, though the exact meaning of 'focus' in a browser context is not elaborated.
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 guidance on when to use focus versus other actions like click or select_text. No prerequisites or conditions for usage are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_forwardB
Go forward in a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits. It states the action but does not explain what happens if there is no forward history, potential side effects, or other behavioral details. The description adds minimal value beyond the name.
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 very concise, using a single sentence that is front-loaded and efficient. Every word serves a purpose, with no unnecessary information. However, it could be improved by adding a bit more detail without becoming verbose.
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 one parameter and no output schema, the description is minimally adequate. It identifies the core action but lacks context about return values, error handling, or integration with other tools. It meets the baseline but has clear 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?
Although schema coverage is 100%, the parameter description in the schema is a typo ('fire-fodex session tab id') and not meaningful. The tool description does not add any context about the parameter's purpose or usage, leaving the agent with unclear semantics.
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 'Go forward in a Firefox tab' uses a specific verb and resource, clearly indicating the action. It distinguishes well from sibling tools like firefox_back and firefox_navigate, as it specifically refers to forward navigation within 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 provides no guidance on when to use this tool versus alternatives, such as when to use firefox_back vs firefox_forward, or prerequisites like needing a forward history entry. This omission limits its usefulness for an AI agent deciding between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_keypressC
Send a keyboard key to a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose behavioral traits such as whether key press includes release, support for modifiers, or potential side effects like page navigation.
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 concise sentence but is overly brief, missing essential details. It could be more informative without adding much length.
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?
With 23 sibling tools and no output schema, the description fails to provide adequate context for tool selection. It does not explain return values or key constraints.
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% (only sessionTabId has a description, with a typo). The 'key' parameter lacks any description, and the description does not clarify accepted key formats (e.g., 'Enter', 'a', 'Ctrl+C').
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 'Send a keyboard key to a Firefox tab' clearly states the action (send) and target (Firefox tab). It distinguishes from siblings like firefox_type (which sends text) and firefox_click (which clicks).
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 guidance on when to use this tool versus siblings like firefox_type or firefox_click. The description does not specify prerequisites or suitable scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_list_tabsA
List current Firefox tabs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits beyond the primary function. It does not state safety properties (e.g., read-only) or side effects, leaving the agent with insufficient information.
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, efficient sentence with no wasted words, front-loading the core function.
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 description adequately states its purpose. However, it lacks information about the return format, which could affect agent decisions.
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 no parameters, and schema coverage is 100%. The description adds minimal semantics, but for zero parameters, a baseline of 4 is appropriate as no additional documentation 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?
The description clearly states the action 'List' and the resource 'current Firefox tabs'. It distinguishes itself from sibling tools which perform actions like clicking, navigating, or manipulating 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?
The description does not provide explicit guidance on when to use this tool versus alternatives. Usage is implied as a read-only listing, but no exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_mouse_clickC
Click by viewport coordinates or selector/ref.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| x | No | ||
| y | No | ||
| selector | No | CSS selector or fire-fodex element ref | |
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| button | No | left | |
| clickCount | No | ||
| observe | No | snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden but only says 'Click', offering no details on side effects such as page navigation, state changes, mouse movement, or wait behavior. The 'observe' parameter hints at post-click snapshotting but is not explained.
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 single-sentence description is extremely concise, which is positive, but it omits many necessary details, making it insufficient rather than efficiently complete. It front-loads the core action but sacrifices depth.
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 8 parameters, no output schema, and no annotations, the description is far from complete. It does not explain return values, error handling, or parameter interactions (e.g., how coordinates and selector relate). Significant gaps remain.
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 38%, and the description adds little beyond schema: 'x', 'y' lack coordinate system context; 'selector' mentions 'fire-fodex element ref' (typographical issue); 'observe' enum values are unexplained. The description fails to compensate for low 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 'Click by viewport coordinates or selector/ref' clearly states the action (click) and two primary methods (coordinates or selector/ref), distinguishing it from sibling tools like firefox_mouse_move. However, it does not clarify the distinction from firefox_click or what 'ref' refers to.
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 guidance is provided on when to use this tool vs. alternatives like firefox_click or firefox_mouse_move, nor are prerequisites (e.g., sessionTabId) or context (e.g., coordination with other actions) mentioned. The agent is left guessing about appropriate invocation scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_mouse_moveC
Move the mouse over viewport coordinates or an element.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| x | No | ||
| y | No | ||
| selector | No | CSS selector or fire-fodex element ref | |
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| observe | No | snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosure, but it fails to mention behavioral details like edge cases (out-of-viewport coordinates), animation duration, or whether it triggers any events.
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 sentence, front-loading the key action. However, it sacrifices necessary detail for brevity, making it less helpful overall.
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 has 6 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain the relationship between coordinates and selector, nor how 'observe' works.
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 50%, with only 3 of 6 parameters described. The description adds no parameter-specific context, leaving 'x', 'y', and 'observe' unexplained 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 ('move the mouse') and the target ('viewport coordinates or an element'). It distinguishes from sibling tools like 'firefox_click' by implying a move without a click, though it doesn't explicitly contrast.
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 guidance is provided on when to use this tool versus alternatives such as 'firefox_click' or 'firefox_mouse_click'. The description does not indicate prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_open_tabC
Open a new Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| active | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It does not explain default behavior for the 'active' parameter or whether the new tab becomes focused. Minimal 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 concise (one sentence) and front-loaded, but it fails to include necessary details, so it does not fully earn 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?
Given 2 parameters, 0% schema coverage, no output schema, and no annotations, the description is extremely incomplete. Missing parameter explanations and usage 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?
Schema coverage is 0%, yet the description adds no meaning to parameters. It does not mention that 'url' is expected or that 'active' controls focus. Utterly insufficient.
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' and the resource 'new Firefox tab', distinguishing it from siblings like navigation or tab management tools.
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 guidance on when to use this tool versus alternatives like firefox_navigate for opening URLs in the current tab. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_pasteC
Paste text into the focused element or a chosen element.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| text | Yes | ||
| selector | No | CSS selector or fire-fodex element ref | |
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| observe | No | snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It does not clarify that the 'text' parameter is used directly rather than reading from the clipboard, nor does it mention how the 'observe' parameter affects output. The side effects (e.g., overwriting existing content, focus changes) are not discussed, making the tool behavior opaque.
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 concise sentence that covers the core action and two targeting modes. However, it is too brief to convey important details, balancing conciseness with a slight lack of completeness.
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 has 5 parameters, no output schema, and many siblings, the description is insufficient. It omits return behavior (e.g., whether a snapshot is returned), the role of the 'frameRef' parameter, and the difference between 'focused' and 'chosen' element modes. The context of being a Firefox automation tool is not leveraged.
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 has 60% coverage (3 of 5 parameters described), but the description adds no parameter-specific information. It hints at 'chosen element' for the 'selector' parameter but does not explain the 'text' or 'observe' parameters. The description fails to compensate for the schema's gaps, leaving parameter semantics unclear.
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 (paste) and the target (focused element or chosen element), distinguishing it from sibling tools like firefox_type or firefox_keypress. However, it could be more specific about the nature of the paste operation (e.g., simulating Ctrl+V from clipboard) vs writing the provided text directly.
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 guidance is provided on when to use paste versus other input tools like type or keypress. The description does not mention prerequisites (e.g., focus requirement), alternatives, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_releaseB
Release a claimed Firefox tab without closing it.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It clarifies that the tab is not closed, but lacks details on what 'release' entails (e.g., state changes, reversibility, permissions).
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, no redundant information, front-loaded with key action and resource.
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?
Minimal description sufficient for a one-parameter tool without output schema, but lacks context on prerequisites and error conditions given the sibling tools.
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?
Parameter schema has 100% coverage but the description 'fire-fodex session tab id' is unclear and potentially misspelled. The tool description adds no further meaning, leaving ambiguity.
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 ('release') and the resource ('claimed Firefox tab') and distinguishes it from siblings like 'firefox_close_tab' or 'firefox_claim_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 usage for releasing a claimed tab but provides no explicit guidance on when to use this tool vs alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_reloadC
Reload a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden but only states the action. It does not disclose effects like page refresh, state preservation, or any side effects, leaving the agent uninformed.
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, direct sentence with no unnecessary words. It is efficiently structured for a simple action.
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 simple nature (one parameter, no output schema), the description is too minimal. It does not explain that the reload applies to the tab identified by sessionTabId or any prerequisites, leaving gaps for an agent.
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 description coverage is 100%, but the description adds no value beyond the schema. The parameter description 'fire-fodex session tab id' is poorly worded, yet the tool description does not clarify it. Baseline 3 applies.
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 ('Reload') on a specific resource ('a Firefox tab'). It distinguishes from sibling tools like firefox_navigate and firefox_back, though it lacks additional detail about the nature of the reload.
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 guidelines are provided on when to use this tool versus alternatives (e.g., when a page is stuck versus needing navigation). The agent must infer usage solely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_screenshotC
Capture a PNG screenshot of a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| fullPage | No | ||
| cropX | No | ||
| cropY | No | ||
| cropWidth | No | ||
| cropHeight | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behaviors. It only states 'capture a PNG screenshot' without mentioning side effects or whether the operation is read-only, leaving significant 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 description is a single sentence with no unnecessary words, achieving maximum conciseness while conveying the core purpose.
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?
With 6 parameters, no output schema, and no annotations, the description is too minimal. It omits details on fullPage, cropping behavior, and return value, making it incomplete for correct 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 only 17% (only sessionTabId has a description, which is a typo). The tool description adds no additional meaning for parameters like fullPage, cropX, etc., failing to compensate for the schema's lack of detail.
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 'Capture a PNG screenshot of a Firefox tab,' indicating the verb and resource. While it distinguishes from siblings like firefox_snapshot by specifying 'PNG screenshot,' it does not explicitly differentiate, but the name is sufficiently clear.
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 guidance on when to use this tool versus alternatives like firefox_snapshot or how to handle optional parameters like fullPage or cropping. The description lacks context for optimal usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_scrollC
Scroll the page or a specific element.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| deltaX | No | ||
| deltaY | No | ||
| selector | No | CSS selector or fire-fodex element ref | |
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| observe | No | snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only says 'scrolls', omitting details about smoothness, speed, whether it waits for rendering, or what happens when scrolling a non-existent element. This is nearly no 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, which is concise but overly brief. It lacks any additional context or structure, making it minimally acceptable.
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 has 6 parameters, no output schema, and no annotations, the description is severely under-specified. It does not cover expected behavior, return values, or parameter interactions, leaving the agent with insufficient information to use the tool 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 description adds no meaning to parameters beyond the schema. While schema covers 50% (sessionTabId and selector have descriptions), deltaX, deltaY, frameRef, and observe are unexplained, leaving their semantics unclear. The description fails to compensate for the 50% coverage gap.
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 scrolls the page or a specific element, using a specific verb and resource. It distinguishes itself from sibling tools by specifying 'page or element' but could be more precise about the scroll 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?
No guidance is provided on when to use this tool versus alternatives like firefox_find or firefox_click, nor when not to use it. The description lacks context for proper tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_select_textC
Select text in an input, textarea, contenteditable element, or the current document.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| selector | No | CSS selector or fire-fodex element ref | |
| start | No | ||
| end | No | ||
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| observe | No | snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose behavioral traits like whether selection is programmatic, triggers events, or requires element focus. Lacks details on side effects or limitations.
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 is concise but lacks structure. Could be improved with a brief note on prerequisites or common usage pattern.
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?
Incomplete for a tool with 6 parameters and no output schema. Does not explain return values, behavior on failure, or the observe and frameRef parameters.
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?
Description adds no meaning beyond the input schema. Schema coverage is 50% with start and end parameters lacking descriptions. The description should clarify that start/end are character offsets, but does not.
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 clearly states the action: 'Select text' and specifies the target resources: input, textarea, contenteditable element, or current document. It distinguishes from sibling tools like firefox_click or firefox_focus.
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 guidance on when to use or not use this tool versus alternatives. Does not mention prerequisites, such as element focus or page readiness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_snapshotC
Read a compact DOM snapshot from a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| maxTextLength | No | ||
| maxElements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It merely says 'compact DOM snapshot', but does not explain what it returns (e.g., element structure, text content), whether it is static or live, or any side effects. Lacks critical behavioral details.
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, concise and front-loaded. However, it sacrifices information that could be included without losing 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?
For a tool that returns data (no output schema), the description fails to specify the snapshot format or structure. The agent cannot determine how to use the output effectively. Combined with vague schema descriptions, completeness is low.
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 no additional meaning beyond the schema. Only sessionTabId has a description in the schema (though with a typo 'fire-fodex'), and maxTextLength/maxElements lack descriptions. The schema coverage is 33%, and the description does not compensate.
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 'Read', the resource 'compact DOM snapshot', and the context 'from a Firefox tab'. It effectively distinguishes this tool from siblings like firefox_screenshot (visual) and firefox_eval (JavaScript execution).
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 guidance on when to use this tool versus alternatives like firefox_eval or firefox_screenshot. The agent must infer usage without explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_typeC
Type text into an element in a Firefox tab.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| selector | Yes | CSS selector or fire-fodex element ref | |
| text | Yes | ||
| clear | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must disclose behavioral traits, but it only says 'type text' with no details on element state requirements, error handling, or effects like clearing text (though clear parameter exists).
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 very concise (one sentence) but omits important information. It could expand slightly without losing conciseness, e.g., mentioning the optional clear 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?
Without an output schema and with only 50% schema coverage, the description should provide more context on return values, side effects, or typical usage, but it offers none.
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% (text and clear lack descriptions). The description adds no meaning for these parameters and does not compensate for the missing schema explanations.
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 (type) and the target (element in a Firefox tab), distinguishing it from sibling tools like firefox_click, firefox_focus, or firefox_keypress.
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 (e.g., firefox_keypress, firefox_paste), nor any prerequisites or context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firefox_wait_forC
Wait for text, selector, navigation, URL substring, load completion, or focus state.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionTabId | Yes | fire-fodex session tab id | |
| kind | Yes | ||
| value | No | ||
| frameRef | No | Optional frame ref returned by firefox_snapshot. | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It does not mention blocking behavior, timeout handling, or return value. The timeoutMs parameter is in the schema but omitted from the description, leaving the agent unaware of timing implications.
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 very concise (one sentence), but this brevity sacrifices necessary detail. It front-loads the list of wait types but lacks structured explanation of parameters or 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?
Given the tool has 5 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain how to use the tool, what the return value is, or how to handle outcomes like timeout or failure.
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?
With only 40% schema description coverage, the description should clarify parameters but does not. It fails to explain 'value', 'frameRef', or 'timeoutMs', which are critical for correct invocation.
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 waits for text, selector, navigation, URL substring, load completion, or focus state, which distinguishes it from sibling action tools. However, it lacks specificity about the context of waiting (e.g., page vs. element).
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 guidance is provided on when to use this tool vs. alternatives like firefox_snapshot or firefox_find. The description does not mention prerequisites, conditions, 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
24 tool updates
v0.1.0- First observed
firefox_back - First observed
firefox_claim_tab - First observed
firefox_click - First observed
firefox_close_tab - First observed
firefox_drag - First observed
firefox_eval - First observed
firefox_find - First observed
firefox_focus - First observed
firefox_forward - First observed
firefox_keypress - First observed
firefox_list_tabs - First observed
firefox_mouse_click - First observed
firefox_mouse_move - First observed
firefox_navigate - First observed
firefox_open_tab - First observed
firefox_paste - First observed
firefox_release - First observed
firefox_reload - First observed
firefox_screenshot - First observed
firefox_scroll - First observed
firefox_select_text - First observed
firefox_snapshot - First observed
firefox_type - First observed
firefox_wait_for
TDQS
Scored across 24 tools
Most tools have distinct purposes, but firefox_click and firefox_mouse_click overlap in functionality, as both can click using selectors. Additionally, firefox_focus and firefox_click could be confused. Overall, the distinctions are clear enough for most use cases.
All tools consistently use the 'firefox_' prefix. The naming pattern is mostly verb or verb_noun, but there are exceptions like 'mouse_click' (noun+verb) and 'mouse_move', which break the pattern slightly. The majority follow a predictable style.
24 tools is on the high side for a browser automation server, but each tool covers a specific action. While the count is above the typical 3-15 range, it is not excessive and reflects the complexity of controlling a browser.
The tool set covers essential browser automation tasks: navigation, tab management, user input, scrolling, screenshots, and DOM interaction. Missing features like alert handling or file uploads are minor gaps, but core workflows are well-supported.
Maintenance
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Related MCP Servers
- AlicenseAqualityCmaintenanceDrive Firefox-based browsers (Floorp, LibreWolf, Zen, Waterfox, Mullvad, Firefox) from any MCP client — read pages, screenshot, click, fill forms and manage tabs in your real session, over Marionette/WebDriver. OS input & JS eval locked by default.4146 npm2MIT
- AlicenseNot gradedqualityBmaintenanceLets MCP clients control a live Zen/Firefox browser to navigate, click, fill forms, screenshot, and execute JavaScript through a persistent server and browser extension.MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server for Firefox that gives AI agents full control over the browser via a Unix socket, enabling automation of tabs, pages, cookies, and more without exposing any network ports.8 npm1MIT
- 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