Skip to main content
Glama

ie-mcp

License: MIT Python 3.8+ Platform: Windows MCP Status: alpha Version: 0.1.0

Give an LLM the ability to drive a legacy IE-only web application.

⚠️ Status: alpha / work in progress. This project is under active development. The tool surface and configuration may change between versions, and breaking changes can land without notice until 1.0.0. Issues and PRs welcome — see Development and Roadmap.

ie-mcp is a Model Context Protocol server that automates Microsoft Edge in IE mode (the Trident / legacy document-mode engine) via the Selenium IEDriver, and exposes it over MCP stdio so clients like Claude Code, Claude Desktop, or Codex can read, click, fill, and scrape any IE-only intranet app that nothing else can touch anymore.

The server is application-agnostic: it knows nothing about any specific site. You point it at a target through environment variables and the Edge IE-mode site list, and it gives the model a Playwright-style toolbox (auto-waiting locators, frame navigation, grid extraction, readiness probing) tuned for the quirks of the Trident engine.


Installation

No clone, no separate install. Requires uv on PATH (pip install uv, or winget install astral-sh.uv). uvx fetches the repo, installs selenium into an isolated env, and runs the server on each launch:

claude mcp add ie-mcp -- uvx --from git+https://github.com/thomfilg/ie-mcp.git ie-mcp
codex  mcp add ie-mcp -- uvx --from git+https://github.com/thomfilg/ie-mcp.git ie-mcp
gemini mcp add ie-mcp    uvx --from git+https://github.com/thomfilg/ie-mcp.git ie-mcp

claude mcp add takes <name> <command…> — here the name is ie-mcp and the command is the uvx … part. A bare repo URL won't work (it'd be treated as a remote HTTP server).

Option B — install once, then a short command

Install the ie-mcp command on PATH, then let it register itself with every MCP client:

# 1. install (pipx/uv keep it isolated)
pipx install git+https://github.com/thomfilg/ie-mcp.git
#   or:  uv tool install git+https://github.com/thomfilg/ie-mcp.git
#   or from a clone:  pipx install .

# 2. register with every MCP client found on PATH (Claude Code, Codex, Gemini CLI)
ie-mcp --install

ie-mcp --install runs claude mcp add / codex mcp add / gemini mcp add for you with the launch path already solved. Remove it again with ie-mcp --uninstall.

Register a client by hand

ie-mcp --install (Option B) does this for you. To wire one up manually, use the ie-mcp command (after pipx install). If you skipped the install (Option A), replace ie-mcp in the command column with uvx --from git+https://github.com/thomfilg/ie-mcp.git ie-mcp.

Client

Command

Claude Code

claude mcp add ie-mcp -- ie-mcp

Codex CLI

codex mcp add ie-mcp -- ie-mcp

Gemini CLI

gemini mcp add ie-mcp ie-mcp

Or via a client's config file (all equivalent — { "command": "ie-mcp" }):

  • Claude Desktopclaude_desktop_config.json (Windows: %APPDATA%\Claude\claude_desktop_config.json)

  • Gemini CLI~/.gemini/settings.json (Windows: %USERPROFILE%\.gemini\settings.json)

{
  "mcpServers": {
    "ie-mcp": { "command": "ie-mcp" }
  }
}
  • Codex CLI~/.codex/config.toml (Windows: %USERPROFILE%\.codex\config.toml)

[mcp_servers.ie-mcp]
command = "ie-mcp"

Any other stdio MCP client works too: set the server command to ie-mcp. To override a default, add the env var to that client's env block — see Configuration.

IEDriver attach can be slow on the first call. If a client reports the server as unresponsive on startup, give it a longer init timeout and confirm ie-mcp --selftest passes standalone first.

Download IEDriverServer.exe (matching your Edge / selenium version) from the Selenium downloads page if it isn't already in the default per-user selenium cache.

Verify the setup

Before (or after) wiring up a client, run the built-in self-test. It checks dependencies and paths, then opens and closes a real IE-mode session and confirms the Trident engine is actually in use:

ie-mcp --selftest

A passing run prints RESULT: PASS and an IE/Trident userAgent.


Related MCP server: Selenium MCP Server

Why this exists

Modern browser-automation tools (Playwright, Puppeteer, Selenium-on-Chromium) cannot render IE-only apps — the ones that depend on ActiveX, document.all, framesets, VBScript-era behaviours, or an enforced legacy document mode. Edge's IE mode is the last supported way to run them, but it is notoriously awkward to automate:

  • IEDriver attach is flaky (Protected-Mode boundary crossings, "could not find IE window").

  • The legacy engine rejects Selenium's modern JS atoms (el.text, Select, get_attribute).

  • Old document modes have no window.JSON, so naive scripts throw 'JSON' is undefined.

  • Frame-based apps lose state if the session is recreated.

ie-mcp works around all of these so the model gets a stable, high-level interface.


Features

  • One long-lived session kept alive across tool calls, so frame-based apps keep state.

  • Auto-waiting locators (id / css / xpath / name / link_text / tag / class).

  • Nested frame navigation — address frames-inside-frames with a path like "3/0".

  • Trident-safe primitives — click, fill, select, hover, key-press, scroll, upload, dialogs, all implemented to survive the legacy JS engine.

  • Readiness probing (ie_wait_ready) that waits for every same-origin frame's readyState to complete and the DOM to stop changing — handles slow AJAX/frameset grids.

  • Grid extraction (ie_grid) that heuristically finds the real data table and returns header-keyed rows.

  • Screenshots (full window or single element), JS execution, history navigation, resize.

  • One browser per MCP process, with parallel agents isolated by session identity.

  • Atomic per-session leases prevent two processes from claiming the same explicit identity.

  • Session-scoped logs and ownership records under %TEMP%\ie-mcp\sessions\<session-id>.

  • Safe orphan cleanup kills only browsers proven to belong to a crashed session; live agents and untracked Edge processes are preserved.

  • No required pip install — selenium can be loaded from a vendored deps folder.

  • Built-in --selftest to diagnose your setup before wiring up a client.


Requirements

Component

Notes

Windows

IE mode only exists on Windows; the process-tracking and policy code use tasklist, taskkill, PowerShell/CIM and winreg.

Microsoft Edge

With IE mode available (Edge ships it on Windows 10/11).

IEDriverServer.exe

The Selenium IE driver (e.g. 4.14.0).

Python 3.8+

Standard library only, plus selenium.

selenium

>=4.14.0 — installed via requirements.txt or vendored (see below).


Configuration

All configuration is via environment variables — all optional:

Variable

Default

Purpose

IE_EDGE_PATH

C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe

