Skip to main content
Glama

๐ŸŽฌ Google Flow MCP Template

Universal, High-Performance Background MCP Server & Browser Bridge
Seamless, silent browser automation for Google Flow (flow.google.com) (Veo 3.1 & Imagen) and modern web applications.
Runs 100% headlessly in the background without popups or manual port wrangling. Ready to use as a GitHub Template.

Use this template MCP License: MIT Tests: Passing


๐Ÿ”’ Privacy, Security & 100% Local Isolation

This template is designed from the ground up for complete individual privacy and security:

  • ๐Ÿ‘ค Your Own Google Account: You authenticate exclusively with your own Google account into your own personal Google Flow creative workspace. No accounts, projects, or generations are ever shared.

  • ๐Ÿ’ป Your Own Local Browser: The MCP server launches the Chromium browser installed directly on your machine (Google Chrome, Brave, Arc, Edge, or Chromium).

  • ๐Ÿ  100% Local Execution (Stdio): The server runs strictly as a local subprocess on your machine using standard input/output (stdio). It does NOT expose any external network ports or web servers to the internet.

  • ๐Ÿ›ก๏ธ Isolated Session Storage: Your login cookies and auth tokens are saved only on your local filesystem (~/.google-flow-mcp/profile). Session directories are strictly ignored by .gitignore and can never be committed or uploaded.

  • ๐Ÿšซ Zero Telemetry: No analytics, no third-party APIs, and no telemetry. All web communication occurs directly between your local browser and Google's official servers (flow.google.com).


Related MCP server: Cloudflare Playwright MCP

โšก Why This Template Exists

Google Flow and other AI creative studios provide cutting-edge video and image models, but lack official REST APIs. Standard automation tools usually:

  1. Pop up disruptive browser windows across your screen.

  2. Require tedious manual Chrome terminal flags (--remote-debugging-port=9222) before every launch.

  3. Are hardcoded to one operating system or one browser.

Google Flow MCP Template is a universal, ready-to-fork solution:

  • ๐Ÿฅท Silent Background Execution: Runs modern Chromium in headless mode (--headless=new). Zero windows popping up on your screen.

  • ๐ŸŒ Cross-Platform & Multi-Browser: Automatically detects Google Chrome, Chromium, Arc, Brave, and Edge on macOS, Linux, and Windows, with optional BROWSER_PATH override.

  • ๐Ÿ”„ Seamless Auto-Connection: Automatically discovers running debugging sessions or self-heals by spawning a quiet headless instance. No manual port setup needed.

  • ๐Ÿ” Persistent Authentication: Saves your Google login cookies & tokens to your local home directory. Authenticate once, and subsequent generations run automatically in the background.

  • ๐Ÿงช Built-in Universal Test Suite: Verify browser discovery, headless lifecycle, DOM inspection, and screenshot capture in 5 seconds with npm test.

  • ๐ŸŽฏ Custom Target URL: Defaults to Google Flow, but can bridge any web application simply by setting FLOW_URL or TARGET_URL.


๐Ÿ› ๏ธ MCP Tools

Tool

Description

flow_status

Checks local background browser connection, current page, and login status.

flow_launch_browser

Switches execution modes (headed: true for 1-time login, or headed: false for background headless).

flow_open_tab

Navigates or focuses https://flow.google.com (or your custom target URL).

flow_inspect_canvas

Returns structured, lightweight JSON of prompt inputs, action buttons, and canvas nodes.

flow_execute_prompt

Injects prompts into Google Flow's generation bar and submits them seamlessly.

flow_click

Precision click handler using CSS selectors, text matches, or aria-labels.

flow_screenshot

Captures background high-res screenshots and saves to your local disk.

flow_eval_js

Runs custom JavaScript in the active page context on your local browser.


๐Ÿš€ Quickstart for Anyone

1. Create Your Own Repo from this Template

Click the green Use this template button on GitHub, then clone your repository:

git clone https://github.com/<your-username>/<your-repo-name>.git
cd <your-repo-name>
npm install

2. Log in to YOUR Google Flow Account (One-Time Setup)

Run the guided local authentication wizard:

npm run setup
  • This opens a browser window on your computer.

  • Sign in to your personal Google Account on flow.google.com.

  • The wizard automatically detects when you are logged in, saves your session locally to ~/.google-flow-mcp/profile, and closes the window.

3. Test Your Local Browser Connection

Run the universal test suite to verify your local browser discovery and background connectivity:

npm test

Outputs:

