Flintrail
Supports driving Arc through the Flintrail browser extension, allowing agents to open tabs, interact with pages, record flows, and replay them without needing a debugging port.
Supports Brave via the Flintrail browser extension, enabling agents to automate tabs, record browser interactions, and replay flows. Default CDP attach mode intentionally avoids personal Brave browsers unless explicitly allowed.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Flintrailrecord this checkout flow, then replay it at full speed"
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.
Why
Browser MCP servers today make the model do everything, every time: read the page, pick one element, click, read the page again. Each click is a tool call, and each tool call is a model turn that costs seconds. Do the same task tomorrow and the agent pays the full price again.
Flintrail treats the browser like a JIT compiler treats code:
Live, the agent drives the page, but batches a whole sequence of actions into one call and gets back a compact snapshot with clickable refs.
Record, the same calls are captured with multi-clue element fingerprints and
{{variables}}.Replay, the flow runs at browser speed with no model between steps. When a site changes, the run stops at the exact failing step and hands the page back so the agent repairs only that part.
API replay, Flintrail sees the site's own fetch/XHR calls and can replay them from inside the page, with the same cookies and session. No rendering, no clicking.
Related MCP server: jev-mcp
Benchmark
Same 5-step task (fill a field, tick a box, change page, click a client-rendered button that calls an API, wait for the result), median of 10 runs, headless Chromium. The numbers are tool-side wall time only. In a real agent every tool call also costs a model turn, so going from 7 calls to 2 saves several more seconds on top.
The hatched bar is the floor: the same clicks as a raw Playwright script, with no MCP and no agent. Any tool that clicks through the UI is bounded by it, which is why the per-call ratios stay modest. Flintrail adds about 50 ms per call on top of that floor, Playwright MCP about 260 ms. The only way under the floor is to stop clicking, which is what API replay does.
Reproduce it: npm run bench (installs nothing global; Playwright MCP is a dependency of bench/ only).
Architecture
Install
git clone https://github.com/Soflutionltd/flintrail.git
cd flintrail && npm install && npm run buildClaude Desktop, Claude Code, Cursor (stdio)
{
"mcpServers": {
"flintrail": {
"command": "node",
"args": ["/absolute/path/to/flintrail/dist/cli.js"]
}
}
}Claude Code: claude mcp add flintrail -- node /absolute/path/to/flintrail/dist/cli.js
Any agent, any machine (HTTP)
node dist/cli.js --http --host 127.0.0.1 --port 8931
# token is generated once in ~/.flintrail/token (or pass --token / FLINTRAIL_TOKEN)Clients connect to http://host:8931/mcp with Authorization: Bearer <token>. Put it behind a tunnel or reverse proxy with TLS if it leaves the machine.
Browser modes
Mode | When | How |
| Your desktop. Keep your logged-in sessions. | Connects over CDP to a dedicated Chrome for Testing. On macOS Flintrail finds it, restarts it with a local debugging port if needed (tabs are restored) and opens its own tabs in the background. |
| Servers, CI, Docker. |
|
| Anyone, any Chromium browser, no debugging port. |
|
Flintrail refuses to attach to a personal browser (Brave, Edge, Opera, or on macOS anything that is not Chrome for Testing) unless FLINTRAIL_ALLOW_ANY_BROWSER=1. Your everyday browser stays yours.
Browser extension
The extension is the easiest way in: no command-line flags, no debugging port, works in Chrome, Edge, Brave, Arc or any Chromium 125+.
Install. Download
flintrail-extension-<version>.zipfrom the latest release, unzip it, openchrome://extensions, enable Developer mode, click Load unpacked and pick the folder. (Chrome Web Store listing in progress.)Run Flintrail in extension mode, for example in Claude Desktop:
{ "mcpServers": { "flintrail": { "command": "npx", "args": ["-y", "flintrail"], "env": { "FLINTRAIL_MODE": "extension" } } } }Connect. Click the Flintrail icon, paste the token from
~/.flintrail/token, click Connect. The extension reconnects by itself afterwards.
How it works: Flintrail starts a relay on 127.0.0.1:8932. The extension connects to it with the token and executes CDP commands with chrome.debugger, one tab at a time. Playwright sees an ordinary CDP browser, so every tool, recording and replay works unchanged. The agent only sees tabs it opened itself or tabs you share with Share with agent. Chrome shows its "started debugging this browser" bar while a tab is driven, by design.
Teach by demonstration
You do not have to explain a task to the agent. Type a flow name in the popup, click Start recording, do the task yourself in the tab, click Stop and save. The extension records clicks, typing, selects, checkboxes and Enter with the same element fingerprints the engine uses, and never records password fields. Then:
fl_flow_set_var("paybyphone-renew", 0, "plate") # turn the typed plate into {{plate}}
fl_run("paybyphone-renew", { "plate": "AB-123-CD" })The flow now runs without you, without the LLM, in milliseconds per step.
Limits in extension mode: browser-level CDP (download folder, permissions, window size) is not available to extensions, so download saves through the browser's normal download flow.
Tools
Tool | What it does |
| Open a URL in a background tab, return a compact snapshot with |
| Run many actions in one call: |
| Re-read a page: interactive elements, headings, text excerpt, same-origin frames. |
| Run JavaScript in the page and return the result. |
| List the site's own API calls with timing, body and a JSON sample. |
| JPEG screenshot when layout matters. |
| Record a flow; |
| Replay a flow with variables, no LLM. |
| Replay a flow for many variable sets in parallel tabs. |
| List flows, inspect one. |
| Turn a recorded value into a |
| Extension connection status. |
| Manage tabs. |
Example
// one call, five actions
{ "tool": "fl_act", "tab": "t1", "actions": [
{ "do": "fill", "ref": "e1", "value": "AA-111-AA", "var": "plate" },
{ "do": "check", "ref": "e3" },
{ "do": "click", "role": "button", "name": "Continue" },
{ "do": "click", "selector": "[data-testid=confirm]" },
{ "do": "wait", "text": "active" }
]}Then fl_run("permit", { "plate": "ZZ-999-ZZ" }) repeats it in under a second.
How replay finds elements again
Each recorded step stores a fingerprint, not a fragile selector: test id, stable id, name attribute, ARIA role and accessible name, placeholder, link target, visible text and a short CSS path. At replay time Flintrail tries them from most to least stable and takes the first that matches exactly one element, waiting only for that element, never for the network to go idle.
Security
No password is ever written to a flow. Password fields are skipped during recording; keep the session logged in instead.
Flows are plain JSON in
~/.flintrail/flows, easy to review and version.The HTTP transport requires a bearer token (constant-time comparison) and binds to
127.0.0.1by default.evalandrequestrun inside the page with the page's own privileges, nothing more.
Configuration
Variable | Default | |
|
|
|
|
| Local port the extension connects to |
|
| Browser to attach to |
|
| Debugging port used when Flintrail starts Chrome for Testing |
| auto | Browser executable |
|
|
|
|
| Flows, profile, token |
|
| Where downloads land |
| generated | HTTP bearer token and extension token |
Develop
npm install
npx playwright-core install chromium # once, for tests
npm test # build + 12 end-to-end tests over real MCP, extension included
npm run pack:extension # flintrail-extension-<version>.zip
npm run bench # benchmark vs Playwright MCPRoadmap
Chrome Web Store and Edge Add-ons listings for the extension.
Automatic promotion of recorded UI steps to API steps when the captured call is replay-safe.
Shared flow library for common sites.
Visual diff on replay failure.
En français
Flintrail est un serveur MCP de navigation pour agents IA. Il pilote un vrai Chrome dédié (jamais votre navigateur personnel), enchaîne plusieurs actions en un seul appel, enregistre une tâche la première fois puis la rejoue seul, sans IA, en quelques centaines de millisecondes, ou en rejouant directement les appels API du site avec votre session. Sur notre banc d'essai, la même tâche prend 2,4 s avec Playwright MCP et 0,11 s avec Flintrail en mode API.
L'extension Chrome rend tout cela accessible à tout le monde : on l'installe, on colle le jeton, et l'agent pilote le navigateur. Mieux, on peut lui apprendre une tâche en la faisant soi-même une fois (bouton Start recording), Flintrail la rejoue ensuite seul. Les mots de passe ne sont jamais enregistrés.
License
MIT © 2026 Soflution Ltd
Available Tools
16 toolsfl_actA
Run SEVERAL actions in one call (fill a whole form, click, submit, wait, extract) and get one fresh snapshot back. Always batch as many actions as possible: one call beats ten.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Max interactive elements listed (default 150). | |
| tab | Yes | ||
| text | No | Characters of page text to include (default 600, 0 for none). | |
| actions | Yes | ||
| snapshot | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses that a fresh snapshot comes back after the batch. However, it says nothing about failure semantics (does one bad action abort the rest?), whether actions execute sequentially, or implicit waits/load behavior — all critical for a multi-step mutating 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 front-loaded sentences, the batching directive immediately after the capability statement, zero filler. The parenthetical action list is dense but earns its space by conveying scope.
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 high-complexity tool (16 action types, ~20 nested fields, no annotations, no output schema), the description covers purpose and batching but leaves the agent to infer tab targeting, snapshot result format, and error behavior from the schema alone.
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 40%, so the description needs to compensate: the enumerated examples map loosely to the 'do' enum values (click, fill, wait). But the top-level 'tab', 'max', 'text', and 'snapshot' parameters and most of the nested action fields (ms, role, exact, label, placeholder, headers) are unexplained in both places.
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?
States a specific verb and resource: run several browser actions in one call, with concrete examples (fill a form, click, submit, wait, extract) and a stated return ('one fresh snapshot'). It clearly differs from siblings like fl_snapshot or fl_extract, though it never names an alternative tool explicitly.
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?
'Always batch as many actions as possible: one call beats ten' gives an unambiguous usage policy and implicitly discourages one-action-per-call churn. It stops short of naming when NOT to batch (e.g., when an intermediate result is needed to decide the next action) or naming the sibling tools to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_closeC
Close a Flintrail tab.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about side effects — whether unsaved state or in-flight recordings are discarded, whether closing is idempotent, or what happens if the tab handle is invalid. For a destructive-feeling 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?
A single front-loaded sentence with no filler or redundancy. It is short, but nothing in it needs trimming.
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 one-parameter mutation tool with no annotations and no output schema, the description should at minimum explain the tab identifier format and the effect of closing. Neither is covered, leaving the agent under-equipped to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter, 'tab', with 0% schema description coverage, and the description does not explain what form the identifier takes (name, handle, or index) or where to obtain it. The only hint is the word 'tab' in the description, which adds almost nothing 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?
"Close a Flintrail tab" states a specific verb (close) and resource (tab), making the operation immediately identifiable and distinct from siblings like fl_open and fl_tabs. It stops short of differentiating scope or noting what closing means relative to those siblings, so it is clear but not maximally so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to close versus leave a tab open, no prerequisite that the tab exist or be open, and no reference to sibling tools such as fl_tabs (to find a tab) or fl_open (its counterpart). An agent must infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_extensionB
Status of the Flintrail browser extension (extension mode).
| 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 carry the behavioral burden, yet it only says this reports extension status. It does not clarify whether the call is read-only, whether the extension must be installed or connected, or what happens when extension mode is unavailable.
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 with no filler, and the key subject and purpose are front-loaded. It wastes no words, even though it could have been expanded usefully elsewhere.
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 no output schema and no annotations, the description should ideally say what status information is returned or what extension mode means for invocation. It leaves the agent to discover the actual response by calling 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 tool has zero parameters, so there are no parameter semantics to explain. The empty input schema is consistent with a simple status-checking tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource, the Flintrail browser extension, and a specific concern, its status, so an agent can distinguish it from action-oriented siblings like fl_open or fl_act. It does not explicitly contrast with any sibling, but the status-checking purpose is clear enough to classify the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(extension mode)' weakly implies a context, but there is no explicit guidance on when to call this tool instead of alternatives such as fl_tabs or fl_snapshot. It does not state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_extractB
Run JavaScript in the page and return the result. Fastest way to pull tables, lists or links.
| Name | Required | Description | Default |
|---|---|---|---|
| js | Yes | Function body with return, e.g. return [...document.querySelectorAll("tr")].map(r => r.innerText) | |
| tab | Yes |
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 of behavioral disclosure. It says the tool runs JavaScript and returns a result, but it does not disclose that arbitrary JS execution may mutate the page, access sensitive data, require specific permissions, or need serializable return values. This leaves significant safety and side-effect information unstated.
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 and front-loads the core action before adding a concrete use case. There is no filler, and both sentences contribute useful information for an agent deciding whether to call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a JavaScript-execution tool with no annotations and no output schema, the description is incomplete. It does not explain the expected return format, how results are serialized, what 'tab' means, or the security and side-effect implications of running arbitrary code in a page. These gaps are material for correct and safe 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 50%: the 'js' parameter has a description with an example, but 'tab' has no schema description. The tool description does not clarify what 'tab' refers to or how it should be supplied, and it adds little meaning to 'js' beyond the extraction examples already implied by the schema. With half the parameters undocumented, the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Run JavaScript in the page and return the result.' It also gives a concrete extraction use case ('pull tables, lists or links'), so the tool’s purpose is clear. However, it does not explicitly differentiate itself from siblings like fl_run, fl_snapshot, or fl_act, which could also retrieve or interact with page content.
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 'Fastest way to pull tables, lists or links' implies when to use the tool for data extraction, but there is no explicit guidance on when not to use it, prerequisites, or named alternatives. The agent can infer the extraction use case but must decide on its own how this compares to fl_snapshot or fl_network.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_flowB
Show a flow with all its steps and element fingerprints.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Show' implies a read-only retrieval operation and it discloses that steps and fingerprints are returned, but it does not mention permissions, error behavior, or formatting/pagination details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant or filler content. Every phrase contributes to stating the action and returned scope.
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 one-parameter lookup tool, it conveys the core action and output content, but it leaves gaps around parameter meaning and when to choose this over fl_flows. With no annotations or output schema, a bit more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented 'name' parameter. It does not explicitly state that 'name' identifies the flow, nor does it describe the expected format 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 uses a specific verb ('Show') and resource ('a flow'), and clarifies the returned content with 'all its steps and element fingerprints.' It implicitly distinguishes from the list-oriented sibling fl_flows by using singular 'a flow,' but does not explicitly name 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?
There is no explicit guidance on when to use this tool versus alternatives such as fl_flows or other flow-related siblings. The intended use is only implied by 'Show a flow,' with no conditions or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_flowsB
List recorded flows with their variables and last timing.
| 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 behavioral burden. It reveals part of the return shape (variables and last timing) but says nothing about whether the call is read-only, how many flows may be returned, ordering, or truncation limits — all relevant since recorded flows can accumulate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded clause with no filler; the resource and the returned fields are stated immediately. Brevity here is close to under-specification, but nothing wasteful is included.
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 zero-parameter list tool with no output schema, the description is minimal but workable — the agent knows what is listed and roughly what comes back. It omits any note on absence of side effects or result volume, which are the remaining gaps an agent would want covered.
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 declares zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No misleading parameter language is present.
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?
States a specific verb and resource ("List recorded flows") plus the payload each entry carries ("variables and last timing"). It is distinguishable from siblings like fl_flow or fl_run, though it never names them explicitly to draw the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when this should be used instead of fl_flow (execute a flow), fl_record_start/stop, or fl_extract. The listing verb hints at a discovery role, but the agent must infer that on its own, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_flow_set_varC
Turn the literal value of one step into a variable {{var}}, e.g. after recording by demonstration.
| Name | Required | Description | Default |
|---|---|---|---|
| var | Yes | ||
| name | Yes | ||
| step | Yes | Step index, as shown by fl_flow (0-based). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it falls well short. It does not say whether this mutates and persists the flow, what happens when the step's value is not a literal, whether the change is reversible, or what errors occur for a bad step index.
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 front-loaded sentence with the key transformation stated first and the example after. Nothing is wasted, though the terseness leaves little room for the context that is missing elsewhere.
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 mutation tool with three required parameters, no annotations, no output schema and an unexplained required parameter, one sentence is not enough. An agent cannot tell whether the flow must be loaded first, what state the flow ends up in, or how to confirm success.
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 33%: only 'step' is documented, and that documentation lives in the schema, not the description. The description does clarify that 'var' becomes the {{var}} template, but the required 'name' parameter (presumably the flow identifier) is never mentioned or explained anywhere.
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 verb and resource are concrete: convert a step's literal value into a {{var}} placeholder, illustrated with the recording-by-demonstration scenario. It is clearly distinct from fl_run, fl_record_start and fl_flow, though it does not explicitly contrast itself with them.
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?
"e.g. after recording by demonstration" gives one concrete situation in which to reach for this tool. There is no guidance on prerequisites (must the flow be open or stopped?), on when not to use it, or on alternatives such as editing the flow directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_networkB
List the API calls (fetch/XHR) the site made, with method, status, timing, body and a JSON sample. Use it to replace UI clicks with a direct {do:"request"} step: the fastest possible replay.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No | Substring the URL must contain. |
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 implies a read operation but never says whether calls must be captured live, whether results persist across sessions, how pagination/limit behaves, or whether reading bodies has cost. For a capture-dependent tool with zero annotation coverage, this is a real 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?
Two tight sentences, front-loaded with the resource and its returned fields, then the practical use. The jargon ({do:"request"} step) is dense but each sentence 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 no output schema, the description usefully names the returned fields, which is the main thing an agent needs. But it omits the capture prerequisite, the meaning of limit, and how results relate to an in-progress recording, leaving meaningful gaps for a network-inspection 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 only 50% — filter is documented in the schema, limit is not — and the description mentions neither parameter. It neither explains the default/behavior of limit nor clarifies that filter matches the URL substring, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list the fetch/XHR API calls the site made) and enumerates what comes back: method, status, timing, body, JSON sample. That is far more informative than the sibling names fl_act/fl_extract/fl_snapshot, though it never explicitly contrasts itself with them.
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?
It does give a usage scenario — replacing UI clicks with a direct {do:"request"} replay step — but that phrasing assumes the agent already knows the flow/replay authoring model. There is no explicit statement of when not to use it, nor of prerequisites such as whether a recording session must exist first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_openA
Open a URL in a background tab of the dedicated browser (logged-in sessions kept). Returns a compact snapshot whose [eN] refs can be used directly in fl_act.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Max interactive elements listed (default 150). | |
| url | Yes | ||
| text | No | Characters of page text to include (default 600, 0 for none). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses background-tab opening, retained logged-in sessions, and the snapshot return with [eN] refs, but omits tab lifecycle, cleanup behavior, failure modes, and 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?
The description is two sentences with no wasted words. The operational context is front-loaded, and the return-value note follows immediately.
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 no output schema, the description takes care to explain that a compact snapshot with usable [eN] refs is returned. It is complete enough to call and chain into fl_act, though it could say more about tab persistence and error behavior.
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 moderate at 67%, and the schema itself describes the max and text parameters. The description adds context about the returned snapshot but does not add meaning beyond the schema for the parameters, so a 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 uses a specific verb and resource: opening a URL in a background tab of the dedicated browser. It also distinguishes the result as a compact snapshot with [eN] refs, making its role clear relative to action and snapshot siblings.
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?
It implies usage for session-aware navigation by noting that logged-in sessions are kept and the tab is opened in the background. However, it does not explicitly say when to use this versus fl_tabs, fl_snapshot, or fl_act, nor does it state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_record_startA
Start recording a flow. Every fl_open / fl_act after this is captured with robust element fingerprints so fl_run can replay it without an LLM. repairFrom keeps steps before that index and replaces the rest.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| startUrl | No | ||
| repairFrom | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does well: it discloses the fingerprint mechanism, that replay requires no LLM, and the exact keep/replace semantics of repairFrom. It omits the state-machine behavior (error vs. restart when already recording) and any return payload, which matters for a stateful 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?
Three short sentences, no waste, with the core action front-loaded and the parameter caveat last. Every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The lifecycle context (record here, replay with fl_run) is well covered, but with no annotations, no output schema, and three of four parameters undocumented, the definition is not fully sufficient for confident invocation. It is adequate on the conceptual side and thin on the mechanical side.
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 compensate for all four parameters, but it only explains repairFrom. The required `name`, plus `startUrl` and `description`, get no meaning at all — an agent cannot tell whether name is a label or an identifier, or how startUrl relates to the first fl_open.
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?
"Start recording a flow" gives a specific verb and resource, and the follow-up sentences scope exactly what the recording captures (fl_open/fl_act calls) and what consumes it (fl_run). This clearly separates it from fl_record_stop and fl_run among the siblings.
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?
It tells the agent when to call it (before issuing fl_open/fl_act calls that should be captured) and names the downstream tool, fl_run. It stops short of stating exclusions, such as what to do if a recording is already in progress or which operations are not captured.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_record_stopA
Stop recording and save the flow (save=false to discard).
| Name | Required | Description | Default |
|---|---|---|---|
| save | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses that save=false discards the flow and implies default saving, but it does not mention what happens if no recording is active, error behavior, or auth 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?
One sentence, front-loaded with the main action, and every phrase adds useful information. There is no wasted text.
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 one-parameter stop-recording tool with no output schema or annotations, the description covers the essential action and the discard option. It could mention return behavior or state requirements, but it is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the single parameter. It does so effectively by clarifying that save=false discards the flow, which adds meaning beyond the bare boolean name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Stop recording and save the flow.' It clearly contrasts with the recording-start sibling, though it does not explicitly name fl_record_start.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Stop recording' and the save=false discard option, but the description gives no explicit when-to-use guidance, prerequisites, or alternatives beyond the sibling tool family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_runB
Replay a recorded flow at browser speed, no LLM. On failure (site changed) it stops at the failing step and returns the page so the flow can be repaired.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | ||
| name | Yes | ||
| vars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose two valuable traits — deterministic no-LLM replay and the failure contract (stops at the failing step and returns the page). It does not disclose whether playback mutates page state, whether it requires an existing browser session/tab, or what happens on success.
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 tight sentences with zero filler; the core capability is front-loaded ahead of the failure-behavior detail. Every clause adds information an agent could act on.
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 3-parameter tool with a nested object, no annotations, and no output schema, the description is thin: it leaves vars/tab semantics and the success behavior unexplained. The failure-path disclosure is good, but an agent still can't confidently construct a call from this alone.
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% for three parameters including a nested string-map 'vars', and the description explains none of them. 'Flow' context hints that 'name' identifies the recorded flow, but the roles of 'tab' and 'vars' (presumably variable substitution) are completely undocumented.
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?
States a specific verb and resource ('Replay a recorded flow') and adds a meaningful differentiator ('at browser speed, no LLM') that separates deterministic playback from agentic tools like fl_act. It doesn't explicitly name siblings such as fl_run_many or fl_record_start, so the boundary with the batch/recording variants is left 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?
The description implies a recorded flow must exist first and hints at a repair loop when playback fails, but it never states when to choose fl_run over fl_run_many or fl_record_start/fl_record_stop, nor any prerequisite like an open tab. No explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_run_manyB
Replay the same flow for many variable sets in parallel, each in its own background tab.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| runs | Yes | ||
| keepTabs | No | ||
| concurrency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does mention parallel execution and background tabs, but omits critical behavior such as tab lifecycle, error handling, concurrency defaults, authentication needs, and what happens when runs fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately concise, though its brevity contributes to the broader under-specification of behavior and 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?
For a four-parameter parallel browser-automation tool with no annotations and no output schema, the description is incomplete. It explains the core action but leaves out operational details an agent would need to invoke it correctly, such as concurrency defaults, tab cleanup, and failure behavior.
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 the four parameters. It only hints at their meaning through phrases like 'variable sets,' 'same flow,' 'parallel,' and 'background tab,' without defining name, runs, keepTabs, concurrency, their types, defaults, or 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 uses a specific verb and resource ('Replay the same flow') and clearly scopes it to many variable sets in parallel, each in its own background tab. This distinguishes it from the single-run sibling fl_run without needing to open either schema.
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 many variable sets in parallel' implies when this tool is appropriate, but it does not explicitly name alternatives such as fl_run for single executions or state when not to use it. Usage guidance is present but inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_screenshotB
Screenshot of a tab. Only when the visual layout matters: snapshots are much cheaper.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | Yes | ||
| full | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and only discloses a cost tradeoff. It never says what the call returns (image payload, base64, path), whether it waits for the page to render, or whether it captures viewport vs. full page, which is critical for a screenshot 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 very short sentences with the core action front-loaded and the cost caveat second. Efficient, though 'snapshots are much cheaper' is telegraphic enough to require inference.
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?
No annotations, no output schema, and 0% parameter description coverage. For a tool whose entire value is a visual artifact, omitting the return format and the meaning of 'full' leaves the agent under-informed about what it will receive.
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% for two parameters. 'Screenshot of a tab' loosely implies the required 'tab' argument, but the 'full' boolean is never explained, so the description does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Screenshot of a tab') and explicitly contrasts with the sibling fl_snapshot on cost. An agent can tell what it produces and why it differs from the snapshot tool, though what a 'tab' handle is remains 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?
'Only when the visual layout matters' gives a clear selection condition, and 'snapshots are much cheaper' names the preferred alternative. It stops short of stating when-not beyond that single tradeoff, but the routing signal is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_snapshotC
Re-read a tab: interactive elements with refs, headings and the start of the text.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Max interactive elements listed (default 150). | |
| tab | Yes | ||
| text | No | Characters of page text to include (default 600, 0 for none). |
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 never states that this is a read-only operation, how refs are scoped/stable, whether refs are the handles fl_act expects, or what the cost/size of a snapshot is. It lists return contents but not 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?
A single short sentence, front-loaded and free of padding. It is efficient rather than padded, though the terseness leaves key facts unstated rather than the phrasing being wasteful.
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 no annotations, no output schema, and an undocumented required parameter, the description should compensate more: the output is only loosely sketched (no shape, no ref format) and the link from refs to fl_act is left implicit. An agent would have to guess at the calling contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (max and text are documented, the required 'tab' is not). The description adds nothing about any parameter, and in particular does not say where the 'tab' identifier comes from (presumably fl_tabs) or how max/text trade off against snapshot size.
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?
It does name the deliverable — interactive elements with refs, headings, and the start of the page text — which is a specific enough resource. But the lead verb 'Re-read a tab' is cryptic about what is actually being captured (a DOM/accessibility snapshot), and it gives no signal distinguishing it from sibling fl_extract or fl_screenshot.
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?
'Re-read' hints that this is called after an action changes the page, but there is no explicit statement of when to use this versus fl_extract (text extraction), fl_screenshot (visual), or fl_tabs (listing tabs). No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fl_tabsB
List tabs opened by Flintrail.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden, yet it says nothing about scope (all sessions vs. current browser context), whether the call is read-only, ordering, or whether it triggers any side effects. The only disclosed behavior is that it returns a list.
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 front-loaded sentence with no filler. Nothing redundant or misplaced for a tool this simple.
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 zero-parameter list tool with no output schema, the description covers the minimum, but since no output schema exists it would help to indicate what the returned tabs look like (IDs, titles, URLs). The gaps are modest rather than blocking.
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 takes zero parameters, so the baseline applies; there is nothing for the description to disambiguate. The description correctly implies no inputs are 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 states a specific verb and resource ('List tabs') scoped to 'opened by Flintrail', which is enough to tell it apart from siblings like fl_open, fl_close, or fl_snapshot that act on tabs rather than enumerate them. It stops short of defining what a 'tab' is in this browser context, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives such as fl_open or fl_close, nor any stated preconditions (e.g., must a session be running). The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v1.1.0- First observed
fl_act - First observed
fl_close - First observed
fl_extension - First observed
fl_extract - First observed
fl_flow - First observed
fl_flow_set_var - First observed
fl_flows - First observed
fl_network - First observed
fl_open - First observed
fl_record_start - First observed
fl_record_stop - First observed
fl_run - First observed
fl_run_many - First observed
fl_screenshot - First observed
fl_snapshot - First observed
fl_tabs
TDQS
Scored across 16 tools
Most tools have clearly distinct purposes (open vs act vs snapshot vs extract vs network vs screenshot). There is minor overlap between fl_snapshot and fl_extract for reading page data, but the descriptions clarify when to use each.
All tools use a consistent fl_ prefix with snake_case names that follow a verb/noun or resource/action pattern. Variations like fl_flow_set_var and fl_run_many remain predictable and readable.
16 tools is slightly above the typical 3-15 sweet spot, but each covers a distinct browser-automation or flow-management capability with little redundancy. The set feels purposeful rather than bloated.
Core lifecycle is covered: opening, acting, snapshotting, extracting, recording, and replaying flows. Minor gaps exist—no explicit flow deletion (beyond save=false), no tab focus/selection, and no dedicated navigation steps—but agents can work around these via close/reopen and fl_act.
Maintenance
Related MCP Connectors
Let your AI agent operate any website through a real, logged-in browser session.
Connect AI agents to your own Chrome with scoped access, approvals, and verified task results.
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
- AlicenseAqualityAmaintenanceEnables AI agents to drive your real, logged-in Chrome browser with existing sessions and cookies, bypassing CAPTCHA and anti-bot measures, with support for multi-session and human-in-the-loop workflows.4059MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to drive a real Chrome browser for autonomous web tasks, using fast typed decisions with calibrated confidence, human-in-the-loop questions, safety gates, and full debug traces.320 npm5MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control a real, authenticated Chrome browser through native tools for navigation, DOM interaction, form filling, scraping, screenshots, and human-in-the-loop checkpoints while minimizing tokens and latency.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to drive the user's real, already-logged-in Chrome browser locally, so they can read and navigate pages, click, type, fill forms, take screenshots, and inspect cookies, tabs, console, and network traffic without headless browsers or remote-debugging ports.1 npmISC