Path to msedge.exe.

IE_DRIVER_PATH

(per-user cache path)

Path to IEDriverServer.exe.

IE_SITE_LIST

(unset)

Path to an Edge IE-mode site-list XML. If set, the server verifies the HKCU Edge policy points at it so listed sites render in IE mode. If unset, no policy is managed and Edge is assumed already configured.

IE_DEFAULT_URL

about:blank

URL ie_open uses when none is given.

IE_ATTACH_RETRIES

3

IEDriver attach attempts.

IE_PAGE_TIMEOUT

30

Per-page load timeout (seconds).

IE_PYDEPS

../.pydeps

Extra sys.path dir for vendored selenium.

IE_INTERACTION_MODE

native

Input strategy: background avoids forced focus and physical mouse input; native uses focused OS events for maximum legacy compatibility. Selected when the MCP process starts.

IE_LOG_FILE

<session-dir>\ie-mcp.log

Optional override for this session's log file.

IE_SESSION_ID

pid-<MCP process PID>

Stable agent/session name. Different IDs can run concurrently; the same ID is exclusive.

IE_SESSION_ROOT

%TEMP%\ie-mcp\sessions

Root for session directories containing logs, leases, and ownership records.

IE_LOCK_FILE

<session-dir>\session.lock

Optional override for this session's atomic lease file.

IE_NO_LOCK

(unset)

Development escape hatch that disables the per-session lease. Do not use for normal agents.


Tools

Tool

Description

ie_open

Start (or reuse) an Edge IE-mode session and navigate to a URL.

ie_goto

Navigate the current session to a new URL.

ie_status

Session state as JSON (active/alive, title, url, owned PIDs).

ie_browsers

List all Edge IE-mode windows + IEDriver processes, flagging the one this session owns.

ie_kill_orphans

Terminate processes recorded for crashed sessions only; never kills live-agent or unknown browsers.

ie_frames

List the frames/iframes of the current page (index, name, id, src).

ie_text

Get visible text of the page or a specific frame.

ie_html

Get HTML source of the page or a frame.

ie_click

Click an element (auto-waits); click / double / right.

ie_fill

Type text into an input/textarea (auto-waits).

ie_upload

Set a <input type=file> by sending a local path.

ie_dialog

Handle a JS dialog (accept / dismiss / text / sendkeys).

ie_js

Execute JavaScript in the page or a frame and return the result.

ie_screenshot

PNG screenshot of the window, or of a single element.

ie_wait_text

Poll until a substring appears (or disappears) in the page text.

ie_wait_ready

Wait until the page (and same-origin frames) finish loading and settle.

ie_select

Select an <option> by label / value / index (Trident-safe).

ie_press_key

Press a key (Enter/Tab/Escape/arrows/… or a literal char).

ie_back / ie_forward

Navigate browser history.

ie_hover

Hover over an element (menus/tooltips).

ie_resize

Resize the browser window.

ie_get

Read an element's text, value, or a named attribute (Trident-safe).

ie_wait_element

Wait for an element to appear — or, with gone=true, disappear.

ie_scroll

Scroll an element into view, to top/bottom, or by pixels.

ie_grid

Extract a tabular grid as structured (header-keyed) rows.

ie_sleep

Sleep N seconds (last resort; prefer ie_wait_ready / ie_wait_text).

ie_close

Close the session and quit the browser.

Working with frames

Many legacy apps are framesets. Use ie_frames to enumerate them, then pass frame to most tools. A nested path reaches frames-inside-frames — e.g. "3/0" is the first frame inside the fourth frame.


No-pip / vendored selenium

On locked-down or offline machines you can run without a global pip install. Drop the selenium package (and its deps) into a folder and point IE_PYDEPS at it:

pip install --target ../.pydeps "selenium>=4.14.0,<5"

By default the server looks for ../.pydeps relative to ie_mcp.py, so the MCP protocol itself has zero pip dependencies (newline-delimited JSON-RPC 2.0 is implemented inline).


How IE mode is reached

When IE_SITE_LIST is set, the server self-heals the HKCU Edge policy (SOFTWARE\Policies\Microsoft\Edge) so the listed sites open in IE mode:

  • InternetExplorerIntegrationLevel = 1

  • InternetExplorerIntegrationSiteList = file:///…/your-site-list.xml

  • InternetExplorerIntegrationReloadInIEModeAllowed = 1

These are written under HKCU (no admin needed). If the key isn't writable, the server logs the exact values to set manually. When IE_SITE_LIST is unset, the server manages no policy and assumes Edge is already configured for IE mode.

Session creation navigates to the target URL during session start — the only reliable way to cross the Protected-Mode boundary into IE mode without the driver losing the browser.


Troubleshooting

Symptom

Fix

could not start Edge IE mode after N tries

Confirm IE mode renders the site manually in Edge; check IE_SITE_LIST; try bumping IE_ATTACH_RETRIES.

IE session '<id>' is already owned

Two clients used the same IE_SESSION_ID. Give each agent a unique ID, or omit it to use the MCP process PID automatically.

IE engine: NO (Chromium?) in selftest

The site isn't matching the IE-mode site list; the page rendered in Chromium. Fix the site list / policy.

Leftover Edge windows after a crash

Use ie_browsers to inspect and ie_kill_orphans to clean up.

'JSON' is undefined from your own ie_js

The page is in IE7/quirks mode with no window.JSON. Return delimited strings instead of JSON.stringify.


Development

This is a single-file server (ie_mcp.py). Install it editable so the ie-mcp command points at your working copy:

git clone https://github.com/thomfilg/ie-mcp.git
cd ie-mcp
pip install -e .          # or: pipx install --editable .

# diagnose deps/paths and open a real IE-mode session
ie-mcp --selftest

Running straight from the clone without installing also works — python ie_mcp.py --selftest / --install fall back to launching the file by absolute path.

Project layout

  • ie_mcp.py — the entire server: config, the IEDriver wrapper (IeSession), one t_* function per tool, the TOOLS registry, the --install/--selftest CLI, and the stdio JSON-RPC loop.

  • pyproject.toml — packaging + the ie-mcp console-script entry point.

  • requirements.txt — runtime deps (just selenium; mirrors pyproject.toml).

Adding a tool

  1. Write a t_<name>(args) function that returns text_result(...) (or an image result).

  2. Append an entry to the TOOLS list with name, description, inputSchema, and fn.

  3. Keep it Trident-safe: prefer direct arguments[0].innerText / getAttribute over Selenium's JS atoms, and never rely on window.JSON inside injected scripts (IE7/quirks document modes don't have it — return delimited strings and parse them in Python).

  4. Re-run --selftest, then exercise the tool from an MCP client against a real IE-mode app.