๐Ÿงช Starting Google Flow MCP Universal Connection Test

  [1] Testing: Browser Executable Discovery... โœ” PASSED
  [2] Testing: Headless Background Lifecycle... โœ” PASSED
  [3] Testing: Target Page Navigation & Auth State... โœ” PASSED
  [4] Testing: Workspace Inspection & Node Parsing... โœ” PASSED
  [5] Testing: Page Context JavaScript Evaluation... โœ” PASSED
  [6] Testing: Silent Background Screenshot Capture... โœ” PASSED
  [7] Testing: Graceful Teardown & Resource Cleanup... โœ” PASSED

๐ŸŽ‰ ALL TESTS PASSED (7/7)

4. Verify Background Status Anytime

npm run status

โš™๏ธ MCP Host Configuration

Add this server to your local Antigravity, Claude Desktop, Cursor, or Windsurf MCP configuration:

{
  "mcpServers": {
    "google-flow": {
      "command": "node",
      "args": [
        "/absolute/path/to/your/cloned/google-flow-mcp/index.js"
      ]
    }
  }
}

๐Ÿ”ง Environment Variables

Copy .env.example to configure custom behavior:

Variable

Description

Default

BROWSER_PATH

Explicit path to a browser binary

Auto-detected

FLOW_DEBUG_PORT

Remote debugging port

9222

FLOW_URL

Target web application URL

https://flow.google.com

FLOW_PROFILE_DIR

Session and cookie persistence directory

~/.google-flow-mcp/profile


๐Ÿ“‚ Project Architecture

google-flow-mcp/
โ”œโ”€โ”€ index.js             # Root executable entry point
โ”œโ”€โ”€ package.json         # Scripts ("start", "setup", "status", "test"), deps
โ”œโ”€โ”€ README.md            # Universal template documentation
โ”œโ”€โ”€ LICENSE              # MIT License
โ”œโ”€โ”€ .gitignore           # Ignores profiles, screenshots, logs, node_modules
โ”œโ”€โ”€ .env.example         # Example configuration options
โ”œโ”€โ”€ test/
โ”‚   โ””โ”€โ”€ test-connection.js # Automated 7-step connection test suite
โ””โ”€โ”€ src/
    โ”œโ”€โ”€ browser.js       # Cross-platform browser discovery & headless lifecycle
    โ”œโ”€โ”€ flow.js          # Google Flow semantic DOM actions & prompt injection
    โ””โ”€โ”€ index.js         # Model Context Protocol stdio server & tool dispatchers

๐Ÿ“„ License

MIT ยฉ csmc387-cloud

Available Tools

8 tools
flow_clickB

Clicks an element in the page by CSS selector, text, or aria-label.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoButton text content
selectorNoCSS selector
ariaLabelNoElement aria-label

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and does not deliver: it says nothing about side effects, whether it waits for the element, what happens on multiple matches or a missing element, or how the three targeting options interact. 'Clicks' is a mutating action, so these omissions matter.

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

Conciseness5/5

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

A single front-loaded sentence naming the action and its three targeting options with zero padding. Nothing could be trimmed without losing information.

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

Completeness3/5

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

No output schema or annotations exist, and the description stops short of covering failure behavior, waiting, or the fact that all three params are optional (what happens if none is supplied). Adequate for identifying the tool but incomplete for invoking it confidently.

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

Parameters3/5

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

Schema description coverage is 100%, so the three parameters are already documented in the schema; the description merely restates selector/text/aria-label. It adds no precedence, mutual-exclusivity, or fallback semantics beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (clicks) and resource (element in the page) plus the three targeting mechanisms, which is enough to distinguish it from the read/navigation/inspection siblings. However it never names or contrasts a sibling, so differentiation is inferred rather than stated.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or prerequisite guidance at all. An agent must guess that this belongs to a browser-automation workflow and when clicking is preferable to flow_eval_js or flow_execute_prompt.

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

flow_eval_jsC

Runs custom JavaScript in the active page context on your local browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYesJavaScript to execute

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the execution context ('active page context on your local browser') but omits critical traits such as whether the script can mutate the page, security implications, return value behavior, error handling, or async support for a tool that executes arbitrary JavaScript.

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

Conciseness5/5

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

A single, front-loaded sentence with no wasted words. It states the action, the resource, and the execution context efficiently.

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

Completeness2/5

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

For a tool that executes arbitrary JavaScript, the description is insufficient: it does not explain what the script returns, whether it runs as an expression or statement, async handling, or error behavior. With no annotations and no output schema, the description should provide more behavioral context to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'script' parameter, which is already documented as 'JavaScript to execute'. The description adds 'custom JavaScript' but no syntax, format, or execution-semantics details beyond what the schema provides. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb ('Runs') and resource ('custom JavaScript in the active page context on your local browser'), clearly distinguishing it from click, screenshot, and status siblings. However, it does not explicitly differentiate itself from flow_execute_prompt or flow_inspect_canvas, which also operate on page context.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like flow_execute_prompt or flow_inspect_canvas, nor any prerequisites or exclusions. The description only states what it does, leaving the agent to infer appropriate usage.

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

