fast-gui
Provides an optional OpenAI-compatible external model planner that returns a single schema-validated browser action proposal; it is disabled by default and cannot execute proposals or bypass browser policy.
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., "@fast-guiOpen https://example.com, wait, and extract any tables on the page."
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.
Fast GUI
Fast GUI is a local STDIO MCP server and Codex plugin for low-latency, structured browser control. It uses Playwright against a dedicated Microsoft Edge profile by default and intentionally exposes no arbitrary JavaScript, shell, cookie, tunneling, or remote browser-control tools.
Current MVP
capabilities,list_targets,close_target,price_radar,external_model_plan,open_url,open_click_verify,extract_tables,observe,act,batch,wait_for,verify, andcapture.Official PriceAI public snapshot lookup with a validated persistent cache; no PriceAI HTML crawl or internal API dependency.
One-round-trip allowlisted GET navigation, local wait, optional compact table extraction, and optional structured observation.
Known-URL calls can auto-select a sole page or create an isolated
new_target, avoiding an initial target-list round trip while preserving existing pages.One-call exact interaction path that can select/create a target, navigate, wait, match one main-document button/link/tab uniquely, click, and prove a required postcondition without returning a full page observation.
DOM-backed element references bound to a target epoch and scope revision.
Local condition waits and short deterministic batches.
State caching and added/removed/updated diffs.
Domain allowlist, sensitive-field redaction, high-risk action blocking, serialized browser action dispatch, and in-memory screenshot handles with TTL.
Cache-preserving CDP document guards for owned pages; the broader Playwright route exists only during the exact-click safety window.
Fast reconciliation: a stable net page change with a wrong postcondition returns bounded, redacted evidence instead of waiting the full deadline. Possible writes stay locked until an explicit observation or fresh navigation.
Explicit owned-target cleanup through
close_target; unresolved targets require an intentional discard flag and CDP-attached user pages are never closed.Dedicated Edge profile or an explicitly configured CDP endpoint.
Lazy Playwright loading, single-flight browser initialization, fail-fast profile ownership, and STDIO EOF cleanup for lower cold-start and fewer stranded browser processes.
Capacity-resilient direct orchestration: the current task calls one fused local tool instead of creating a second model task for clicks.
Selective supporting delegation: larger requests may use Luna-style read-only evidence and Terra-style independent review agents while the current task remains the single default browser owner.
Optional request/dispatch timestamps on fused tools produce one
timelinefrom request start through MCP and browser completion.Cooperative profile handoff: a contender waits briefly, and the current task releases an empty dedicated browser after an idle grace period.
Adaptive routing keeps an already-bound signed-in session or one hot native click on the native Browser surface.
Optional OpenAI-compatible external model planner. It is disabled by default, returns one schema-validated proposal, and cannot execute the proposal or bypass browser policy.
Windows UIA, trusted approval UI, Lark API writes, OCR, and vision providers are deliberately not claimed by this browser MVP.
Related MCP server: Real Browser MCP
Build and test
npm ci
npm test
npm run benchmark
npm run benchmark:e2eThe integration tests and benchmark use a local synthetic page and headless Edge. They do not reuse personal browser data or move the physical mouse.
See BENCHMARK.md for the measured local baseline and its limits.
Fast paths
Model lane: the visible task calls the known Fast GUI MCP method directly for one fused action. It does not create a Luna/Sol worker solely for a click, so a second model queue cannot add latency or return a capacity error.
Supporting agents: when a larger request has at least two independent bounded workstreams, Codex may proactively delegate read-only evidence or independent review. Supporting agents do not call Fast GUI; one selected agent owns the entire browser action sequence.
Browser fallback: if Fast GUI's dedicated browser definitely fails before any click dispatch, the current task may make one exact attempt through the available Browser skill.
PROFILE_IN_USE, unknown outcomes, or any possible dispatch never switch adapters.External planner:
external_model_planis an opt-in compatibility interface, not part of the normal direct path. It returns a proposal only; Codex must apply the same authorization and Fast GUI success gates before any separate browser call.Accuracy gate: a read needs
ok:truewith no material ambiguity/truncation/warning. An exact click needsverified:true,certainty:"definite_success", andmatched_count:1. Any anomaly leaves the fast lane for Sol analysis;OUTCOME_UNKNOWNpermits observation/reconciliation, never a repeated possible write.Handoff: include the goal, last structured result, target/revisions, reconciliation state, and whether dispatch occurred. Stop with that evidence instead of starting another model task merely to click.
PriceAI: call
price_radarwith an exact slug, thenopen_urldirectly to the chosen offer and verify the merchant page. The public snapshot is normally refreshed about every five minutes and must not be treated as final checkout truth.Known URL reads: call
open_urlwithwait,extract_tables, and/orobservein one request. Usenew_target: trueto preserve existing pages; otherwise omittingtarget_idis allowed only with one open Fast GUI page.Large comparison pages: use
open_url.extract_tablesorextract_tableswith a narrow query. This returns matching rows and links without serializing the full page.Known one-click tasks: use
open_click_verifyonly when the user has authorized the exact role/name and a postcondition that is initially false is known. It replaces the usuallist_targets+open_url+observe+act(wait)model round trips, scans the main document for duplicates, and sharestimeout_msacross queueing and browser phases. It also acceptsnew_target: true. Cold browser startup and blocked-navigation recovery can add wall time.Target cleanup: call
close_targetfor plugin-owned pages that are no longer needed. Observe anOUTCOME_UNKNOWNtarget first, or explicitly usediscard_reconciliationwhen closing is itself the intended reconciliation.Visual preview: leave the headed browser on the requested page. Call
captureonly for an explicit screenshot request, canvas content, ambiguous structure, or material visual verification.
Best-fit scenarios
PriceAI Top 5 lookup and final merchant-page verification.
Large comparison tables where only a few rows or links are relevant.
Repeated deterministic DOM work with exact accessible names.
A known one-click flow that must prove a newly satisfied URL or text condition.
Read/act/verify flows where one fused call removes at least two model/tool boundaries.
Prefer native Browser for an already-connected authenticated session or one exact action that fits one hot native call. Prefer native Lark skills for Feishu whiteboards. Fast GUI deliberately stops on vague/duplicate controls, forms and payments, visual-only canvas state, risky writes, popups, downloads, unsupported iframes, and unknown outcomes.
Configuration
All configuration is via environment variables. Important defaults:
Variable | Default | Meaning |
|
| Playwright browser channel. |
|
| Use a visible dedicated browser for normal plugin use. |
|
| Background-load Playwright to reduce the first browser action; disabling it saves idle memory. |
|
| Briefly wait for another task to release the dedicated profile before returning |
|
| Release an empty owned browser/profile after this grace period; |
| Local app-data Fast GUI profile | Dedicated persistent browser profile. |
| empty | Connect to an explicitly enabled CDP endpoint instead of launching a profile. |
|
| Exact hosts or suffixes allowed for browser observation and action. |
|
| Maximum interactive nodes returned by one observation. |
|
| In-memory screenshot lifetime. |
| Local app-data Fast GUI cache | Validated cache of the public PriceAI snapshot. |
|
| Set to |
| empty | API base ending before |
| empty | Provider model identifier. |
| empty | Bearer key; required for non-loopback endpoints and never returned by tools. |
|
| External planning timeout, clamped to 1–60 seconds. |
|
| Explicit opt-in before a caller may send a bounded page summary. |
price_radar, open_url, and open_click_verify accept an optional trace object for explicit latency tests. Supply a trace_id plus any known request, parent-dispatch, and worker-receipt Unix epoch milliseconds. The structured result returns a timeline; ordinary calls should omit it.
Domain suffix matching is boundary-aware: allowing feishu.cn permits www.feishu.cn, not evilfeishu.cn.
Safety boundary
High-risk actions are returned as
CONFIRMATION_REQUIREDand are not executed because the MVP has no trusted human approval channel yet.Recognizable form submitters, activation keys on risky controls, Enter-key submission, downloads, declared non-self window targets, unsafe navigation, and sensitive controls are blocked pending trusted confirmation. In the dedicated profile, Service Workers are disabled and
open_click_verifyaborts non-GET/HEAD HTTP requests during preflight and the immediate click-verification window. It is disabled for CDP attach. The tool is intentionally non-read-only and non-idempotent because WebSocket traffic, delayed scripts, local state, and GET endpoints cannot be proven side-effect-free from DOM labels alone.Compact error samples are deduplicated and capped at eight entries with total/truncation metadata; popup counts remain explicit.
If a dispatched action cannot be proved, the result is
OUTCOME_UNKNOWNwith bounded redacted evidence; the original page and any popup stay write-locked until reconciled. Never repeat the whole flow automatically.Dedicated pages continuously enforce the document allowlist through CDP Fetch without disabling HTTP cache. A short context route protects every non-navigation action window and a popup's initial request. Existing pages are isolated rather than closed; CDP-attached pages are never closed. Outside tool actions, a newly created popup's first request cannot be claimed protected until Playwright exposes that page.
One process owns the dedicated persistent profile at a time through an OS-backed local IPC lease. Competing tasks receive the short
PROFILE_IN_USEerror instead of repeated raw browser-launch logs; Windows releases the lease automatically when its owner exits.Host-level delegation never creates multiple profile owners. Supporting agents remain read-only, and ownership cannot switch after a possible dispatch,
OUTCOME_UNKNOWN, orPROFILE_IN_USE.A timeout after a possible write is reported as
OUTCOME_UNKNOWN; callers must observe and reconcile instead of retrying through another adapter.Screenshot bytes remain in memory and are not written to disk.
External model planning is disabled by default. When enabled, only the caller-supplied task and an explicitly opted-in bounded page summary leave the machine. The returned proposal is schema-validated and never executed by
external_model_plan.The one-attempt Browser fallback remains subject to the Browser skill's browser-selection and interaction rules. It is allowed only after Fast GUI proves that no click was dispatched.
Only PriceAI's public, non-authenticated snapshot data is persisted in the dedicated local cache; credentials, cookies, page HTML, and screenshots are not cached there.
The server writes protocol messages only to stdout; diagnostic logs go to stderr and never include action values or page content.
See SECURITY.md for the threat model and reporting guidance.
Available Tools
14 toolsactPerform one structured browser actionCDestructive
Perform one bounded compare-and-act browser action; risky or sensitive actions are blocked.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | ||
| target_id | Yes | ||
| target_epoch | Yes | ||
| observe_after | No | ||
| scope_revision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate readOnlyHint=false, destructiveHint=true, idempotentHint=false, so the description does not contradict them. It adds useful context that actions are bounded and that risky or sensitive actions are blocked, which gives some behavioral color beyond the structured hints. However, it does not disclose what counts as risky/sensitive or what effects occur when an action is blocked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It packs the core function and a key constraint compactly. Minor deduction for jargon ('compare-and-act') that could be clearer, but overall it is efficiently written.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with nested objects, five parameters, no output schema, and meaningful annotations. The description does not explain the relationship between target_id, target_epoch, and scope_revision, what compare-and-act means in practice, or what the return/observation behavior is (despite the observe_after parameter). The agent would struggle to invoke it correctly based on the description 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%, so the description carries full responsibility for explaining parameters. It mentions none of the five parameters: spec, target_id, target_epoch, scope_revision, or observe_after. The nested spec object with action, wait, value, ref, and timeout_ms is left entirely to field names and enum values. The description adds no semantic weight to the parameter 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 states a specific verb-resource pair: 'Perform one bounded compare-and-act browser action'. It also adds a scoping constraint ('bounded', 'risky or sensitive actions are blocked') that helps distinguish it from general browser automation. However, it does not explicitly contrast it with sibling tools like open_click_verify or batch, and terms like 'compare-and-act' are somewhat jargon-heavy.
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 use this tool versus siblings such as batch, open_url, click_verify, or verify. The phrase 'one bounded' implies it is for a single action, and 'risky or sensitive actions are blocked' hints at limitations, but no explicit conditions, alternatives, or exclusions are provided. This leaves 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.
batchPerform a deterministic browser batchCDestructive
Execute 1-20 actions under one write lease; stop on failure and never retry a possible write.
| Name | Required | Description | Default |
|---|---|---|---|
| actions | Yes | ||
| target_id | Yes | ||
| target_epoch | Yes | ||
| scope_revision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral detail beyond the annotations: it stops on failure, never retries a possible write, and scopes execution to one write lease. This complements the destructiveHint=true and idempotentHint=false annotations instead of merely repeating them. It does not fully explain what a write lease entails, but the added failure/retry semantics are valuable.
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, tightly worded sentence that front-loads the core capability and key constraints. Every clause adds information, with no filler or repetition. It could be more detailed, but as far as conciseness and structure, it is well organized.
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 complex actions schema, four required parameters, and no output schema, the description is too thin. It omits return values, error behavior beyond stopping, lease semantics, and any explanation of target_epoch or scope_revision. This leaves significant gaps for an agent deciding how to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the tool description does not explain target_id, target_epoch, scope_revision, or the structure of actions. The only parameter-related hint is the 1-20 action count, which is far from sufficient for an agent to construct a valid request. The description fails to compensate for the schema's lack of parameter documentation.
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 executes a batch of 1-20 browser actions under a single write lease, with specific failure semantics. This goes beyond the name and title, conveying scope and constraints. However, it does not explicitly distinguish itself from sibling tools like 'act' or 'open_click_verify', though the batching concept 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?
The description implies batching multiple actions together but gives no explicit guidance on when to use this tool versus alternatives like 'act' or 'open_click_verify'. It does not state prerequisites, when not to use it, or how to choose between batch and single-action tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capabilitiesFast GUI capabilitiesCRead-onlyIdempotent
Return adapters, policy, limits, and browser mode.
| Name | Required | Description | Default |
|---|---|---|---|
| trace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the tool returns adapters, policy, limits, and browser mode, which is useful but superficial. It does not disclose whether these values are static, dynamic, or how they might be correlated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler, and the main output ('Return adapters, policy, limits, and browser mode') is front-loaded. It is extremely concise, though this brevity comes at the cost of missing useful detail, which is captured in other dimensions.
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?
There is no output schema, yet the description does not explain the structure or format of the returned policy, limits, adapters, or browser mode. The trace parameter is also left unexplained. For an agent to correctly interpret the output, additional context is needed; the current description is incomplete for a tool with no 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 description coverage is 0% and the description does not mention the 'trace' parameter at all. An agent cannot determine what the trace object is for, when to provide it, or how it affects behavior. With zero schema descriptions and no compensatory explanation, the parameter remains meaningless.
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 the specific verb 'Return' and lists concrete resources: adapters, policy, limits, and browser mode. This distinguishes it from sibling action tools like open_url or close_target, making its role as a read-only capability query clear. The terms 'policy' and 'limits' remain somewhat ambiguous, but the core purpose is understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any context or exclusions. There is no statement about selecting it when an agent needs capability information or avoiding it for target manipulation, so usage must be inferred from the name and title alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
captureCapture an in-memory browser imageCRead-only
Capture the viewport or one element to a short-lived in-memory image handle.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | ||
| target_id | Yes | ||
| return_image | No | ||
| target_epoch | Yes | ||
| scope_revision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a genuinely useful trait—'short-lived in-memory'—explaining that the image handle is transient, but it does not go further (e.g., lifetime, retrieval path).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action verb; no filler or redundancy. It earns its place and is easily parsed.
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 zero parameter descriptions, the single sentence is not enough to call the tool correctly. The agent is left guessing the semantics of the three required integer/epoch fields and the handle's lifecycle.
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 explain target_id, target_epoch, scope_revision, ref, or return_image. The phrases 'viewport or one element' hint at a target selection but do not map to any parameter, leaving five parameters effectively 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?
The description states a specific verb ('Capture'), a specific resource ('the viewport or one element'), and an outcome ('a short-lived in-memory image handle'). It is clear and unambiguous, though it does not explicitly contrast with sibling tools such as observe or verify.
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 capture versus alternatives like observe, verify, or list_targets. It only describes what the tool does, not when to choose it or when to avoid it; no exclusions or alternative tool names appear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_targetClose an owned browser targetADestructive
Close an owned page. Unresolved targets require discard_reconciliation=true; CDP pages are preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | ||
| timeout_ms | No | ||
| discard_reconciliation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive, but the description adds meaningful behavioral detail beyond that: only owned targets are eligible, unresolved targets need a special flag, and CDP pages are preserved. These are concrete, non-obvious behaviors that help an agent use the tool safely.
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 no filler. The core action is front-loaded, and the second sentence packs two important edge cases. 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?
The description covers the necessary behavioral conditions: ownership, unresolved-target handling, and CDP preservation. However, with no output schema and limited parameter detail, timeout semantics and non-owned target behavior are left unspecified. For a simple three-parameter destructive tool, this is still mostly 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 compensate. It explains discard_reconciliation behaviorally ('unresolved targets require...'), but it does not clarify timeout_ms or target_id beyond their names and schema constraints. The most important parameter is addressed, but not all.
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 opens with a specific verb and resource: 'Close an owned page.' It clearly states the action, the scope of what can be closed ('owned'), and distinguishes this tool from siblings like list_targets and open_url without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for using the tool and a conditional usage rule: 'Unresolved targets require discard_reconciliation=true.' It does not explicitly name alternatives or state when not to use it, but closing is a unique action among the siblings, so the guidance is adequate though not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
external_model_planRequest an external model proposalARead-only
Ask an explicitly configured OpenAI-compatible model for one schema-validated Fast GUI proposal. Never executes it.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| page_summary | No | ||
| allowed_tools | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, and the description adds valuable context by explicitly stating the tool never executes and clarifies that it calls an external, pre-configured OpenAI-compatible model. There is no contradiction with the annotations.
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 compact: one sentence plus a short clarifying fragment. It front-loads the core action and keeps every word informative with no repetition of schema or annotation content.
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 core purpose and non-execution behavior are clear, and annotations plus the schema's defaults/enums cover safety and allowed values. However, there is no output schema and the description does not explain what the returned proposal contains or how the three parameters shape it, leaving some ambiguity for a 3-parameter 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 description coverage is 0% and the description mentions none of the three parameters (task, page_summary, allowed_tools). The agent is left to infer what inputs to provide from parameter names alone; the description does not compensate for the schema's lack of descriptions.
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 opens with the explicit verb 'Ask' and names the resource ('explicitly configured OpenAI-compatible model') and the deliverable ('one schema-validated Fast GUI proposal'). The second clause 'Never executes it' sharply distinguishes this from sibling execution tools like act.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this tool is for obtaining a proposal only and explicitly states it never executes, giving an agent a clear context for choosing it over execution-oriented siblings. It does not name alternative tools or list conditions when not to use it, but the non-execution statement provides strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_tablesExtract compact table rowsCRead-onlyIdempotent
Return bounded matching table rows and safe HTTP(S) links without a full snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| max_rows | No | ||
| target_id | Yes | ||
| max_tables | No | ||
| max_columns | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds 'bounded' and 'safe HTTP(S) links' as behavioral details, which is useful context beyond the annotations. However, it doesn't elaborate on what 'safe' means or how bounding is applied, so it doesn't fully leverage the opportunity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loaded with the action verb. It's concise and easy to scan. However, it is almost too terse—it omits critical details, so while the structure is good, the content is insufficient, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters (1 required), no output schema, and no parameter descriptions. The description is far from complete: it doesn't explain return format, pagination, how matching works, what 'safe links' means, or any constraints. An agent would need to guess or look elsewhere for essential 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?
With 0% schema description coverage, the description must compensate by explaining the parameters. It provides no information about what 'query', 'max_rows', 'target_id', 'max_tables', or 'max_columns' mean or how they control behavior. The description is entirely silent on parameter semantics, making it impossible for an agent to know how to set them correctly.
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 clear action ('Return bounded matching table rows and safe HTTP(S) links') and resource (table rows and links), and distinguishes this tool from a full snapshot. However, it doesn't name a specific sibling or explicitly contrast with alternatives like 'capture' or 'observe', so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without a full snapshot' implies a scenario where a lighter extraction is preferred over a complete page capture, but it doesn't explicitly state when to use this tool versus alternatives, nor does it mention any sibling tools. Usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_targetsList browser targetsBRead-onlyIdempotent
List controlled browser pages and reconciliation state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior, so the description does not need to restate safety. It adds the notion of 'reconciliation state,' which is not present in the title or annotations, but it never defines what reconciliation state means or how it is represented in the response. This is a moderate gap for a read-only listing 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 a single concise sentence with a clear subject-verb-object structure and no filler. Every word earns its place, and the most important information ('List controlled browser pages') is front-loaded.
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 parameterless tool with strong annotations, the description is mostly sufficient, but 'reconciliation state' is an unexplained domain-specific term that likely matters to the agent. There is no output schema and no hint about the response format, so the description leaves a gap around what the listing actually contains and why reconciliation state matters.
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 zero parameters, so there is nothing for the description to explain beyond what the schema already conveys. The baseline for 0-parameter tools is 4, and the description does not introduce any parameter-related confusion.
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 clear verb ('List') and a specific resource ('controlled browser pages') plus a distinctive output concept ('reconciliation state'). It is clear enough to separate this from acting tools like act, close_target, or open_url, but it does not explicitly differentiate itself from observation-oriented siblings such as observe or capture.
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 tool versus alternatives like observe, capabilities, or verify. The listing behavior is implied by the verb, but the description never states prerequisites, exclusions, or a preferred scenario such as 'use this before selecting a target to close or interact with.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
observeObserve structured browser stateBRead-onlyIdempotent
Return visible DOM-backed controls with strict refs, or a compact revision diff.
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | ||
| max_nodes | No | ||
| target_id | Yes | ||
| since_revision | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive behavior, so the burden is lower. The description adds useful behavioral context: results are 'visible DOM-backed controls', refs are 'strict', and an optional revision-diff mode exists. It does not explain ref stability or dynamic-page caveats, but it goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words and is front-loaded with the primary return value. However, it may be overly terse given the presence of 4 parameters and a dual-mode behavior. It is concise but sacrifices necessary parameter context.
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 4 undocumented parameters, the description is incomplete. It fails to clarify what 'strict refs' means, how revision diffs are triggered, what max_depth and max_nodes control, and how the return value should be interpreted. The rich annotations help safety but not operational 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 4 undocumented parameters. It does not explain target_id, max_depth, or max_nodes; only 'revision diff' hints at since_revision. This is insufficient for an agent to know how to populate parameters correctly.
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 clear verb ('Return') and specifies the resource: visible DOM-backed controls with strict refs, or a revision diff. The title reinforces the domain. However, the 'or a compact revision diff' clause introduces mode ambiguity and does not explicitly distinguish this from sibling tools like 'capture' or 'verify'.
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 about when to use 'observe' versus alternatives such as 'capture', 'verify', or 'wait_for'. There is no explicit when/when-not language, and the reader must infer from the tool name that it is for inspecting browser state. This is implied usage at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_click_verifyOpen, click, and verify an allowed pageADestructive
GET-open, exactly click one visible button/link/tab, and prove a new URL/text condition. Blocks risky, sensitive, form, popup, and immediate write-network actions; disabled for CDP.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| click | Yes | ||
| ready | No | ||
| trace | No | ||
| expect | Yes | ||
| target_id | No | ||
| new_target | No | ||
| timeout_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation risk is covered. The description adds the blocking and CDP-disabled constraints, which are useful, but doesn't disclose failure behavior, whether new tabs are allowed (though new_target param exists), or how verification is performed. It doesn't contradict annotations and adds moderate context, warranting a 3.
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 no filler. The primary action is front-loaded, and the constraints are stated compactly. Every sentence earns its place; no redundant 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?
Given the complexity (8 params, nested objects, no output schema), the description is far too brief. It doesn't explain the 'ready' condition, how to specify the click target's role and name, how 'expect' works, what 'new_target' does, or the meaning of timeout_ms. An agent would need to infer much from the schema alone, which has no descriptions. This leaves the tool under-documented 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 0%, so the description must explain parameters. It vaguely references click (via 'exactly click one visible button/link/tab') and expect (via 'prove a new URL/text condition'), but doesn't elaborate on the structure of these objects, nor does it mention ready, trace, target_id, new_target, or timeout_ms. For a tool with 8 parameters and nested objects, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise action sequence (open, exactly click one visible button/link/tab, verify a URL/text condition) and distinguishes itself from siblings like open_url (which only opens) and verify (which only verifies). The verbs are specific and the resource is an allowed page, making its purpose unmistakable.
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 what actions it blocks (risky, sensitive, form, popup, immediate write-network) and that it's disabled for CDP, giving clear exclusions. It implies it's for a single combined open-click-verify operation but doesn't name alternative sibling tools or when to prefer them, so it's clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_urlOpen and inspect an allowed URLBRead-onlyIdempotent
GET-open an allowlisted URL, wait locally, and optionally return tables and refs in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| wait | No | ||
| trace | No | ||
| observe | No | ||
| target_id | No | ||
| new_target | No | ||
| timeout_ms | No | ||
| extract_tables | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful behavioral context: the request is a GET, the URL must be allowlisted, waiting happens locally, and the call can return tables and refs. This goes beyond the structured annotations without contradicting them.
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 front-loads the core operation (GET-open allowlisted URL), then lists the auxiliary behaviors (wait, return tables/refs). No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 8 parameters, nested schemas, and no output schema, this description is far too thin. It provides no parameter semantics, no return-value shape, no guidance on wait conditions or extraction limits, and no relationship to sibling tools. An agent would need to inspect the raw JSON schema and infer a lot.
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 and 8 parameters including complex nested objects (wait, observe, extract_tables, trace, target_id), the description does almost nothing to explain parameter meaning. 'Return tables and refs' hints at extract_tables/observe but leaves wait, trace, timeout_ms, new_target, and target_id entirely 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 states a specific action — GET-opening an allowlisted URL — and names concrete capabilities: waiting locally and optionally returning tables and refs. It gives a clear resource and outcome, though it stops short of explicitly differentiating from open_click_verify or other opening 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?
The phrase 'in one call' implies a combined open-wait-extract workflow, giving some sense of when it is appropriate. However, there is no explicit guidance about when to prefer open_url over wait_for, extract_tables, observe, or open_click_verify, nor any exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_radarQuery the PriceAI public snapshotARead-onlyIdempotent
Return cached Top 5 offers from PriceAI's read-only public snapshot feed.
| Name | Required | Description | Default |
|---|---|---|---|
| trace | No | ||
| preset | No | ||
| product | Yes | ||
| max_offers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior; the description adds that the data is cached and comes from a public snapshot feed, implying potential staleness and lack of auth. It slightly oversimplifies the 'Top 5' behavior since max_offers is configurable, but it does not contradict the annotations.
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 filler, and the key facts are front-loaded. Every word contributes to understanding the tool's function and source.
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 rich annotations, the description omits essential calling context: how product values are specified, what preset does, what the returned offers look like, and there is no output schema to fill the gap. An agent would need additional knowledge or experimentation to use this 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?
With 0% schema description coverage, the description must compensate, but it only hints at max_offers via 'Top 5'. It fails to explain the required product parameter, the preset option, or the trace object, leaving an agent without enough meaning to construct a valid call confidently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and names a unique resource: cached Top 5 offers from PriceAI's read-only public snapshot feed. It clearly distinguishes the tool from siblings, none of which mention pricing, caching, or snapshots.
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 prefer this tool over alternatives, nor does it state conditions, prerequisites, or exclusions. An agent cannot tell from the description alone which scenario calls for this tool versus a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verifyVerify browser stateCRead-onlyIdempotent
Verify a URL, text, or element assertion.
| Name | Required | Description | Default |
|---|---|---|---|
| assertion | Yes | ||
| target_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only, idempotent, and non-destructive, so the safety profile is covered. But the description adds no behavioral detail beyond that, such as whether verification polls, waits, or how failures are reported, leaving a significant gap because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no filler. The phrasing 'element assertion' is slightly awkward, but the definition is appropriately compact.
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 schema is structurally rich (three assertion variants) and there is no output schema, so the description should clarify behavior and return semantics. It does neither, and it does not mention the target_id requirement or relationship to sibling verification tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters, but it only summarizes the three assertion categories. It does not explain target_id, or the meaning of fields like operator, state, exact, and ref, which are critical for forming a correct assertion.
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 names a specific action (verify) and the resources involved (URL, text, or element assertion), so an agent can tell what the tool operates on. It does not, however, compare this to sibling tools like open_click_verify or wait_for, which weakens differentiation.
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 use verify versus alternatives such as observe, wait_for, or list_targets. The description gives no context about the intended workflow or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_forWait locally for browser stateCRead-onlyIdempotent
Wait locally for a URL, text, or element condition.
| Name | Required | Description | Default |
|---|---|---|---|
| condition | Yes | ||
| target_id | Yes | ||
| timeout_ms | No | ||
| observe_after | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (read-only, idempotent, non-destructive), lowering the burden. The description adds that the wait is 'local' and scoped to URL/text/element conditions, but it does not disclose blocking duration, timeout outcome, or behavior when the condition is already satisfied.
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 with the operational verb and a compact list of supported condition types. It contains no filler, though the brevity leaves little room for contextual detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The condition schema is complex, but the description only abstracts it into three kinds. Required target_id is unexplained, timeout and observe_after semantics are absent, and there is no failure or timeout behavior described; with no output schema, an agent would have to infer key runtime 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?
Schema description coverage is 0%, so the description must compensate, but it only loosely maps to the condition parameter ('URL, text, or element'). It says nothing about target_id, timeout_ms, or observe_after, leaving key parameters 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 identifies a specific action ('wait') on a resource ('browser state') and enumerates the condition families it supports: URL, text, and element. It does not explicitly contrast with siblings like observe or verify, but the verb and condition list make the core function reasonably distinct.
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 about when to use wait_for versus alternatives such as observe or verify. There is no mention of scenarios like waiting after navigation, before assertions, or when a non-blocking check is preferred; usage is only implied by the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The toolset mostly maps each tool to a distinct capability: navigation, observation, action, verification, capture, and page lifecycle are separated. However, `open_click_verify` and `act` can both be used for clicking, and `open_url`'s optional table/ref returns overlap with `extract_tables`, creating two possible mis-selection points despite helpful descriptions.
Most tools follow an imperative verb + object snake_case pattern (`list_targets`, `close_target`, `open_url`, `extract_tables`, `wait_for`, `verify`). The pattern is weakened by noun-style names (`capabilities`, `price_radar`, `external_model_plan`) and the compound multi-verb `open_click_verify`, so consistency is only moderate.
14 tools is a reasonable scope for a browser/GUI automation server and stays within the comfortable range. The count would be ideal if not for a couple of peripheral tools (`price_radar`, `external_model_plan`) that sit outside the core automation loop.
The core GUI automation lifecycle is well covered: open, observe, act (single and batch), wait/verify, capture, close, list targets, and safety introspection are all present. Minor gaps include the lack of a standalone input/typing tool and no explicit target reconciliation action, but agents can work around these.
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
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
MCP server to assist with JxBrowser development.
Related MCP Servers
- FlicenseCqualityDmaintenanceEnables browser automation, including navigation, form filling, login with CAPTCHA handling, and element manipulation, using a Chrome-based MCP server.364
- AlicenseNot gradedqualityCmaintenanceEnables browser automation over MCP using a real Chrome browser with existing profile, supporting real tabs, downloads, cookies, and RPA workflows.104MIT
- FlicenseNot gradedqualityBmaintenanceStandalone browser automation MCP server supporting both BrowserOS and standard Chrome. Enables 16 MCP tools for browser control including navigation, interaction, and content extraction.27
- AlicenseNot gradedqualityAmaintenanceMCP server for local browser control via Chrome/Edge extension, enabling agents to open isolated tabs, observe pages, take screenshots, and interact with accessible controls using an existing browser profile. It is agent-agnostic, local-only, and supports safe session scoping with origin grants and sensitive-data blocking.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jett666-rx/fast-gui'
If you have feedback or need assistance with the MCP directory API, please join our Discord server