Debugging

  • Set IE_LOG_FILE to capture the [ie-mcp] stderr log to a file.

  • Use ie_browsers / ie_kill_orphans to inspect sessions and clean up browsers left by crashed owners. Cleanup deliberately preserves unknown processes and every live agent.

  • Set a descriptive IE_SESSION_ID when logs need to remain easy to correlate with an agent.

  • Set IE_NO_LOCK=1 only while debugging the lease implementation itself.

Parallel agents

Every MCP process still owns exactly one long-lived Selenium session and therefore one browser. Multiple MCP processes can run simultaneously because their leases, logs, owner records, and IEDriver-created Edge profiles are session-scoped. With no configuration, the MCP process PID is used as the session ID, which makes separate Codex/Claude agent processes independent automatically.

[mcp_servers.ie-mcp.env]
IE_SESSION_ID = "qa-agent-country"

Choosing interaction mode (LLM guidance)

LLM agents should choose background when the MCP runs on a person's active desktop. It avoids forcing the IE-mode Edge window to the foreground and uses synthetic events instead of physical mouse/keyboard input. Prefer it for navigation, page inspection, ordinary clicks, and form entry:

[mcp_servers.ie-mcp.env]
IE_INTERACTION_MODE = "background"

Use native only as a compatibility fallback after a required interaction fails in background mode—for example, a legacy control, hover menu, file upload, OS modal, or ActiveX component. Native mode uses focused OS input and may take over the user's mouse:

[mcp_servers.ie-mcp.env]
IE_INTERACTION_MODE = "native"

The mode is fixed for the lifetime of the MCP process, so restart the MCP after changing it. Neither mode is headless: Edge still creates a visible IE-mode window. When multiple native-mode agents run on the same Windows desktop, their focus-sensitive interactions can still conflict. The server also returns this selection guidance in its MCP initialize response so clients can present it to LLMs.

Tests

The ownership suite uses mocked process tables and never opens Edge:

python -m unittest discover -s tests -p "test_*.py" -v

Contributing

Bug reports and PRs are welcome. Please:

  • Keep the server single-file and dependency-light (selenium is the only runtime dep).

  • Match the existing tool conventions (auto-waiting find, frame arg, text_result).

  • Note any IE-mode / Trident quirk you worked around in a code comment — they're rarely obvious.


Roadmap

Planned / in progress (subject to change while in alpha):

  • Multi-tab / multiple window-handle support.

  • Cookie and localStorage inspection tools.

  • Richer ie_grid (pagination + virtualized-grid scrolling helpers).

  • Optional structured (JSON) tool results alongside text.

  • Configurable per-tool default waits.

  • Packaged release + versioned tags once the tool surface stabilizes (1.0.0).


License

MIT © 2026 thomfilg

Available Tools

28 tools
ie_backC

Navigate back in browser history.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. Description fails to disclose behavior when history is empty, whether it throws errors, or if it blocks execution. Underspecified for a mutation tool.

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

Conciseness4/5

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

Single sentence with no unnecessary words. However, could be expanded with parameter details without losing conciseness.

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

Completeness2/5

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

Given the simplicity (1 optional param, no output schema), the description should at least clarify the 'wait' parameter and edge cases like empty history. Current text is insufficient for reliable use.

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

Parameters2/5

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

Parameter 'wait' has 0% schema description coverage, and the tool description does not explain its purpose or behavior. Agent must infer meaning from name alone.

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

Purpose5/5

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

Description clearly states the action ('navigate back') and resource ('browser history'). It distinguishes from sibling tool 'ie_forward' and 'ie_goto'.

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

Usage Guidelines2/5

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

No guidance on when to use vs alternatives. No mention of prerequisites, history stack state, or comparison with other navigation tools.

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

ie_browsersA

List ALL Edge IE-mode windows and IEDriver processes open on the machine, flagging which one THIS session owns (mine=true) and which are orphans. Use to see leftover browsers from prior/other runs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description fully discloses behavior: it lists and flags ownership with 'mine=true'. It implies read-only operation and does not contradict any expected behavior. However, it lacks details on permissions or performance impact.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action, and every word is meaningful. No redundancy or verbosity.

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

Completeness5/5

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

Despite no output schema, the description explains the return value (list of windows/processes with mine flag). This is sufficient for a list tool with zero parameters, providing complete understanding.

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

Parameters4/5

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

The tool has zero parameters, so baseline is 4 as per guidelines. Schema coverage is 100% since there are no properties. The description adds no parameter info but none is needed.

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

Purpose5/5

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

The description clearly states the tool lists all Edge IE-mode windows and IEDriver processes, distinguishing owned vs orphaned. It uses a specific verb 'List' and resource 'browsers', and differentiates from siblings like 'ie_kill_orphans' and 'ie_status'.

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

Usage Guidelines4/5

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

The description explicitly says 'Use to see leftover browsers from prior/other runs', providing a clear usage context. However, it does not mention when not to use or list alternative tools, though the sibling names imply alternatives.

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

ie_clickB

Click an element (auto-waits). 'by' is id/css/xpath/name/link_text/tag/class. action: click (default) | double | right.

ParametersJSON Schema
NameRequiredDescriptionDefault
byYes
waitNo
frameNo
valueYes
actionNoclick | double | right
timeoutNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description should disclose behaviors. It mentions auto-waiting and selector strategies, but omits side effects (e.g., navigation, state changes), error handling, or return behavior, leaving gaps for a critical interaction tool.

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

Conciseness5/5

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

The description is extremely concise with two front-loaded sentences, no extraneous words, and directly addresses the primary purpose and key parameters.

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

Completeness3/5

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

Given 6 parameters, no output schema, and no annotations, the description leaves significant gaps: it does not explain how to combine 'by' and 'value', the role of 'frame', or the effect of 'wait' and 'timeout', which are necessary for correct invocation.

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

Parameters3/5

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

Schema coverage is only 17%, and the description adds meaning for 'by' (listing selector types) and 'action' (listing click/double/right), but does not explain 'value', 'wait', 'frame', or 'timeout', which are crucial for correct usage.

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

Purpose4/5

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

The description clearly states the action 'Click an element' and specifies it auto-waits, but it does not explicitly differentiate from sibling tools like ie_hover or ie_press_key, though it mentions action variants (double, right) which provide some distinction.

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

Usage Guidelines2/5

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 (e.g., ie_hover, ie_fill) or any prerequisites, leaving the agent without decision context beyond the basic purpose.

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

ie_closeA