flow_execute_promptC

Injects a creative prompt into Google Flow and triggers generation in your personal workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesThe prompt to send to Google Flow
submitNoWhether to submit after typing (default true)
selectorNoOptional CSS selector for prompt input

TDQS

C2.9/5.0
Behavior2/5

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 reveals a mutation side effect ('triggers generation') and hints at an auth scope ('your personal workspace'), but says nothing about required browser/session state, latency of generation, failure modes, or whether the action is reversible.

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

Conciseness5/5

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

A single tight sentence with the action front-loaded and no filler. Nothing could be removed without losing meaning.

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

Completeness2/5

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

For a mutating browser-automation tool with zero annotations and no output schema, the description omits the setup sequence (browser launched, tab opened, logged in) that its sibling tools imply is mandatory. An agent could easily call it in the wrong state.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents prompt, submit, and selector. The description adds no syntax, format, or selector-override guidance beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: injects a prompt into Google Flow and triggers generation. An agent can distinguish it from generic siblings like flow_click or flow_eval_js, though it never explicitly names or contrasts with those alternatives.

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

Usage Guidelines2/5

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

No when-to-use guidance, no preconditions, and no mention of the relationship to sibling setup steps (flow_launch_browser, flow_open_tab). The agent must infer that the browser and a tab must already exist.

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

flow_inspect_canvasB

Inspects active Google Flow workspace: returns prompt inputs, action buttons, and canvas nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the content of the response (prompt inputs, action buttons, canvas nodes), which implies a non-mutating inspection, but it never states that it is read-only, requires an active browser/tab, or has any side effects or failure modes.

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

Conciseness4/5

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

A single front-loaded sentence with a colon-delimited list of returned artifacts; no filler. It is as short as it can be while still naming the resource and output.

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

Completeness3/5

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

With no output schema and no annotations, the description is the only source of truth, and it only sketches the returned fields rather than their structure or how they map to the canvas. For a no-param inspection tool this is adequate but leaves real gaps about prerequisites and result shape.

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

Parameters4/5

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

The tool takes zero parameters, so the schema has nothing to explain and the baseline of 4 applies. The description correctly adds no parameter detail because none exists.

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

Purpose4/5

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

States a specific verb (inspects) and resource (active Google Flow workspace) and even enumerates what it returns. It is clear on its own, but it never distinguishes itself from the closest sibling flow_status, which likely also reports workspace state.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no mention of alternatives among the seven flow_* siblings. An agent must infer that this is the read/inspect step versus flow_click, flow_screenshot, or flow_status.

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

flow_launch_browserC

Controls local browser execution mode (headless background vs headed window for 1-time login).

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoDebugging port (default 9222)
headedNoSet true to open a visible window for authentication. Default false (headless background).
targetUrlNoTarget URL to load on launch

TDQS

C2.8/5.0
Behavior2/5

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 doesn't say whether launching replaces or attaches to an existing browser session, what the default lifecycle is, whether authentication state persists, or what happens if the debug port is already in use.

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

Conciseness4/5

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

A single sentence with no filler, and the mode distinction is front-loaded. It is efficient, though it could have spent the same length on more useful behavioral detail.

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

Completeness2/5

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

For a session-launching operation with no annotations and no output schema, the description omits critical context: side effects on any running browser, return behavior, and cleanup expectations. The schema covers parameters but the description leaves lifecycle behavior unspecified.

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

Parameters3/5

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

Schema description coverage is 100%, so port, headed, and targetUrl are fully documented in the schema. The description's headless/headed contrast duplicates the schema's 'headed' description and adds no new syntax, format, or defaulting detail.

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

Purpose3/5

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

The description states it 'controls local browser execution mode' and clarifies the headless-vs-headed distinction, but the verb 'controls' is vague and it never says it launches the browser (as the name flow_launch_browser implies). An agent must infer that this starts/stops a browser session rather than reconfiguring one.

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

Usage Guidelines3/5

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

It implies when headed mode is needed ('for 1-time login'), which gives some usage context, but it never states when to call this tool versus siblings like flow_open_tab or flow_status, nor any prerequisites or exclusions.

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

flow_open_tabB

