ie-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ie-mcplog into the legacy HR portal and show the dashboard"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ie-mcp
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
Option A — one command, straight from GitHub (recommended)
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 addtakes<name> <command…>— here the name isie-mcpand the command is theuvx …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 --installie-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 |
|
Codex CLI |
|
Gemini CLI |
|
Or via a client's config file (all equivalent — { "command": "ie-mcp" }):
Claude Desktop —
claude_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 --selftestpasses 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 --selftestA 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'sreadyStateto 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
--selftestto 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 |
Microsoft Edge | With IE mode available (Edge ships it on Windows 10/11). |
IEDriverServer.exe | The Selenium IE driver (e.g. |
Python 3.8+ | Standard library only, plus selenium. |
selenium |
|
Configuration
All configuration is via environment variables — all optional:
Variable | Default | Purpose |
|
| Path to |
| (per-user cache path) | Path to |
| (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. |
|
| URL |
|
| IEDriver attach attempts. |
|
| Per-page load timeout (seconds). |
|
| Extra |
|
| Input strategy: |
|
| Optional override for this session's log file. |
|
| Stable agent/session name. Different IDs can run concurrently; the same ID is exclusive. |
|
| Root for session directories containing logs, leases, and ownership records. |
|
| Optional override for this session's atomic lease file. |
| (unset) | Development escape hatch that disables the per-session lease. Do not use for normal agents. |
Tools
Tool | Description |
| Start (or reuse) an Edge IE-mode session and navigate to a URL. |
| Navigate the current session to a new URL. |
| Session state as JSON (active/alive, title, url, owned PIDs). |
| List all Edge IE-mode windows + IEDriver processes, flagging the one this session owns. |
| Terminate processes recorded for crashed sessions only; never kills live-agent or unknown browsers. |
| List the frames/iframes of the current page (index, name, id, src). |
| Get visible text of the page or a specific frame. |
| Get HTML source of the page or a frame. |
| Click an element (auto-waits); |
| Type text into an input/textarea (auto-waits). |
| Set a |
| Handle a JS dialog ( |
| Execute JavaScript in the page or a frame and return the result. |
| PNG screenshot of the window, or of a single element. |
| Poll until a substring appears (or disappears) in the page text. |
| Wait until the page (and same-origin frames) finish loading and settle. |
| Select an |
| Press a key (Enter/Tab/Escape/arrows/… or a literal char). |
| Navigate browser history. |
| Hover over an element (menus/tooltips). |
| Resize the browser window. |
| Read an element's text, |
| Wait for an element to appear — or, with |
| Scroll an element into view, to top/bottom, or by pixels. |
| Extract a tabular grid as structured (header-keyed) rows. |
| Sleep N seconds (last resort; prefer |
| 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 = 1InternetExplorerIntegrationSiteList = file:///…/your-site-list.xmlInternetExplorerIntegrationReloadInIEModeAllowed = 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 |
| Confirm IE mode renders the site manually in Edge; check |
| Two clients used the same |
| 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 |
| The page is in IE7/quirks mode with no |
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 --selftestRunning 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), onet_*function per tool, theTOOLSregistry, the--install/--selftestCLI, and the stdio JSON-RPC loop.pyproject.toml— packaging + theie-mcpconsole-script entry point.requirements.txt— runtime deps (just selenium; mirrorspyproject.toml).
Adding a tool
Write a
t_<name>(args)function that returnstext_result(...)(or an image result).Append an entry to the
TOOLSlist withname,description,inputSchema, andfn.Keep it Trident-safe: prefer direct
arguments[0].innerText/getAttributeover Selenium's JS atoms, and never rely onwindow.JSONinside injected scripts (IE7/quirks document modes don't have it — return delimited strings and parse them in Python).Re-run
--selftest, then exercise the tool from an MCP client against a real IE-mode app.
Debugging
Set
IE_LOG_FILEto capture the[ie-mcp]stderr log to a file.Use
ie_browsers/ie_kill_orphansto inspect sessions and clean up browsers left by crashed owners. Cleanup deliberately preserves unknown processes and every live agent.Set a descriptive
IE_SESSION_IDwhen logs need to remain easy to correlate with an agent.Set
IE_NO_LOCK=1only 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" -vContributing
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,framearg,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
localStorageinspection 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 toolsie_backC
Navigate back in browser history.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | ||
| wait | No | ||
| frame | No | ||
| value | Yes | ||
| action | No | click | double | right | |
| timeout | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | text for sendkeys | |
| action | No | accept | dismiss | text | sendkeys |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | ||
| text | Yes | ||
| clear | No | ||
| frame | No | ||
| value | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the 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.
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.
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.
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.
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.
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|.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | ||
| attr | No | text (default) | value | any attribute name | |
| frame | No | ||
| limit | No | ||
| value | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| wait | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | frame/path holding the grid (e.g. '3/0') | |
| limit | No | max rows (default 500) | |
| headers | No | explicit column names (optional) | |
| table_id | No | specific table element id (optional) | |
| out_limit | No | max output chars (default 12000) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | ||
| wait | No | ||
| frame | No | ||
| value | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| limit | No | ||
| script | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to open (default about:blank) | |
| wait | No | seconds to wait after load (default 4) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| key | Yes | ||
| wait | No | ||
| frame | No | ||
| value | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | element locator type (for element screenshot) | |
| frame | No | ||
| value | No | element locator value (for element screenshot) | |
| no_inline | No | return confirmation text instead of the image blob | |
| save_path | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | ||
| dx | No | ||
| dy | No | ||
| to | No | top | bottom | |
| frame | No | ||
| value | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | ||
| frame | No | ||
| index | No | option index (0-based) | |
| label | No | option visible text | |
| value | Yes | ||
| option_value | No | option value attribute |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | frame index or name (optional) | |
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | ||
| path | Yes | absolute local file path | |
| frame | No | ||
| value | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | ||
| gone | No | wait for it to disappear instead | |
| frame | No | ||
| value | Yes | ||
| timeout | No | max seconds (default 20) | |
| interval | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| settle | No | require DOM to stop changing (default true); set false to only require readyState complete | |
| timeout | No | max seconds (default 60) | |
| interval | No | poll seconds (default 2) | |
| min_chars | No | minimum visible text length to count as loaded (default 1) | |
| stable_rounds | No | consecutive unchanged polls to call it settled (default 2) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gone | No | wait for the substring to DISAPPEAR instead of appear (e.g. a spinner) | |
| frame | No | ||
| timeout | No | max seconds (default 45) | |
| contains | Yes | ||
| interval | No | poll seconds (default 2) | |
| case_insensitive | No |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
E2LLM gives your AI eyes and hands in a real browser: structured perception (SiFR) plus action.
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEmpowers AI agents to perform web browsing, automation, and scraping tasks with minimal supervision using natural language instructions and Selenium.9Apache 2.0
- AlicenseAqualityDmaintenanceAllows AI agents to control web browser sessions via Selenium WebDriver, enabling web automation tasks like scraping, testing, and form filling through the Model Context Protocol.6324MIT
- AlicenseBqualityCmaintenanceEnables AI assistants to automate web browser interactions through Selenium WebDriver. Supports multi-browser automation, element interaction, navigation, and web testing capabilities.561026MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to automate browser tasks (navigation, clicks, text input) via Selenium through the Model Context Protocol.1GPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/thomfilg/ie-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server