Close the IE-mode session and quit the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It states that it closes the session and quits the browser, which is transparent about the main effect. However, it lacks details on side effects (e.g., whether unsaved data is lost, if it can be safely called multiple times, or if it waits for pending operations).

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

Conciseness5/5

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

The description is extremely concise, using one sentence to convey the full purpose. Every word is necessary; there is no redundancy. It is front-loaded with the action.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, no output schema, and a straightforward action), the description is complete enough. An agent can understand exactly what the tool does without additional details.

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

Parameters4/5

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

The tool has zero parameters, and schema description coverage is 100% (no parameters to describe). The description adds no parameter information, which is acceptable since none exist. Baseline is 4 for 0 parameters.

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

Purpose4/5

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

The description clearly states the action: 'Close the IE-mode session and quit the browser.' It specifies the verb (close) and the resource (IE-mode session and browser), making the purpose clear. However, it does not differentiate from sibling tools like ie_back or ie_forward, but the distinct action of closing is unique enough.

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

Usage Guidelines2/5

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. The description does not mention prerequisites (e.g., whether a session must exist) or scenarios where it should be preferred over other tools like ie_kill_orphans.

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

ie_dialogA

Handle a JS dialog (alert/confirm/prompt). action: accept (default) | dismiss | text | sendkeys (with text). Note: OS-level IE modals may be unreachable.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNotext for sendkeys
actionNoaccept | dismiss | text | sendkeys

TDQS

A4.5/5.0
Behavior4/5

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

Discloses possible actions (accept, dismiss, text, sendkeys) and warns that OS modals may be unreachable. Lacks detail on error cases (e.g., non-existent dialog), but covers key behavior.

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

Conciseness5/5

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

Two concise sentences: first states purpose and actions, second adds important limitation. No redundancy.

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

Completeness4/5

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

Adequate for a simple tool: covers purpose, actions, limitation. Minor omission: no mention of return value for 'text' action, but acceptable without output schema.

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

Parameters5/5

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

Schema has 100% coverage, but description adds significant value: clarifies valid action values, notes default (accept), and explains text parameter usage for sendkeys.

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

Purpose5/5

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

Clearly states it handles JS dialogs (alert/confirm/prompt) and lists specific actions. Distinct from sibling tools, which focus on navigation, clicks, etc.

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

Usage Guidelines4/5

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

Provides context for use: when a dialog appears. Mentions limitation about OS-level modals. No explicit alternatives, but no sibling tool targets dialogs.

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

ie_fillC

Type text into an input/textarea element (auto-waits).

ParametersJSON Schema
NameRequiredDescriptionDefault
byYes
textYes
clearNo
frameNo
valueYes

TDQS

C2.9/5.0
Behavior3/5

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

Mentions 'auto-waits' implying the tool waits for the element to be ready, which adds behavioral context beyond the bare schema. However, it fails to disclose whether the field is cleared before typing (the 'clear' parameter exists) or any default behavior.

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

Conciseness4/5

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

Single sentence, no fluff. Efficiently communicates core action. However, given 5 parameters, a bit more detail could be included without harming conciseness.

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

Completeness2/5

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

With 5 parameters, no schema descriptions, no output schema, and no annotations, the description is insufficient. The agent lacks information on return values, parameter usage, and edge cases (e.g., frames or clearing).

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

Parameters2/5

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

With 0% schema description coverage, the description must explain parameters. It only connects 'text' to the typing action but does not clarify 'by', 'value', 'clear', or 'frame'. The agent cannot infer how to locate the element or use optional parameters.

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

Purpose4/5

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

The description states 'Type text into an input/textarea element (auto-waits).' This clearly identifies the action (typing text) and target (input/textarea elements), differentiating it from siblings like ie_click or ie_text.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives like ie_press_key or ie_select. The description provides no context for selection criteria.

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

ie_forwardC

Navigate forward in browser history.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It fails to mention what happens if there is no forward history, whether it waits for page load, or how the wait parameter affects behavior. This leaves critical gaps.

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

Conciseness3/5

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

The description is very concise at one sentence, but it sacrifices necessary detail. It is not overly verbose, but it fails to earn its place by omitting essential context about the wait parameter and behavior.

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

Completeness2/5

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

Given the tool's low complexity (one optional param, no output schema), the description should cover prerequisites (e.g., an active browser session) and the effect of the wait parameter. It is incomplete for an agent to judge when and how to invoke it.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention the 'wait' parameter at all. The parameter's purpose (e.g., delay after navigation) remains undefined, adding no value beyond the schema.

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

Purpose4/5

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

The description states it navigates forward in browser history, which is a specific verb and resource. It implicitly distinguishes from sibling tools like ie_back (back) and ie_goto (specific URL). However, it could be more precise about scope (e.g., 'one step').

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

Usage Guidelines2/5

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. For example, it does not clarify that it only works when there is forward history, nor does it differentiate from ie_goto for forward navigation.

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

ie_framesA

List the frames/iframes of the current page (index, name, id, src). Use the index or name with the 'frame' arg of other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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 discloses that the tool lists frames and returns specific fields, but does not mention read-only nature, side effects, or error conditions. The behavior is implied to be non-destructive, but not explicitly stated.

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

Conciseness5/5

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

The description is two sentences with no extraneous text. The main action is front-loaded, and the usage hint is concise. Every word earns its place.

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

Completeness4/5

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

For a simple listing tool with no output schema and no annotations, the description is fairly complete. It explains what is returned and how to use it. It does not cover error conditions or edge cases, but these are not critical for such a straightforward tool.

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

Parameters3/5

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

The tool has no parameters, so schema coverage is 100%. The description adds no parameter information because there are none. Baseline score of 3 is appropriate as the description does not need to compensate for missing parameter docs.

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

Purpose5/5

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

The description clearly states the tool lists frames/iframes of the current page, specifying the output fields (index, name, id, src). It also distinguishes from siblings by explaining how to use the output with other tools via the 'frame' argument.

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

Usage Guidelines4/5

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

The description gives explicit usage guidance: 'Use the index or name with the "frame" arg of other tools.' This tells the agent when to use this tool and how to use its output. However, it does not explicitly state when not to use it or provide alternatives.

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

ie_getC

Read an element's text (default), its 'value', or a named attribute/property. Set attr=text|value|.

ParametersJSON Schema
NameRequiredDescriptionDefault
byYes
attrNotext (default) | value | any attribute name
frameNo
limitNo
valueYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description only states 'Read an element's...' without disclosing behavioral traits such as return structure, multi-element handling, or timing, which are critical for a read tool.

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

Conciseness5/5

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

Two concise sentences with zero wasted words; front-loaded with the action and default behavior.

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

Completeness2/5

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

With 5 parameters, no output schema, and low schema coverage, the description is far too sparse. It fails to explain the selector mechanism ('by' and 'value') or optional parameters like 'frame' and 'limit'.

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

Parameters3/5

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

The description adds meaning to the 'attr' parameter (text, value, attribute name), but only 20% of parameters are described in the schema. Required parameters 'by' and 'value' lack any semantic hints.

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

Purpose4/5

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

The description clearly states the purpose: reading an element's text, value, or attribute. It distinguishes the tool as a general reader among siblings like ie_text and ie_html, though sibling differentiation is implicit.

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

Usage Guidelines2/5

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 ie_text or ie_html. The description only specifies how to set the 'attr' parameter without contextual usage advice.

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

ie_gotoC

Navigate the current IE-mode session to a new URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
waitNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only states navigation occurs, but does not disclose whether it waits for page load, error handling on invalid URLs, or the effect of the optional 'wait' parameter.

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

Conciseness4/5

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

A single sentence with no extraneous words, efficient for a simple tool. However, the brevity sacrifices necessary details about parameters and behavior.

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

Completeness2/5

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

For a tool with two parameters and no output schema, the description lacks information on return values, side effects, error states, and how the 'wait' parameter affects navigation. It is insufficient for robust agent usage.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning beyond the parameter names. It does not clarify the format of the URL (absolute/relative), the unit or purpose of 'wait', or any constraints.

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

Purpose5/5

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

The description clearly states the action ('Navigate') and the resource ('current IE-mode session to a new URL'). It distinguishes from siblings like ie_back and ie_forward by specifying navigation to a new URL rather than history traversal.

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

Usage Guidelines2/5

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 ie_open or ie_back. No prerequisites (e.g., active session) are mentioned, leaving 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.

ie_gridA

Extract a tabular grid as structured rows. Auto-picks the table with the most multi-cell rows (or pass table_id). Returns headers + rows (header-keyed dicts when the header row is detected/given). App-agnostic.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNoframe/path holding the grid (e.g. '3/0')
limitNomax rows (default 500)
headersNoexplicit column names (optional)
table_idNospecific table element id (optional)
out_limitNomax output chars (default 12000)

TDQS

A4.2/5.0
Behavior4/5

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

Discloses that it auto-picks the table, returns headers and rows as header-keyed dicts, and is app-agnostic. No annotations present, so description carries full burden; it adequately covers read-only extraction behavior.

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

Conciseness5/5

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

Two concise sentences with no wasted words. Front-loaded with the core purpose, then details.

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

Completeness4/5

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

Covers return format, auto-detection, and app-agnostic nature. Lacks details on error handling or what happens when no grid is found, but overall sufficient for a single-purpose extraction tool.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds minimal additional meaning beyond the schema. The mention of auto-selection and return format provides some context but does not significantly enhance parameter understanding.

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

Purpose5/5

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

The description explicitly states 'Extract a tabular grid as structured rows' with a specific verb and resource. It distinguishes from siblings by focusing on grid extraction vs general text or HTML retrieval.

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

Usage Guidelines4/5

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

Provides guidance on auto-picking the table or passing a table_id. Does not explicitly exclude other scenarios, but context is clear.

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

ie_hoverC

Hover the mouse over an element (for menus/tooltips).

ParametersJSON Schema
NameRequiredDescriptionDefault
byYes
waitNo
frameNo
valueYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations present, and the description only states the action without detailing behavior on error, disabled elements, or scrolling requirements.

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

Conciseness4/5

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

Single sentence is appropriately concise for a simple hover action, but could be slightly expanded for clarity on parameters.

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

Completeness2/5

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

Lacks details on return value, error handling, and parameter semantics, making it incomplete despite the tool's low complexity.

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

Parameters2/5

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

Schema has 4 parameters with 0% description coverage; the description adds no explanations for 'by', 'value', 'wait', or 'frame', leaving the agent without guidance.

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

Purpose4/5

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

The description clearly states it hovers over an element, specifically for menus/tooltips, distinguishing it from click or other actions.

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

Usage Guidelines3/5

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

The phrase 'for menus/tooltips' gives implicit context for when to use, but lacks explicit guidance on when not to use or alternatives like ie_click.

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

ie_htmlC

Get the HTML source of the page or of a specific frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNo
limitNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, and the description fails to disclose important behavioral traits such as whether the HTML is rendered or raw, page load requirements, or potential size limits.

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

Conciseness4/5

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

The description is a single sentence with no unnecessary words. It is concise but could be slightly more informative without sacrificing brevity.

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

Completeness2/5

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

Given the lack of output schema and many sibling tools, the description provides insufficient context for an agent to determine invocation details or expected return format.

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

Parameters1/5

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

The schema has 0% description coverage, and the description does not explain the meaning or format of the 'frame' or 'limit' parameters, leaving their semantics entirely ambiguous.

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

Purpose4/5

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

The description clearly states it retrieves HTML source, either from the page or a specific frame, using a specific verb and resource. However, it doesn't differentiate from siblings like ie_text or ie_get, which could cause confusion.

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

Usage Guidelines2/5

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., ie_text for text, ie_screenshot for images). The description only implies usage for HTML source but lacks exclusions.

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

ie_jsC

Execute JavaScript in the page or a frame and return the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNo
limitNo
scriptYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries the full burden. It mentions execution context (page or frame) and return of result, but does not disclose potential side effects, execution timeout, security implications, or whether it modifies 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.

Conciseness4/5

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

A single, concise sentence that efficiently conveys the core purpose. No redundant words, but could be better structured to include more detail without losing conciseness.

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

Completeness2/5

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

Given the tool has 3 undocumented parameters, no annotations, and no output schema, the description is too minimal. It does not explain return value format, error handling, or prerequisites, leaving an AI 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.

Parameters2/5

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

Schema coverage is 0%, so description must explain parameters. It mentions 'script' implicitly and 'frame' generally, but does not explain the 'limit' parameter or how to specify a frame (string vs integer). The description adds minimal meaning beyond the schema structure.

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

Purpose5/5

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

The description clearly states the verb 'execute', the resource 'JavaScript in the page or a frame', and the outcome 'return the result'. This distinguishes it from sibling tools that navigate, click, or extract text.

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

Usage Guidelines2/5

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 ie_click or ie_fill. The description only states what it does, not when it's appropriate.

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

ie_kill_orphansA

Terminate only IE-mode Edge / IEDriver processes recorded for crashed ie-mcp sessions. Never kills browsers owned by live agents or unknown processes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

The description discloses the scope: only recorded processes for crashed sessions, never live agents or unknown. With no annotations, this fulfills the burden well, though it could mention any potential side effects (e.g., whether it prompts or logs). Still highly transparent.

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

Conciseness5/5

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

Two sentences, no waste. The first sentence states the action, the second adds critical restrictions. Perfectly front-loaded and concise.

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

Completeness5/5

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

Given zero parameters, no output schema, and no annotations, the description fully covers what an agent needs: purpose, scope, and constraints. It is complete for tool selection and invocation.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100% (vacuously). The description adds meaning beyond the schema by explaining the tool's behavior without needing parameters. 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.

Purpose5/5

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

The description clearly states the tool terminates IE-mode Edge / IEDriver processes for crashed sessions, distinguishing it from killing live agents or unknown processes. It uses a specific verb (terminate) and resource (orphan processes), and the exclusion of live agents differentiates it from sibling tools like ie_close.

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

Usage Guidelines5/5

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

The description explicitly states when to use (crashed ie-mcp sessions) and when not to use (live agents, unknown processes). This provides clear guidance for agent decision-making, effectively differentiating from alternatives among sibling tools.

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

ie_openB

Start (or reuse) an Edge IE-mode session and navigate to a URL (default IE_DEFAULT_URL). Keeps the session alive for later calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to open (default about:blank)
waitNoseconds to wait after load (default 4)

TDQS

B3.2/5.0
Behavior3/5

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

Without annotations, the description carries the transparency burden. It mentions session reuse and keeping alive but omits details like what happens on failure, concurrency, or permissions. Adequate 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.

Conciseness4/5

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

Two sentences efficiently convey core purpose and behavior. Could be slightly more structured but is appropriately sized.

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

Completeness3/5

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

Given no output schema, the description should explain return values or status. It only mentions session persistence. With many sibling tools, it could better contextualize its role. Adequate but not comprehensive.

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

Parameters2/5

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

Schema coverage is 100% with basic descriptions. However, the description contradicts the schema: description states default URL is 'IE_DEFAULT_URL', while the schema says 'about:blank'. This inconsistency undermines clarity.

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

Purpose4/5

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

The description clearly states the tool starts or reuses an Edge IE-mode session and navigates to a URL, distinguishing it from siblings like ie_goto which likely navigate without session management. However, it does not explicitly contrast with similar tools.

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

Usage Guidelines3/5

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

The description implies this tool is for initial session setup and reuse, but lacks explicit guidance on when to use alternatives like ie_goto for navigation within an existing session. 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.

ie_press_keyA

Press a key on an element (if by/value given) or the active element. Key names: Enter, Tab, Escape, Space, Backspace, Delete, Up/Down/Left/Right, Home, End, PageUp, PageDown, F5 — or a literal character.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
keyYes
waitNo
frameNo
valueNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It covers basic behavior: key names and element targeting. However, it does not disclose behavior for parameters like 'wait', 'frame', or 'by'/'value' selectors. The tool's side effects (e.g., triggering events) are implied but not stated.

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

Conciseness5/5

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

The description is a single sentence followed by key name examples. Every word is necessary, and the structure is efficient. No fluff.

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

Completeness3/5

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

Given 5 parameters and no schema descriptions, the description is only partially complete. It explains the core function and key naming but omits details on element targeting, waiting, and frame handling. For a 'press key' tool, it is adequate for basic use but lacks full coverage.

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

Parameters2/5

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

Schema description coverage is 0%. The description only explains the 'key' parameter by listing valid key names. It fails to explain 'by', 'value', 'wait', and 'frame', which are critical for correct usage. This leaves the agent guessing about element targeting and timing.

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

Purpose5/5

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

The description clearly states 'Press a key on an element' and distinguishes between targeting a specific element (if by/value given) or the active element. It also lists valid key names, making the tool's purpose explicit. This differentiates it from sibling tools like ie_click or ie_fill.

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

Usage Guidelines4/5

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

The description implies usage scenarios: when you need to press a key on an element or the active element. It does not explicitly state when not to use it or name alternatives, but the context is clear enough for an AI agent to infer appropriate use cases.

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

ie_resizeB

Resize the browser window (useful for consistent screenshots).

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the action (resize) but does not mention side effects, whether the page state persists, or any other behavioral traits.

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

Conciseness4/5

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

The description is a single sentence, front-loaded, and efficient. It earns its place by adding a practical use case (screenshots). However, it could be slightly more structured with parameter hints.

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

Completeness3/5

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

Given the tool's simplicity (2 integer params, no output schema), the description is minimally adequate. It conveys the primary function but lacks parameter semantics and usage boundaries, making it only moderately complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain parameters. However, it does not provide any meaning beyond the parameter names (width/height), such as units or constraints. This leaves the agent guessing about expected values.

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

Purpose5/5

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

The description clearly states 'Resize the browser window' with a specific verb and resource. The parenthetical '(useful for consistent screenshots)' adds context that helps distinguish from sibling navigation tools like 'ie_open' or 'ie_goto'.

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

Usage Guidelines2/5

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, nor does it mention when not to use it. It only implies use for screenshots, but lacks clear usage context.

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

ie_screenshotA

Capture a PNG screenshot of the IE-mode window, or of a single element if by/value are given (returned as an image; optionally saved to save_path).

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoelement locator type (for element screenshot)
frameNo
valueNoelement locator value (for element screenshot)
no_inlineNoreturn confirmation text instead of the image blob
save_pathNo

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must fully disclose behavior. It covers output as an image, PNG format, and optional save, but lacks details on error handling (e.g., missing element), prerequisites (visible window), and side effects. This leaves gaps for an agent to anticipate behavior.

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

Conciseness5/5

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

Single, well-structured sentence that front-loads the main action and linearly adds optional details. No wasted words; every phrase adds value.

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

Completeness3/5

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

Given no output schema and no annotations, the description should provide more context about return behavior, error states, and parameter interactions. It mentions two modes but omits details on when one might fail or what happens with missing elements. Parameter 'frame' is left unexplained.

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

Parameters3/5

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

Description clarifies that by/value are used for element screenshots and save_path for optional saving, but fails to explain the 'frame' parameter (no schema description) and 'no_inline' (schema description exists). With 60% schema coverage, description adds moderate value but misses critical parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose: capturing a PNG screenshot of the IE-mode window or a single element using by/value. It distinguishes itself from sibling tools (no other screenshot tool present) and provides specific details on output format and optional saving.

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

Usage Guidelines4/5

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

The description explains two usage modes (full window vs. element screenshot) and optional save_path, but does not explicitly state when to use which mode or provide exclusions. Sibling tools offer no alternative screenshot functionality, so the tool is effectively unique.

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

ie_scrollA

Scroll: bring an element into view (by/value), scroll page/container to top|bottom (to=...), or by pixels (dx/dy). Needed for virtualized grids.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNo
dxNo
dyNo
toNotop | bottom
frameNo
valueNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so description must carry the burden. It discloses basic behaviors (scroll types) but lacks details on side effects, error handling, or required permissions. Adequate but not thorough.

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

Conciseness5/5

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

Two sentences, front-loaded with modes and a use case. No superfluous text; every clause earns its place.

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

Completeness3/5

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

With 6 parameters and no output schema or annotations, the description covers the main modes but does not explain parameter interactions, defaults, or constraints (e.g., can 'by' and 'to' be combined?). Adequate but incomplete.

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

Parameters4/5

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

Adds meaning beyond the sparse schema descriptions: maps 'by/value' to bringing element into view, 'to' to scroll positions, 'dx/dy' to pixel scroll. Only 'frame' is not explained, but overall adds significant value.

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

Purpose5/5

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

Clearly states verb (scroll) and resource (element or page/container), with specific modes: bring into view, scroll to top/bottom, or by pixels. Distinguishes itself from sibling tools like 'ie_click' or 'ie_fill'.

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

Usage Guidelines4/5

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

Provides a clear use case: 'Needed for virtualized grids.' Implies when to use but does not explicitly state when not to use or list alternatives.

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

ie_selectC

Select an in a dropdown, by label (visible text), option_value, or index. Provide exactly one of label/option_value/index.

ParametersJSON Schema
NameRequiredDescriptionDefault
byYes
frameNo
indexNooption index (0-based)
labelNooption visible text
valueYes
option_valueNooption value attribute

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. Description only states how to identify the option but does not disclose what happens after selection, error conditions, or side effects. It implies mutation of the dropdown selection but is not explicit.

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

Conciseness5/5

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

Single sentence of 15 words, no fluff. All information is front-loaded and to the point.

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

Completeness2/5

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

For a tool with 6 parameters and no output schema or annotations, the description is too sparse. It does not explain the return behavior, failure cases, or the role of all parameters. Additional context is needed for effective use.

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

Parameters3/5

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

Schema has 50% coverage with descriptions for index, label, and option_value. The description adds context that these are the selection methods, but it fails to explain the 'by' and 'value' parameters which are in the schema. The description partially compensates but introduces ambiguity.

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

Purpose4/5

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

The description clearly states selecting an option in a select dropdown via label, option_value, or index. However, the requirement to provide exactly one conflicts with the schema having two required parameters (by and value), causing slight confusion.

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

Usage Guidelines2/5

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

No guidance on when to use this tool compared to sibling tools like ie_click or ie_fill. The description says to provide exactly one of the identifiers, but the schema requires both 'by' and 'value', which is contradictory.

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

ie_sleepA

Sleep for N seconds (last resort; prefer ie_wait_ready / ie_wait_text).

ParametersJSON Schema
NameRequiredDescriptionDefault
secondsNo

TDQS

A4.7/5.0
Behavior4/5

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

No annotations exist, but the description accurately describes the simple blocking sleep behavior. Could mention potential effects on automation flow, but given the trivial action, it's largely sufficient.

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

Conciseness5/5

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

Extremely concise with a single meaningful sentence plus parenthetical guidance. No wasted words.

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

Completeness5/5

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

Complete for a simple sleep tool with no output schema. The brief description covers purpose, usage, and alternatives.

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

Parameters4/5

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

The sole parameter 'seconds' is explained by 'sleep for N seconds', compensating for the schema's lack of description. No further details needed.

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

Purpose5/5

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

The description clearly states the tool sleeps for N seconds and distinguishes itself from siblings by suggesting ie_wait_ready/ie_wait_text as preferred alternatives.

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

Usage Guidelines5/5

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

Explicitly marks itself as a last resort and names two preferable alternatives, providing clear when-to-use guidance.

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

ie_statusA

Session state as JSON: active/alive, title, url, window_handles, and the interaction mode, session identity/directory, and owned browser PIDs/profile.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It describes the output but does not mention side effects, safety (read-only nature), rate limits, or whether the tool modifies session state. For a read operation, this 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.

Conciseness4/5

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

Single sentence packed with key information. It is concise and front-loaded, though a list format could improve readability.

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

Completeness4/5

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

Given no parameters and no output schema, the description covers the main return fields. It is reasonably complete for a status tool, though some details (e.g., exact structure of JSON) are implied rather than explicit.

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

Parameters4/5

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

No parameters exist, so the description's role is minimal. It effectively describes the output structure, which adds value beyond the empty schema.

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

Purpose5/5

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

The description explicitly states it returns session state as JSON, listing specific fields (active/alive, title, url, window_handles, interaction mode, etc.). This clearly distinguishes it from sibling action-oriented tools like ie_click or ie_fill.

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

Usage Guidelines3/5

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

The description implies use as a status/check tool but does not explicitly state when to use it versus alternatives. No guidance on when not to use or what prerequisites exist.

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

ie_textC

Get visible text of the page or of a specific frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNoframe index or name (optional)
limitNo

TDQS

C2.7/5.0
Behavior2/5

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

Without annotations, the description is the sole source of behavioral info. It fails to mention side effects, permissions, or any limitations (e.g., whether text is extracted from the DOM after rendering, or if the tool waits for page load).

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

Conciseness4/5

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

The description is extremely concise, consisting of a single sentence. While this is efficient, it omits important details that could be structured for clarity, such as parameter explanations or return type.

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

Completeness2/5

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

Despite having no output schema, the description does not explain the return value format, behavior when no text is found, or how the 'limit' parameter affects output. This leaves the agent with insufficient information to confidently use the tool.

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

Parameters2/5

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

The schema covers only 50% of parameters (frame has a brief description, limit has none). The description does not add any additional meaning beyond the schema, leaving the 'limit' parameter completely unexplained.

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

Purpose4/5

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

The description clearly states that the tool retrieves visible text from a page or a specific frame, distinguishing it from sibling tools like ie_html (HTML) and ie_screenshot (visual). However, it could be more specific about what 'visible text' entails.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives (e.g., ie_html for full source, or ie_get for attribute). There is no discussion of preconditions or expected outcomes.

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

ie_uploadC

Set a file by sending a local file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
byYes
pathYesabsolute local file path
frameNo
valueYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description should fully disclose behavior. It mentions 'sending a local file path' but does not explain whether this triggers a file selection dialog or directly sets the input value, nor does it state side effects or requirements (e.g., file existence). The behavior remains ambiguous.

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