Navigates to or focuses Google Flow in your local browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to (default https://flow.google.com)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It hints that the action happens "in your local browser" (a local side effect), but does not say whether an existing tab is reused, whether a window is opened, what happens if the browser isn't running, or whether the call is idempotent.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the action and target are stated immediately.

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

Completeness3/5

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

For a one-parameter, no-output-schema tool the description is minimally sufficient, but it omits ordering/prerequisite context (does a browser need launching first?) and failure behavior, leaving the agent to infer the workflow.

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

Parameters3/5

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

Schema coverage is 100% and the single url parameter is fully documented with its default, so the schema already does the work. The description adds no format or override semantics beyond what the schema states, making the baseline 3 correct.

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

Purpose4/5

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

States a specific verb pair ("navigates to or focuses") and a clear resource ("Google Flow in your local browser"), so an agent knows exactly what the call does. It does not, however, distinguish itself from the closely related sibling flow_launch_browser, which an agent would have to resolve on its own.

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

Usage Guidelines2/5

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

No when-to-use guidance is given: nothing says whether this must be called before flow_execute_prompt, or how it differs from flow_launch_browser. The usage context is only implicitly inferable 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.

flow_screenshotA

Captures a screenshot of the active Google Flow workspace in your local background browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoOptional custom filename

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that the screenshot is of the 'active' workspace and that the browser is a 'local background browser,' which implies no need for a visible browser window. However, it does not state whether the screenshot is saved to disk, returned as data, or how errors (e.g., no active workspace) are handled.

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

Conciseness5/5

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

A single, well-formed sentence that front-loads the action and resource. No wasted words.

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

Completeness3/5

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

For a tool with one optional parameter and no output schema, the description is adequate but incomplete. It omits where the screenshot goes (file path, return value) and what happens if no active workspace exists, which are important for correct invocation in a browser automation context.

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

Parameters3/5

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

Schema description coverage is 100% (the single 'filename' parameter has a description), so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema provides.

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

Purpose5/5

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

States a specific verb (Captures) and resource (screenshot of the active Google Flow workspace) with clear scope. The phrase 'in your local background browser' distinguishes it from a hypothetical cloud or remote screenshot tool and aligns with siblings like flow_launch_browser and flow_status.

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

Usage Guidelines3/5

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

The description implies usage (capturing a screenshot of the active workspace) but gives no explicit when/when-not guidance or alternative tools. A user must infer that this is for visual inspection, perhaps instead of flow_inspect_canvas.

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

flow_statusB

Checks local browser connection, background status, and local Google Flow login state.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoLocal debugging port (defaults to 9222)

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses what is inspected (connection, background, login), which implies a read-only diagnostic with no side effects, but it never states that explicitly nor mentions permissions, rate limits, or return format. Adequate but not rich.

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

Conciseness4/5

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

A single efficient sentence that front-loads the purpose with no filler. It is slightly list-like but every element earns its place.

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

Completeness4/5

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

For a simple read-only status tool with one optional parameter and no output schema, the description covers what is being checked. Nothing critical to invoking it correctly is missing, though a note on when to use it would round it out.

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

Parameters3/5

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

Schema coverage is 100% and the single 'port' parameter is fully documented in the schema with its default. The description adds no additional meaning about the port, so the baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb ('Checks') and enumerates the resources inspected: browser connection, background status, and Google Flow login state. This makes the diagnostic role clear relative to the action-oriented siblings (launch, click, eval, etc.), though it never explicitly differentiates itself from them.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives. The context in which an agent should call this (e.g., before acting, to verify connectivity) is left entirely to inference.

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.

  1. 8 tool updatesv1.1.0
    • First observedflow_click
    • First observedflow_eval_js
    • First observedflow_execute_prompt
    • First observedflow_inspect_canvas
    • First observedflow_launch_browser
    • First observedflow_open_tab
    • First observedflow_screenshot
    • First observedflow_status

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct purposes: status, browser launch mode, tab navigation, canvas inspection, prompt execution, clicking, screenshot, and JS eval. The only mild overlap is flow_launch_browser vs flow_open_tab and the low-level flow_click vs flow_eval_js, but the descriptions distinguish them adequately.

Naming Consistency4/5

All tools use a consistent flow_ prefix with snake_case, and most follow a verb_noun shape (launch_browser, open_tab, inspect_canvas, execute_prompt). flow_status is a minor noun-only deviation, but overall the convention is predictable.

Tool Count5/5

Eight tools is well-scoped for a browser-automation server, covering setup, navigation, inspection, action, and debugging without redundancy. Each tool earns its place.

Completeness4/5

The surface covers the full browser-automation lifecycle: connection/status, launch mode, navigation, inspection, prompt execution, clicking, screenshots, and arbitrary JS. Minor gaps exist (no explicit text/typing, scroll, or wait tools), but flow_eval_js and flow_click let agents work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers