flow-mcp
Drives Google Flow (flow.google.com) in a signed-in Chrome session to generate and edit images, create Veo/Omni videos, upscale media, and interact with Flow's creative agent — using the user's own Flow plan and credits, with credit checks and spend approval before paid generations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@flow-mcpgenerate a photorealistic image of a lighthouse at dusk with a calm sea"
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.
flow-mcp 🎬 — Google Flow MCP server for Claude, Cursor and VS Code
flow-mcp is an open-source MCP server that lets your AI assistant make images and videos with Google Flow. Ask Claude Code, Cursor, VS Code or Claude Desktop in plain words and it generates and edits Nano Banana images, makes Veo 3.1 and Omni videos, upscales to 2K, keeps a character consistent across shots, and works with Flow's creative agent.
Your account, your credits, no catch. flow-mcp drives Flow in a Chrome window signed in to your own Google account, on your own computer. No API key, no server in between, no extra subscription. Images are free, and videos only run within the credit budget you set.
Getting started · Usage · Gallery · Capabilities · Troubleshooting · Security · npm
Install
You need Node.js 22+ and Google Chrome. A free Google account works: it gets 50 Flow credits a day.
npx -y @parthmax/flow-mcp setupA Chrome window opens on Flow; sign in to Google once. setup then offers to connect Claude Code and
install the flow-director skill, and prints the config for Cursor, VS Code and Claude Desktop. Restart
your AI client afterwards.
Or let your assistant do it. Paste this to Claude Code:
Set up the Google Flow MCP server for me: run
npx -y @parthmax/flow-mcp setup --connect. A Chrome window will open; tell me to sign in to Google there. When it is done, tell me to restart you.
Client configs and running from source are in Getting started.
Related MCP server: google-flow-mcp
Quick start
Ask your assistant:
make an image of a lighthouse at dusk
edit my photo C:\photos\me.jpg into a winter scene
make an 8 second video of a paper boat, max 10 creditsA Chrome window shows Flow doing the job; leave it open. Files are saved to ~/.flow-mcp/output. If
something fails, npx -y @parthmax/flow-mcp status names the problem and the fix.
Made with flow-mcp
Everything below was made by an AI assistant through flow-mcp, from one mascot reference. The images were free and the video cost 10 credits. Same character in every shot, thanks to a character sheet and Flow's references.
How it fits together
The MCP server (
flow-mcp serve) runs on your computer and gives your assistant 18 Flow tools: images, videos, upscaling, characters, projects, credits and Flow's agent chat.A Chrome window with its own profile stays signed in to your Google account. flow-mcp drives Flow's own page there, so Flow handles sign-in and verification as it does for you.
Projects keep each piece of work together: Flow's agent remembers it, and local files upload once and are reused.
The flow-director skill plans shots, previews everything as free images, then spends credits once the plan is right.
See How it works for the details.
Credits and safety
Images, edits and 2K upscales are free. For videos, Flow's agent quotes a price first, and flow-mcp
approves only within your max_credits (default 10). It never picks "Always approve" and never retries a
paid generation. An 8 s Veo 3.1 Lite video costs 10 credits on a free account (October 2026).
Alpha, unofficial. Tested on Windows with an English-language Flow account. Automating the Flow website may be against Google's terms, and the local control port can act as your Google account. Read Security and risks first. Not affiliated with Google.
Documentation
Goal | Start here |
Install and connect a client | |
Make images and videos, manage credits | |
Get better results from Veo and Nano Banana | |
Change folders, ports, or Google accounts | |
Fix a problem | |
Understand the risks | |
Learn how it is built | |
Give an AI the project summary |
Development
git clone https://github.com/parthmax2/flow-mcp.git
cd flow-mcp
npm install
npm run build
npm testCoding agents working on this repo: read AGENTS.md.
Community
Use GitHub issues for bugs and feature requests. If Flow's
website changed and something broke, include the status output. Fixes, macOS and Linux testing, and new
tools are welcome as pull requests.
Built and maintained by Saksham Pathak (Parthmax): parthmax.in · LinkedIn · Hugging Face
License
MIT. See LICENSE. Google and Google Flow are trademarks of Google LLC.
Available Tools
18 toolsflow_approveApprove or reject the Flow agent's spend request (may spend credits)A
Answers the agent's pending 'costing N credits?' request. decision 'approve' SPENDS the quoted credits, but only when N <= max_credits; otherwise it rejects and nothing is spent. Never chooses 'Always approve'. Returns the agent's reply and the media it started (videos then render for 1-5 min: fetch them with flow_wait using since/media).
| Name | Required | Description | Default |
|---|---|---|---|
| decision | Yes | ||
| project_id | Yes | ||
| max_credits | Yes | Highest quoted cost to approve; ask the user | |
| include_thinking | No | Also return the agent's reasoning ('Show thinking') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden and does: it discloses that approve SPENDS credits, that rejection spends nothing, the max_credits gate, the 'Never choose Always approve' constraint, and that results include media that renders for 1-5 minutes. This is exactly the behavioral context an agent needs for a spend-affecting 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?
Front-loaded with the triggering condition, then the decision semantics, then the follow-up fetch step. Four dense sentences, no waste 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?
There is no output schema, and the description explains what is returned (agent's reply and started media) plus the render timing and the sibling tool to fetch results with. For a spend-impacting mutation tool, nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description compensates well for decision and max_credits by explaining their interaction (approve spends only when N <= max_credits). It does not describe include_thinking, though the schema itself documents it, so this falls just short of full.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (answer/approve) and resource (the agent's pending 'costing N credits?' request), and makes the approve/reject semantics explicit. An agent can distinguish this from flow_wait, flow_credits and other siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: answer the pending cost request. Explicit when-not: approve only if N <= max_credits, otherwise reject and nothing is spent. Names the follow-up alternative (flow_wait with since/media) and rules out 'Always approve'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_assetsList the media in a Flow projectARead-only
Lists a project's images and videos, newest first: id, title, image/video, uploaded/generated, model, prompt, size, duration and what each generated item was made from. Attach any of them to a request with media_ids instead of uploading files again. duplicateUploads lists repeated uploads of the same file, with the copy to keep.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| include_trashed | No | Also list items in Flow's trash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, yet the description still adds real behavioral detail: ordering ('newest first'), the full set of returned attributes, and how duplicate uploads are grouped with a keep-copy. It does not cover pagination limits, whether trashed items are excluded by default, or auth/sign-in requirements (cf. flow_sign_in sibling).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with the core action and ordering front-loaded; the long field enumeration is justified because no output schema exists. Slight density in the middle clause ('uploaded/generated, model, prompt, size, duration and what each generated item was made from') but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only two parameters, the return-shape enumeration is exactly the burden the description must carry, and it does. Gaps remain around the trashed-item behavior and result-set size, but nothing blocks a correct first call given the required project_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: include_trashed is documented in the schema itself, while project_id carries only format/pattern. The description reinforces that scope is 'a project's' media but never explains project_id's source or what include_trashed does to the results. Adequate baseline, no added meaning.
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?
Opens with a specific verb+resource — 'Lists a project's images and videos' — and enumerates the returned fields (id, title, image/video, model, prompt, size, duration, provenance), which is far more informative than the title alone. It does not explicitly name a sibling it is not (flow_projects, flow_trash), so an agent must infer the boundary from the 'project's media' scoping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear downstream context: reuse listed items via media_ids instead of re-uploading, which tells the agent why it would call this tool. It also flags duplicateUploads aggregation. Missing explicit exclusions — e.g., when to use flow_trash instead, or when to skip this in favor of flow_projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_capabilitiesWhat Google Flow and this server can doARead-only
Lists Flow's features, which tool covers each (or that only the Flow website can), costs and plan limits. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint; the description adds genuinely new behavioral information – that the call is free, and that some features are only available on the Flow website rather than via any tool. That saves an agent from searching for a nonexistent tool. It stops short of describing return shape or size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with no wasted words, front-loaded with the verb and resource, then the payload details and the cost note. Every clause carries 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?
With no parameters, no output schema and a read-only annotation, the description covers what an agent needs: what it returns, that it costs nothing, and that some features have no tool equivalent. A hint about the response format would make it fully 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?
Zero parameters, so there is nothing for the description to compensate for. Baseline applies; no parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('Lists Flow's features') with an explicit account of the content: feature-to-tool mapping, website-only features, costs and plan limits. It reads clearly as a discovery/meta tool, though it doesn't name which siblings it overlaps with (flow_status, flow_credits both touch status/credits territory).
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?
'Free' implies it's safe to call without burning credits, which is implicit guidance, but there is no explicit when-to-use statement or direction to flow_status/flow_credits for narrower questions. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_charactersList, create or change Flow charactersA
Flow's Characters keep a person (or creature) the same across generations: a reference image, a name, notes the Flow agent reads, and a voice. action 'list' (default) returns the project's characters. 'create' makes one from an image already in the project (image_id, e.g. an approved character sheet or keyframe) and sets name, info and voice. 'update' changes name, info or voice of an existing one (character: name or id). 'voices' lists Flow's voices (needs one character in the project). Use characters in generate_video, generate_image or flow_chat with characters: [name]. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| info | No | Personality, look and mannerisms; the Flow agent uses it when the character appears | |
| name | No | ||
| voice | No | A voice name from action 'voices', e.g. 'Aoede' | |
| action | No | ||
| image_id | No | create: the project image to make the character from (flow_assets) | |
| character | No | update: the character's name or id | |
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that 'list' is the default action, that 'create' draws from an existing project image, that 'info' is consumed by the Flow agent, and that calls are free (cost transparency). It does not cover permissions/auth needs, whether 'update' replaces or merges unset fields, or what each action returns.
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?
Front-loaded with the concept so the per-action clauses parse quickly, then one clause per action with no filler. The trailing 'Free' is short and adds genuine decision-relevant 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?
For a 4-action, 7-parameter tool with no annotations and no output schema, the description covers actions, prerequisites, cross-tool usage, and cost. The remaining gap is return-value shape (e.g. what fields a listed character includes), which matters somewhat since no output schema exists.
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 57%, and the description compensates by explaining image_id (a project image from flow_assets), character (name or id, for update), voice (a name obtained from action 'voices'), and how name/info/voice combine on create. Only project_id and the 2000-char limit on info go unmentioned, and both are self-evident or already in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete resource (Flow characters), defines what they are (reference image + name + notes + voice that persist a person across generations), and enumerates every action with its effect. It is clearly distinguishable from siblings like flow_assets or generate_image, which it references rather than overlaps with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is spelled out per action, including prerequisites ('create' needs an image already in the project; 'voices' needs one character in the project) and the downstream path (use in generate_video, generate_image, or flow_chat with characters: [name]). What's missing is an explicit statement of when NOT to use it, e.g. versus managing assets in flow_assets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_chatTalk to the Google Flow agentA
Sends one message to the Flow agent and returns as soon as it has finished replying, with its exact words (messages, reply) so you can decide the next step: answer its questions, refine the request, or handle a spend approval. Sending never spends credits by itself. If the reply has pendingApproval (a quoted credit cost), the agent is waiting: tell the user the cost and use flow_approve. Images are usually made right away (no approval); their ids are in media, download them with flow_wait.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| media_ids | No | Media already in the project to attach (ids from flow_assets) | |
| characters | No | Flow characters of this project to include, by name or id (flow_characters): they keep their look, and their voice in video | |
| project_id | No | Existing project (flow_projects). Use it to keep working on the same piece. | |
| attachments | No | Local image/video paths; uploaded once per project, then reused. Flow asks for rights confirmation (see confirm_rights) | |
| new_session | No | Start a fresh agent chat in the project (media kept, conversation memory reset) | |
| confirm_rights | No | The user confirmed they hold the rights to the attached files; Flow asks this on upload | |
| project_purpose | No | For a new project: one line on what it is for | |
| include_thinking | No | Also return the agent's reasoning ('Show thinking') | |
| new_project_title | No | Instead: create a new project with this title, for a new idea or deliverable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the call blocks until the reply completes, that sending does not spend credits, that a pendingApproval with quoted cost halts progress, and that images are typically produced immediately. It leaves out error/timeout behavior and session-memory implications, which are only partly covered by the new_session parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is dense but front-loaded: the core action and return shape come first, then the approval branch, then the media branch. A couple of clauses run long, but almost every sentence carries actionable 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?
For a 10-parameter tool with no output schema, the description explains the important return keys (messages, reply, media, pendingApproval) and the key branch decisions. It stops short of describing less common outcomes or the effect of new_session on conversation state.
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 90%, so the schema already explains message, media_ids, characters, attachments, confirm_rights, etc. The description adds behavioral meaning for the approval and media-id outcomes rather than new parameter detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource (send one message to the Flow agent, return when the reply completes) and names the returned fields. It is clearly distinguishable from siblings such as flow_approve and flow_wait, which it explicitly references.
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?
Gives explicit routing: if pendingApproval appears, tell the user the cost and call flow_approve; download media via flow_wait; answer questions or refine in a follow-up send. It also tells the agent that sending itself never spends credits, which informs when it is safe to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_creditsGoogle Flow credit balanceARead-only
Reads the account's remaining Flow credits. Free accounts get 50 a day; an 8 s Veo 3.1 Lite video costs 10.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the bar is lower. The description adds genuinely useful domain context — the 50/day free allowance and the 10-credit cost of an 8 s Veo 3.1 Lite video — but says nothing about auth requirements (flow_sign_in sibling) or what the balance response looks like.
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 short sentences with zero waste. The core action is front-loaded, and the supporting cost context follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only balance lookup with no output schema, the description covers what is returned and the scale of the numbers. It could go slightly further by noting whether sign-in is a prerequisite, but nothing critical to invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The pricing details it adds describe values, not parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads the account's remaining Flow credits. It is clearly distinguishable from generation siblings such as generate_video or flow_assets, though it does not explicitly contrast with flow_status or flow_capabilities, which could plausibly overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated — an agent infers it should check credits before spending them, and the cost figure hints at budget checks. No explicit when-to-use or when-not-to-use guidance relative to flow_status or flow_capabilities is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_frameTake a still frame from a videoARead-only
Saves one frame of a video as a PNG: the first, the last (default) or one at a given second. The video is a local file or a project media id (with project_id; downloaded first if needed). Main use: pass the last frame of a shot as start_frame of the next generate_video, so characters and setting carry over between clips. The PNG is uploaded when used, so Flow asks for the rights confirmation then. Free; runs on this machine.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | 'first', 'last' (default) or a time in seconds | |
| video | Yes | Local video path (mp4, mov, webm) or a project video's media id | |
| project_id | No | The project of a media id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past readOnlyHint=true: it discloses the side effect of writing a PNG, that a media id is downloaded first when project_id is given, that the rights confirmation prompt appears only at upload/reuse time, and that the operation costs no credits and runs locally. These are exactly the operational facts an agent needs before calling.
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?
Four dense sentences, each earning its place: what it does, accepted inputs, the primary use case, and the cost/rights caveat. Front-loaded with the core action and no repetition of schema text verbatim.
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 three-parameter tool with full schema coverage and no output schema, the description supplies the output format (PNG), the input-source branching, the downstream consumer, and the credit/auth implications. Nothing an agent needs to invoke it correctly is missing.
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 already 100%, so the baseline is 3; the description adds real meaning by explaining the project_id dependency ('with project_id' is required when video is a media id) and by restating the default. It stops short of clarifying time precision or behavior for out-of-range seconds.
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?
Opens with a specific verb and resource ('Saves one frame of a video as a PNG') and immediately delimits the three selection modes. It is clearly distinct from the generation siblings (generate_video, generate_images) and from asset-management tools like flow_assets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the primary workflow — 'pass the last frame of a shot as start_frame of the next generate_video, so characters and setting carry over' — which routes the agent to this tool and to the sibling it feeds. The default of the 'at' parameter is restated, removing ambiguity about the no-argument case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_projectsList Google Flow projectsARead-only
Lists the account's Flow projects, most recently updated first, with the purpose and upload count this tool recorded for projects it created. Use it to decide whether to continue a project or start a new one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered; the description adds real value with the sort order and the caveat that purpose and upload count exist only for projects this tool created. It does not discuss result-set size or pagination, but with no parameters that risk is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the capability and ordering come first, and the decision guidance follows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description covers what comes back (ordering, purpose, upload count) and when to use it. A quick note on the shape of each entry or result size would close the last gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly does not invent parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (lists) and resource (the account's Flow projects), plus ordering (most recently updated first) and the extra fields returned. No sibling tool lists projects, so it is easily distinguished from flow_status, flow_assets, and the generate_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it to decide whether to continue a project or start a new one" gives a concrete decision context for calling it. It does not name an alternative tool or state when not to use it, so it stops short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_settingsRead or change a Flow project's agent settingsA
Without changes: returns the project's agent settings (default aspect, count and model for images and videos, whether the agent asks before spending credits), the models this account offers, and its standing instructions. With changes: sets them and returns the result. Use it to avoid surprises, e.g. image count 1 instead of the default 2, or to pick a video model. Approval can only be set to 'always' (the credit budget depends on it). instructions replaces all standing instructions (an empty list removes them). Free.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | ||
| video | No | ||
| approval | No | Make the agent ask before spending credits again | |
| project_id | Yes | ||
| instructions | No | Standing instructions the agent follows in every chat of this project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses what the read returns, that changes set and return a result, that approval can only be set to 'always' because the credit budget depends on it, that instructions replaces all standing instructions, and that the operation is free. It omits authentication/permission requirements and whether image/video updates are partial or full replacements.
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 front-loaded around 'Without changes' and 'With changes', then packs return contents, constraints, and side effects into a compact paragraph with no filler. Every sentence supports correct invocation or safe use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must carry most context, and it covers the read output at a high level plus key write constraints. It leaves gaps around auth, exact response shape, and partial-update semantics for nested image/video settings, so it is strong but not fully complete for a mutation tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description must compensate, and it partly does: it explains the approval constraint, replacement semantics for instructions, and gives examples for image count and video model. However, it does not clarify aspect choices, project_id semantics, or whether image/video nested objects are partial updates, leaving important parameter meaning to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns the project's agent settings without changes, or sets them with changes, and enumerates the settings covered. It is clear this is a Flow project settings read/write tool, though it does not explicitly contrast with siblings such as flow_capabilities or flow_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: inspect settings without changes, set them with changes, and use it to avoid surprises such as image count defaults or video model choice. It does not name alternative tools or state when not to use it, so it falls short of explicit when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_sign_inSign in to Google FlowA
Opens the Flow Chrome window (starting it if needed), brings it to the front, opens Flow's Google sign-in and waits until the user has signed in there, then returns the account. Use it when flow_status says 'signed_out' or on first use: first tell the user a Chrome window will open and they should sign in with their Google account. Returns at once if someone is already signed in. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| wait_seconds | No | How long to wait for the sign-in (default 300) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the visible side effect (a Chrome window opens and comes to the front), that the call blocks until user action, the early-return short-circuit, and that it consumes no credits ('Free'). It does not say what happens on timeout or what the failure mode looks like, which keeps it from a 5.
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?
Front-loaded with the core action, then the usage condition, then the user-facing pre-warning. The opening sentence is long and carries several clauses, but every clause (window start, foregrounding, waiting, return value) 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?
A single-parameter, zero-annotation interactive tool with no output schema; the description covers the interaction model, the trigger, the early return, and roughly what comes back ('the account'). Only the timeout/failure behavior and the exact return shape remain unspecified, which is a modest gap.
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 single parameter wait_seconds has 100% schema coverage including bounds and default, so the schema does the work. The description never mentions the wait duration or how the bounded wait interacts with the blocking behavior, adding no meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb chain and resource: opens the Flow Chrome window, opens Google sign-in, waits for the user, returns the account. This is clearly an interactive authentication tool, distinguishable from siblings like flow_status (which only reports state) or flow_approve (which approves some other action).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the trigger condition ('when flow_status says signed_out or on first use') and the alternative path ('returns at once if someone is already signed in'). It also prescribes an agent action before calling: tell the user a Chrome window will open and they should sign in.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_statusGoogle Flow health checkARead-only
Checks that everything works and names the problem if not: state 'ready', or 'browser_down', 'signed_out', 'challenge' (Google wants a verification), 'blocked', or 'ui_changed' (Flow's page changed; lists which controls are missing). Includes the signed-in account, credits and a fix to tell the user. Run it first, and whenever a tool fails unexpectedly. Free; takes about 30 s.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds substantial behavioral context: it is free, takes about 30 seconds, and returns the signed-in account, credits, and a suggested fix. It also explains what each failure state means, which is exactly the transparency needed for a diagnostic 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 compact and front-loaded: it first states what the tool does, then lists the diagnostic states, then gives usage guidance. Every sentence adds useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter health-check tool with no output schema, the description is complete: it explains the possible states, what each means, what additional information is returned, and how long it takes. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to document; the baseline for zero-parameter tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it checks that everything works and names the problem if not. It enumerates the exact diagnostic states (ready, browser_down, signed_out, challenge, blocked, ui_changed), which an agent can use to tell this apart from sibling tools like flow_capabilities.
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?
Gives explicit usage instructions: run it first, and whenever a tool fails unexpectedly. It does not name an alternative diagnostic tool to use instead, but the context is clear enough that an agent knows when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_transcriptRead a Flow agent conversationBRead-only
Returns the whole agent chat of a project (both sides, approvals and whether they are still pending). Free.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| include_thinking | No | Also return the agent's reasoning ('Show thinking') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description usefully adds that both conversation sides, approvals, and pending state are included, and that the call is free (no credit cost). It says nothing about transcript size, truncation, or pagination, which matters for a 'whole chat' return.
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 compact sentence that front-loads the core content description before the secondary details. Slightly compressed phrasing ('both sides', trailing 'Free.') but nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does describe what comes back (full conversation, approvals, pending flags), and the read-only profile is covered by annotations. The main gap is the unexplained required project_id and no note on return format, but overall sufficient for a two-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: include_thinking is documented in the schema, but project_id has no description anywhere. The description never mentions either parameter, so it does not compensate for the undocumented required project_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns the whole agent chat transcript of a project, including both sides and approval states. An agent can distinguish this read-transcript tool from siblings like flow_chat or flow_approve, though the alternatives are never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit 'use when' statement or exclusion against flow_chat/flow_status. The word 'Free' hints at a cost-free read path relative to credit-consuming siblings, implying a usage context, but the agent must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_trashMove Flow media to the trash (two steps)A
Moves project media to Flow's trash, where it can still be restored in Flow. Always two calls: first without confirmation, which only previews the items (title, type, what was made from them) and returns a confirmation code; show that list to the user and get their OK; then call again with the same media_ids and that code. The code only works for exactly the previewed set. To clean up repeated uploads use duplicateUploads from flow_assets.
| Name | Required | Description | Default |
|---|---|---|---|
| media_ids | Yes | ||
| project_id | Yes | ||
| confirmation | No | The code from the preview, after the user agreed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the mandatory preview-then-confirm sequence, that the confirmation code is bound to exactly the previewed set, and that trashed media remains restorable in Flow. It omits permission/auth requirements and any limits on how long items stay recoverable, which keeps it short of a 5.
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?
Effectively front-loaded — the destructive scope and restorability land in the first clause, then the two-call protocol, then the alternative tool. Every sentence adds a distinct operational fact with no filler.
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, and the description helpfully describes what the preview returns (title, type, what was made from them) plus the confirmation code. It doesn't cover failure behavior (e.g. mismatched set or expired code) or what happens to the trash afterward, but for a three-parameter tool it is nearly 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 33%, so the description must compensate, and it does for the critical undocumented parameter: it explains that 'confirmation' is the code returned by the preview and that media_ids must be identical between calls. project_id is left entirely unexplained, which is the main remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Moves project media to Flow's trash') and immediately qualifies the outcome ('where it can still be restored'). It also distinguishes this cleanup path from the sibling route by naming duplicateUploads from flow_assets, so an agent can choose without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use protocol: the first call is preview-only, the second requires the user's OK and the matching code. It also names the alternative tool (duplicateUploads from flow_assets) for the repeated-upload case, so both the main path and the escape hatch are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_upscaleUpscale or download Flow media at a larger sizeA
Downloads a project's media at the chosen size, upscaling it in Flow: images 2K (free on every account) or 4K (paid plans). Without size, lists the sizes Flow offers for that item on this account, including locked ones. Offer the free 2K upscale to the user after new images rather than doing it unasked.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 1k (original), 2k or 4k; omit to list the options | |
| media_id | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose meaningful traits: 2K is free on every account, 4K requires a paid plan, and the listing includes locked sizes. It does not say whether an upscale is reversible, whether it consumes credits, or whether the result is a download URL versus an async job — notable omissions for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with what the tool does and followed by the no-size fallback and one usage caution. Nothing is redundant, though the final sentence reads more as agent-directed policy than definition and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the modes, tier gating, and user-facing etiquette for a three-parameter tool with no annotations and no output schema. The main remaining ambiguity is the return shape — whether the call yields a file, a URL, or an asynchronous upscale job — which matters for a tool whose title mixes 'upscale' and 'download'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate; it adds the plan-gating meaning of '2k' vs '4k' and confirms the omit-to-list behavior. The two remaining parameters are conventional UUIDs (project_id, media_id) whose purpose is unambiguous from their names, so the uncovered portion is low-risk.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Downloads a project's media at the chosen size, upscaling it in Flow') and explicitly covers the dual mode: with size it downloads/upscales, without size it lists available sizes. An agent can distinguish this from flow_assets or generate_image without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional guidance ('Without size, lists the sizes...'), plan-tier context, and an explicit behavioral rule about offering the free 2K upscale to the user after new images rather than doing it unasked. It does not name sibling alternatives, but no comparable sibling exists for this operation, so the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_waitCollect Flow media when it is readyA
Checks on media the agent is making (e.g. a video from generate_video or flow_approve) for up to timeout_seconds, downloads whatever is finished and returns anything the agent said meanwhile. status 'completed' means all of it is downloaded; 'pending' means it is still rendering: tell the user and call again (videos usually take 1-5 minutes); 'failed' means Flow reported the generation as failed (failures has its message): tell the user, suggest checking flow_credits for the refund, and do not keep waiting. Pass media_ids, or since from the earlier result to take all new media. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Epoch seconds; media created after it | |
| media_ids | No | ||
| project_id | Yes | ||
| timeout_seconds | No | How long this call waits (default 90) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses long-polling up to timeout_seconds, that finished media is downloaded as a side effect, that chat messages are returned, the three status values, and that the call is free. It stops short of saying where downloads land or whether repeated calls re-download the same media, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the wait bound, then branches cleanly by status. It is a dense paragraph rather than a list, but nearly every clause carries operational instruction; the trailing 'Free.' is terse and useful rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must explain returns — it does, covering status, the failures message, and that finished media plus interim chat are returned. For a 4-parameter polling tool this is nearly complete; the only omission is the shape/location of downloaded media.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (since and timeout_seconds are documented; media_ids and project_id have no schema descriptions). The description compensates by explaining timeout_seconds as a wait bound and by clarifying the two selection modes — explicit media_ids, or 'since from the earlier result' to take all new media — adding meaning the bare 'created after it' schema text does not. project_id is never explained, leaving one gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Checks on media the agent is making', downloads what is finished) and names the generating siblings (generate_video, flow_approve) as the source. It is clearly a media-collection poller, distinguishable from flow_status or flow_credits.
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?
Gives explicit routing for each outcome: 'completed' means done, 'pending' means tell the user and call again (with a 1-5 minute expectation), 'failed' means stop waiting and suggest flow_credits for the refund. It also tells the agent how to select media (media_ids vs since from the earlier result), so when-to-use and what-to-do-next are fully covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageCreate or edit images with Google FlowA
Asks the Flow agent for images and saves them locally. To edit, attach the image (attachments for local files, media_ids for project media) and describe the change, or in the same project just name the image the agent made. The agent may rewrite the prompt and make several images (default 2 with Nano Banana); say 'one image' to steer it. The result includes what the agent said. Images use no Flow credits. Takes 30-120 s.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | What to create or change | |
| media_ids | No | Media already in the project to attach (ids from flow_assets) | |
| characters | No | Flow characters of this project to include, by name or id (flow_characters): they keep their look, and their voice in video | |
| project_id | No | Existing project (flow_projects). Use it to keep working on the same piece. | |
| attachments | No | Local image/video paths; uploaded once per project, then reused. Flow asks for rights confirmation (see confirm_rights) | |
| new_session | No | Start a fresh agent chat in the project (media kept, conversation memory reset) | |
| confirm_rights | No | The user confirmed they hold the rights to the attached files; Flow asks this on upload | |
| project_purpose | No | For a new project: one line on what it is for | |
| new_project_title | No | Instead: create a new project with this title, for a new idea or deliverable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses that the agent may rewrite the prompt, may generate several images by default, returns what the agent said, uses no Flow credits, and takes 30-120 seconds. It does not cover authentication or rights-confirmation requirements, but the schema handles the latter.
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 front-loaded with the core action, then moves through editing, agent behavior, output, cost, and latency. Every sentence adds operational value with no filler.
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 nine-parameter tool with no output schema and no annotations, it is largely complete: it covers creation, editing, agent nondeterminism, result content, cost, and latency. It could be stronger by mentioning that local paths are returned or by naming which sibling tool handles non-agent image generation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful usage semantics for editing: it explains how attachments and media_ids differ, and that in the same project you can just name the image. It also adds prompt-steering advice for controlling output count, which is not captured by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it asks the Flow agent for images and saves them locally, and it also covers editing existing images. However, it never distinguishes this tool from the sibling generate_images tool, leaving an agent unsure which image-generation path to choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful in-context guidance for editing, such as attaching an image via attachments or media_ids, or naming an existing project image. It does not say when to use this tool instead of generate_images or generate_video, so the usage context is implied but not explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imagesCreate several images at once with Google FlowA
Runs several separate image requests in parallel (up to 3 Flow tabs at a time, each in its own agent session), about 3x faster than one by one. Use it for a set of different images, e.g. one per scene or one per reference frame. Files in attachments are uploaded once for the whole batch. Each job reports its own files or error. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | Yes | ||
| parallel | No | Tabs at once (default 3) | |
| project_id | No | Existing project (flow_projects). Use it to keep working on the same piece. | |
| new_session | No | Start a fresh agent chat in the project (media kept, conversation memory reset) | |
| confirm_rights | No | The user confirmed they hold the rights to the attached files; Flow asks this on upload | |
| project_purpose | No | For a new project: one line on what it is for | |
| new_project_title | No | Instead: create a new project with this title, for a new idea or deliverable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the concurrency ceiling (3 tabs, each its own agent session), the ~3x speedup, that attachments are uploaded once per batch rather than per job, per-job success/failure reporting, and that the operation is free. It doesn't cover auth/sign-in prerequisites or what happens on partial batch failure beyond 'each job reports its own error'.
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?
Five short sentences, front-loaded with what it does and why it's faster, then usage, then upload/error semantics, ending with the cost-relevant 'Free.' Nothing is padded and every sentence carries distinct 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?
For a 7-parameter batch tool with no annotations and no output schema, the description covers speed, concurrency, upload behavior, and per-job results, which is most of what an agent needs. It leaves gaps on prerequisites (sign-in, credits) and the overall batch return shape, which matter given the absent 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 coverage is already 86%, so the baseline is 3, but the description adds real meaning the schema lacks — that attachments are uploaded once for the whole batch and that each job independently reports files or error, which clarifies the jobs array's semantics. The parallel and project_id parameters are not explained beyond what the schema already says.
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: it runs several separate image requests in parallel, capped at 3 Flow tabs, roughly 3x faster than serial generation. It implicitly distinguishes itself from the singular generate_image sibling via the 'several separate image requests' and 'one by one' framing, but never names the alternative, so the contrast 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete when-to-use rule: 'Use it for a set of different images, e.g. one per scene or one per reference frame,' which tells the agent the batch shape it fits. It stops short of stating when NOT to use it — e.g. that a single image should go to generate_image — leaving that selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoStart a video with Google Flow (spends credits)A
Shortcut for flow_chat + flow_approve: asks the agent for a video and approves its quote only when it is at or below max_credits (default 10 = one 8 s Veo 3.1 Lite video on a free account), otherwise rejects. SPENDS FLOW CREDITS: tell the user the expected cost and check flow_credits first; never call it again to retry. Returns as soon as the render has started: 'started' (collect the mp4 with flow_wait, passing media ids or since), 'needs_answer' (the agent asked something: show the user and reply with flow_chat), 'over_budget' (nothing spent) or 'failed' (Flow failed the render right away; failures has its message). Every result includes the agent's messages. A source_video makes it an Omni video-to-video edit (20 credits at 720p, same length as the clip). Inputs given a role (start_frame, end_frame, ingredients, source_video: each a local file or a project media id) are numbered and explained to the agent; prefer them to plain attachments. Veo takes either frames (image-to-video) or ingredients (reference-to-video), not both: given both, the agent asks which to use (needs_answer, nothing spent).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Defaults to the project's video model | |
| prompt | Yes | The video to make: shot size and camera move, subject, action, setting, style and lighting, audio | |
| end_frame | No | Image the video ends on (local path or media id) | |
| media_ids | No | Media already in the project to attach (ids from flow_assets) | |
| characters | No | Flow characters of this project to include, by name or id (flow_characters): they keep their look, and their voice in video | |
| project_id | No | Existing project (flow_projects). Use it to keep working on the same piece. | |
| attachments | No | Other local files, without a stated role; prefer the role fields above. Uploaded once per project | |
| ingredients | No | Character, object, setting or style references to keep the look of (local paths or media ids); plain backgrounds work best | |
| max_credits | No | Highest credit cost to approve (default 10). Above it the request is rejected and nothing is spent. | |
| new_session | No | Start a fresh agent chat in the project (media kept, conversation memory reset) | |
| start_frame | No | Image the video opens on (local path or media id), e.g. the last frame of the previous shot from flow_frame | |
| aspect_ratio | No | ||
| source_video | No | Video to edit or restyle (local path or media id): an Omni video-to-video edit | |
| confirm_rights | No | The user confirmed they hold the rights to the attached files; Flow asks this on upload | |
| project_purpose | No | For a new project: one line on what it is for | |
| new_project_title | No | Instead: create a new project with this title, for a new idea or deliverable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses credit spend, budget gating, the non-retry rule, and enumerates all four return states including which ones spend nothing ('over_budget' → nothing spent). The frames-vs-ingredients conflict path ('needs_answer, nothing spent') is exactly the kind of behavior an agent cannot infer elsewhere.
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?
Dense but nearly every clause carries decision-relevant information, and it is front-loaded with the shortcut framing and the credit warning. It is one long undifferentiated paragraph, though, so the return-state enumeration and the frames/ingredients rule are harder to scan than they should be.
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 16-parameter, no-annotation, no-output-schema mutation tool, the description covers cost, budget, return values, failure handling, follow-up tooling and parameter interaction rules. Nothing an agent needs to call this safely for the first time is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds genuine meaning beyond the 94%-covered schema: source_video is revealed to trigger an Omni video-to-video edit at 20 credits/720p, max_credits default is anchored to 'one 8 s Veo 3.1 Lite video', and role fields are explained as numbered to the agent. It does not touch model, characters, new_session, aspect_ratio or confirm_rights, but those are adequately described in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('asks the agent for a video and approves its quote') and frames itself as a composite shortcut for flow_chat + flow_approve, which immediately distinguishes it from those siblings. The cost implication ('SPENDS FLOW CREDITS') is front-loaded in the second sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes pre-call behavior ('tell the user the expected cost and check flow_credits first'), an exclusions rule ('never call it again to retry'), and a preference between parameters ('prefer them to plain attachments'). It also names the downstream tools to use per outcome (flow_wait, flow_chat), leaving little 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.
18 tool updates
v0.6.0- First observed
flow_approve - First observed
flow_assets - First observed
flow_capabilities - First observed
flow_characters - First observed
flow_chat - First observed
flow_credits - First observed
flow_frame - First observed
flow_projects - First observed
flow_settings - First observed
flow_sign_in - First observed
flow_status - First observed
flow_transcript - First observed
flow_trash - First observed
flow_upscale - First observed
flow_wait - First observed
generate_image - First observed
generate_images - First observed
generate_video
TDQS
Scored across 18 tools
Most tools map to a distinct resource or step (status, sign-in, credits, projects, assets, trash, characters, settings, wait, approve), and descriptions explicitly disambiguate tricky pairs like generate_video vs. flow_chat/flow_approve and generate_image vs. generate_images. The only real friction is the intentional overlap between the video shortcut and the chat+approve workflow, plus the single-vs-batch image pair, which an agent must read carefully to choose correctly.
Almost all tools carry the flow_ namespace prefix, which is predictable, but the pattern is not verb_noun: several are bare nouns (flow_status, flow_credits, flow_projects, flow_settings) while the core generation tools break the namespace entirely (generate_video, generate_image, generate_images). Readable, but the convention is mixed rather than uniform.
18 tools is on the heavy side but each covers a genuinely separate part of driving a browser-based generation service (auth, credits, assets, generation, approval, polling, cleanup). Nothing looks redundant enough to cut, though a few convenience wrappers (flow_frame, flow_capabilities) push it slightly past a tight scope.
The lifecycle is well covered: health check, sign-in, credits, project listing, image/video generation, batch generation, upscaling, asset listing, trash with confirmation, characters, settings, chat/approve/poll and frame extraction. Gaps are minor but real: no project create/rename/delete, no character deletion action, and no direct asset download except through upscale or wait.
Maintenance
Related MCP Connectors
Connect AI agents to your own Chrome with scoped access, approvals, and verified task results.
Google Flow's agent: chat that plans and makes images and videos, approvals, your own media
Image and video AI tools and your own pipelines, run from any AI assistant.
Let your AI agent operate any website through a real, logged-in browser session.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to drive Google Flow through a real Chrome profile to generate images, videos, characters, and scenes without sharing credentials.4194 npm2MIT
- AlicenseAqualityBmaintenanceEnables AI agents to generate Google Flow videos and images and automate Scene Builder clip extensions through a user's own Chrome session.1166 npm6MIT
- AlicenseNot gradedqualityCmaintenanceEnables generating images and videos on Google Flow through browser automation using your Google AI Pro subscription, with image generation free and video consuming Flow credits.83 npm1MIT
- AlicenseNot gradedqualityCmaintenanceEnables generating images and videos in Google Flow through an automated browser session using your Google AI Pro subscription, without API keys or third-party credit fees.83 npm2MIT