Conciseness3/5

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

The description is a single short sentence, which is concise but lacks essential detail. It could be expanded to cover parameters and usage context without being verbose.

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

Completeness2/5

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

Given the tool has 4 parameters (3 required) and no output schema, the description is insufficient. It fails to explain how to specify the file input element (by/value/frame) and what the tool does beyond setting a path. The definition is incomplete for effective use.

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

Parameters1/5

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

The input schema has 4 parameters with only 25% description coverage (only 'path' is described). The tool description adds no additional meaning for the parameters 'by', 'value', or 'frame', leaving them unexplained. This is a critical gap for a required parameter (by, value, path).

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

Purpose4/5

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

The description clearly identifies the tool's purpose: setting a file input by providing a local file path. It effectively distinguishes from sibling tools like 'ie_fill' (for text inputs) and 'ie_click' (for actions). The verb 'set' is specific and the resource is well-defined.

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

Usage Guidelines2/5

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

The description implies usage for file upload scenarios, but lacks explicit guidance on when to use versus alternatives like 'ie_fill' or prerequisites (e.g., the file input must exist and be visible). No when-not or alternative tool suggestions are provided.

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

ie_wait_elementA

Wait for an element (by/value) to appear — or, with gone=true, to disappear. Use before acting on slow-rendering content.

ParametersJSON Schema
NameRequiredDescriptionDefault
byYes
goneNowait for it to disappear instead
frameNo
valueYes
timeoutNomax seconds (default 20)
intervalNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so description carries full burden. It discloses the wait-for-appearance/disappearance behavior. However, it omits what happens on timeout or errors, and doesn't mention polling mechanics or side effects.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the core purpose. No wasted words, efficient for quick understanding.

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

Completeness3/5

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

Given 6 parameters, no output schema, and no annotations, the description should provide more behavioral context (e.g., default timeout behavior, success/failure signals). It covers the basic wait logic but lacks completeness.

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

Parameters2/5

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

Schema description coverage is only 33% (only 'gone' and 'timeout' have descriptions). The description echoes 'gone=true' but adds no new meaning for 'by', 'value', 'frame', or 'interval'. With low coverage, it should compensate more.

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

Purpose5/5

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

The description clearly states the action (wait for an element) and specifies two modes: appear or disappear. It distinguishes from siblings like ie_wait_text by focusing on element selectors rather than text patterns.

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

Usage Guidelines4/5

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

Explicitly advises to use 'before acting on slow-rendering content', providing a clear context. Lacks explicit when-not-to-use or alternatives, but the guidance is direct and actionable.

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

ie_wait_readyA

Wait until the page finishes loading: every same-origin frame's document.readyState is 'complete' AND the DOM stops changing for a few polls (content settled). Handles slow async/frameset content. Use THIS to know content is ready, then search the data separately. Do NOT wait for a specific value to detect load — if it's absent you can't tell 'still loading' from 'not present'. Returns loaded=true/false with frame count, text length, element count and a content sample.

ParametersJSON Schema
NameRequiredDescriptionDefault
settleNorequire DOM to stop changing (default true); set false to only require readyState complete
timeoutNomax seconds (default 60)
intervalNopoll seconds (default 2)
min_charsNominimum visible text length to count as loaded (default 1)
stable_roundsNoconsecutive unchanged polls to call it settled (default 2)

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains the waiting conditions (readyState + DOM settled), handling of async content, and return values. Slightly lacking detail on side effects or prerequisites, but sufficient for a wait tool.

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

Conciseness5/5

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

The description is concise, front-loaded with purpose, then usage guidance, then return info. Every sentence provides value with no redundancy.

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

Completeness4/5

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

Given no output schema, the description includes return value details (loaded, frame count, etc.), which is good. Could mention edge cases like timeouts, but overall complete for a wait tool.

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

Parameters3/5

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

Schema coverage is 100% with descriptions. The tool description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool waits for page readiness (document.readyState complete and DOM settled). It specifies the exact conditions and distinguishes from waiting for specific values, which avoids confusion.

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

Usage Guidelines5/5

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

Explicit guidance: 'Use THIS to know content is ready, then search the data separately' and 'Do NOT wait for a specific value to detect load'. This helps the agent decide when to use this tool versus other approaches.

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

ie_wait_textA

Poll until a specific substring appears in the page text (for slow async content). Scans all frames unless 'frame' is given; returns which frame matched + a preview. For 'is the page loaded?' use ie_wait_ready instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
goneNowait for the substring to DISAPPEAR instead of appear (e.g. a spinner)
frameNo
timeoutNomax seconds (default 45)
containsYes
intervalNopoll seconds (default 2)
case_insensitiveNo

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It explains polling behavior, frame scanning, and the return of a match preview. It could mention default timeout/interval values explicitly, but overall good disclosure.

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

Conciseness5/5

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

Two sentences with clear, front-loaded information. No unnecessary words, every sentence adds value.

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

Completeness4/5

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

Given the tool's complexity and lack of output schema, the description adequately explains the polling behavior and return info. It could be more specific about the preview format or return structure, but it's sufficient for a wait tool.

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

Parameters4/5

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

Schema coverage is 50%. The description adds meaning to 'contains' (substring), 'gone' (disappear), and 'frame' (all frames unless given). However, it does not describe 'case_insensitive' or give explicit defaults for 'timeout' and 'interval', which the schema partially covers.

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

Purpose5/5

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

The description clearly states the tool polls until a substring appears (or disappears with 'gone'), scanning all frames unless a specific frame is given, and returns which frame matched plus a preview. It distinguishes itself from ie_wait_ready for page load detection.

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

Usage Guidelines5/5

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

Explicitly states when to use (for slow async content) and when not to use (for page load, use ie_wait_ready). Also mentions the 'gone' option for disappearance and frame targeting.

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

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct action or state in browser automation, with clear separation between navigation, waiting, interaction, and data extraction. No two tools have overlapping purposes that would cause confusion for an agent.

Naming Consistency5/5

All tools follow the 'ie_' prefix with a consistent verb_noun pattern (e.g., ie_press_key, ie_wait_element). No mixing of naming conventions, making the set predictable.

Tool Count4/5

28 tools is on the high side, but each tool addresses a specific need in IE-mode automation (e.g., waiting, scrolling, grids). The count feels justified given the complexity of the domain.

Completeness5/5

The tool set covers the full lifecycle of browser automation: navigation, page state, element interaction, waiting, dialogs, JavaScript, screenshots, and structured data extraction. No obvious gaps for typical web automation tasks.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/thomfilg/ie-mcp'

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