Google Flow Agent MCP Server by useapi.net (third-party)
Server Details
Google Flow's agent: chat that plans and makes images and videos, approvals, your own media
- Status
- Healthy
- Uptime
- 96.4% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 12 tools
Each tool targets a distinct operation: chat send/read/list/rename/delete, approval answering, settings read/update, and asset/character/voice reads plus upload. The only mild overlap is flow_agent_chat vs flow_agent_get_chat, but the descriptions clearly separate 'send a turn' from 'read/poll a chat'. Everything else is cleanly bounded by resource and action.
Names follow a predictable flow_agent_<verb>_<noun> / flow_<verb>_<noun> snake_case pattern throughout (chat, get_chat, list_chats, rename_chat, update_settings, upload_image). Minor deviation: the flow_agent_ vs flow_ prefix split and the two-noun answer_approval, but the verb-first convention stays readable and consistent.
12 tools is well within the sweet spot and each one maps to a real operation in the agent workflow. No redundant or filler tools; the split between chat management, settings, and reference-asset discovery is proportionate.
Chat lifecycle (start, continue, read, list, rename, delete), approval handling, and settings get/update are fully covered, and reference discovery (assets, characters, voices) plus upload supports the main workflow. Gaps are minor but real: no asset/upload deletion despite uploads persisting, and characters/voices are read-only with no create/update path.
Available Tools
12 toolsflow_agent_answer_approvalAnswer a permission requestAInspect
Answer the agent's permission request (pendingApproval of flow_agent_chat / flow_agent_get_chat: what it wants to generate and its cost in Flow credits). approve: generate it (charged at Flow's normal price); always: approve and stop asking in this chat's project from now on (its approval mode becomes auto); reject: do not generate. The answer is the chat's next turn: unless wait is false, it then follows the agent up to ~50 s like flow_agent_chat. POST /agent/chats/{chatId}/approval.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Follow the agent after answering, up to ~50 s (default true). | |
| chatId | Yes | The chatId the request belongs to. | |
| decision | Yes | approve, always or reject. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) by disclosing consequences the annotations cannot express: 'approve' incurs a Flow-credit charge at normal price, and 'always' mutates persistent state by switching the project's approval mode to auto. It also documents the ~50s follow-up follow behavior tied to wait.
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-loads purpose, then decision semantics, then post-answer behavior in a logical order. It is dense and somewhat run-on with nested parentheses, but nearly every clause carries information an agent needs; little is 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?
Covers purpose, decision semantics, persistence side effects, cost, and async follow-up behavior for a 3-param mutation tool with no output schema. Return shape isn't described, but the 'chat's next turn' framing plus the wait note sufficiently signals what comes back.
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 meaningfully enriches the bare enum 'approve, always or reject' by explaining the cost, persistence, and side-effect of each value. The wait parameter is also restated in behavioral terms, adding value over the schema's default note.
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 ('Answer the agent's permission request') and anchors it to concrete context: the pendingApproval surfaced by flow_agent_chat / flow_agent_get_chat, including what the request contains (what it wants to generate and its cost in Flow credits). No sibling tool does this, so an agent can select it unambiguously.
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?
Clearly implies the triggering condition (answering a pending approval) and documents what each decision option does, which is strong contextual guidance. It does not name alternatives or exclusions, but none of the sibling tools compete for this job, 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_agent_chatChat with the Flow agentAInspect
Send a message to Google Flow's agent (it plans, writes storyboards and generates images and videos with Flow's models in the account's Flow project) and get its answer. Without chatId a new chat starts; with chatId the message continues that chat (one turn at a time per chat). Images, videos, voices and characters go in as referenceImage_N / referenceVideo_1 / referenceAudio_N / character_N and are named in the message as @referenceImage_1… (find them with flow_upload_image, flow_list_assets, flow_list_voices and flow_list_characters; references must belong to the chat's account). Sending waits for Google to accept the turn (usually 3-40 s), then follows the agent up to ~50 s in all and returns chatId, turn, status (completed / waiting_approval / failed / running), the agent's text, its tool calls, media (referenceId + url) and a pending permission request. When status is running, call flow_agent_get_chat (chatId, wait: true, after: lastEventId) for the rest. Chatting is free; what the agent generates costs Flow credits (in ask mode it asks first). POST /agent/chats or POST /agent/chats/{chatId}/messages, then GET /agent/chats/{chatId}/stream.
| Name | Required | Description | Default |
|---|---|---|---|
| No | New chats only: the Google Flow account. When omitted, the account of the references, else one picked by the load balancer. | ||
| chatId | No | Continue this chat (from an earlier flow_agent_chat or flow_agent_list_chats). Omit to start a new chat. | |
| message | Yes | What you say to the agent, up to 20000 characters. May name references as @referenceImage_1, @referenceAudio_1, @character_1… | |
| projectId | No | New chats only: a Flow project id for the chat, instead of the account's own agent project. | |
| character_1 | No | A character: a reference id of the chat account's character (flow_list_characters). Name it @character_1 in the message to point the agent at it; unnamed, it is attached only. | |
| character_2 | No | A character: a reference id of the chat account's character (flow_list_characters). Name it @character_2 in the message to point the agent at it; unnamed, it is attached only. | |
| character_3 | No | A character: a reference id of the chat account's character (flow_list_characters). Name it @character_3 in the message to point the agent at it; unnamed, it is attached only. | |
| character_4 | No | A character: a reference id of the chat account's character (flow_list_characters). Name it @character_4 in the message to point the agent at it; unnamed, it is attached only. | |
| character_5 | No | A character: a reference id of the chat account's character (flow_list_characters). Name it @character_5 in the message to point the agent at it; unnamed, it is attached only. | |
| character_6 | No | A character: a reference id of the chat account's character (flow_list_characters). Name it @character_6 in the message to point the agent at it; unnamed, it is attached only. | |
| character_7 | No | A character: a reference id of the chat account's character (flow_list_characters). Name it @character_7 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceAudio_1 | No | A voice: a built-in voice name (Achird, Achernar, Algieba, Algenib, Alnilam, Aoede, Autonoe, Callirrhoe, Charon, Despina, Enceladus, Erinome, Fenrir, Gacrux, Iapetus, Kore, Laomedeia, Leda, Orus, Puck, Pulcherrima, Rasalgethi, Sadachbia, Sadaltager, Schedar, Sulafat, Umbriel, Vindemiatrix, Zephyr, Zubenelgenubi) or a reference id of the chat account's custom voice (flow_list_voices). Name it @referenceAudio_1 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceAudio_2 | No | A voice: a built-in voice name (Achird, Achernar, Algieba, Algenib, Alnilam, Aoede, Autonoe, Callirrhoe, Charon, Despina, Enceladus, Erinome, Fenrir, Gacrux, Iapetus, Kore, Laomedeia, Leda, Orus, Puck, Pulcherrima, Rasalgethi, Sadachbia, Sadaltager, Schedar, Sulafat, Umbriel, Vindemiatrix, Zephyr, Zubenelgenubi) or a reference id of the chat account's custom voice (flow_list_voices). Name it @referenceAudio_2 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceAudio_3 | No | A voice: a built-in voice name (Achird, Achernar, Algieba, Algenib, Alnilam, Aoede, Autonoe, Callirrhoe, Charon, Despina, Enceladus, Erinome, Fenrir, Gacrux, Iapetus, Kore, Laomedeia, Leda, Orus, Puck, Pulcherrima, Rasalgethi, Sadachbia, Sadaltager, Schedar, Sulafat, Umbriel, Vindemiatrix, Zephyr, Zubenelgenubi) or a reference id of the chat account's custom voice (flow_list_voices). Name it @referenceAudio_3 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceAudio_4 | No | A voice: a built-in voice name (Achird, Achernar, Algieba, Algenib, Alnilam, Aoede, Autonoe, Callirrhoe, Charon, Despina, Enceladus, Erinome, Fenrir, Gacrux, Iapetus, Kore, Laomedeia, Leda, Orus, Puck, Pulcherrima, Rasalgethi, Sadachbia, Sadaltager, Schedar, Sulafat, Umbriel, Vindemiatrix, Zephyr, Zubenelgenubi) or a reference id of the chat account's custom voice (flow_list_voices). Name it @referenceAudio_4 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceAudio_5 | No | A voice: a built-in voice name (Achird, Achernar, Algieba, Algenib, Alnilam, Aoede, Autonoe, Callirrhoe, Charon, Despina, Enceladus, Erinome, Fenrir, Gacrux, Iapetus, Kore, Laomedeia, Leda, Orus, Puck, Pulcherrima, Rasalgethi, Sadachbia, Sadaltager, Schedar, Sulafat, Umbriel, Vindemiatrix, Zephyr, Zubenelgenubi) or a reference id of the chat account's custom voice (flow_list_voices). Name it @referenceAudio_5 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceImage_1 | No | An image: a reference id of the chat account's image (from flow_upload_image, flow_list_assets, or the media referenceId of an earlier agent turn). Name it @referenceImage_1 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceImage_2 | No | An image: a reference id of the chat account's image (from flow_upload_image, flow_list_assets, or the media referenceId of an earlier agent turn). Name it @referenceImage_2 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceImage_3 | No | An image: a reference id of the chat account's image (from flow_upload_image, flow_list_assets, or the media referenceId of an earlier agent turn). Name it @referenceImage_3 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceImage_4 | No | An image: a reference id of the chat account's image (from flow_upload_image, flow_list_assets, or the media referenceId of an earlier agent turn). Name it @referenceImage_4 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceImage_5 | No | An image: a reference id of the chat account's image (from flow_upload_image, flow_list_assets, or the media referenceId of an earlier agent turn). Name it @referenceImage_5 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceImage_6 | No | An image: a reference id of the chat account's image (from flow_upload_image, flow_list_assets, or the media referenceId of an earlier agent turn). Name it @referenceImage_6 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceImage_7 | No | An image: a reference id of the chat account's image (from flow_upload_image, flow_list_assets, or the media referenceId of an earlier agent turn). Name it @referenceImage_7 in the message to point the agent at it; unnamed, it is attached only. | |
| referenceVideo_1 | No | A video: a reference id of the chat account's video (from flow_list_assets type video, or the media referenceId of an earlier agent turn). Name it @referenceVideo_1 in the message to point the agent at it; unnamed, it is attached only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the blocking wait profile (3-40 s to accept, up to ~50 s total), the full status enum returned, the cost model (chatting free, generation costs Flow credits, ask mode prompts first), and the cross-account constraint that references must belong to the chat's account. None of this is derivable from readOnlyHint/openWorldHint/idempotentHint.
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-loads purpose, then chat-continuation semantics, then reference naming, then timing/return behavior — a sensible ordering with no filler prose. The trailing raw HTTP route list (POST /agent/chats, GET .../stream) is the one part that does not clearly earn its place for an agent caller.
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 carries the return contract itself (chatId, turn, status, agent text, tool calls, media referenceId+url, pending permission request) and the recovery path via flow_agent_get_chat. Nothing needed to call 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 description coverage is 100%, so the baseline is 3. The description restates the @referenceImage_N / @character_N naming convention and the chatId-new-chat rule that the schema already documents per property, adding little beyond the structured fields.
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 (send a message) and resource (Google Flow's agent), and even scopes what the agent does internally (plans, writes storyboards, generates images/videos). It is clearly distinguishable from siblings like flow_agent_get_chat and flow_agent_list_chats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to omit chatId (start a new chat) vs. supply it (continue, one turn at a time per chat), and names the fallback: when status is running, call flow_agent_get_chat with chatId, wait: true, after: lastEventId. It also points to the lookup tools (flow_upload_image, flow_list_assets, flow_list_voices, flow_list_characters) needed to obtain references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_agent_delete_chatDelete a Flow agent chatADestructiveIdempotentInspect
Delete an agent chat (also from the Flow web app): its history goes, the media it made stay in the project. Not while a turn runs. DELETE /agent/chats/{chatId}.
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | The chatId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint and idempotentHint, but the description goes beyond them by specifying exactly what is destroyed (the chat history) and what survives (generated media stays in the project), plus the timing precondition. This is real behavioral context the agent could not infer from structured fields.
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 clauses front-load the action, destruction semantics, and precondition, ending with the endpoint. Every fragment carries information; nothing is redundant.
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 single-parameter destructive tool with annotations covering the safety profile and no output schema, the description supplies everything needed: what is deleted, what persists, and the precondition. No meaningful gap remains.
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?
Only one parameter (chatId) with 100% schema description coverage, so the schema baseline is 3. The REST path DELETE /agent/chats/{chatId} loosely corroborates chatId usage but adds no syntax, format, or ID-source detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (agent chat), and the parenthetical clarifies it also applies to the Flow web app. It is trivially distinguishable from siblings like flow_agent_chat, flow_agent_get_chat, or flow_agent_list_chats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear when-not condition ('Not while a turn runs'), which prevents a common failure mode. However, it names no alternative tool or fallback for a chat that cannot be deleted, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_agent_get_chatGet a Flow agent chatARead-onlyIdempotentInspect
Read a Flow agent chat. With wait: true, follows the chat live for up to ~50 s and returns its latest turn (or, with after = the lastEventId of an earlier flow_agent_chat / flow_agent_get_chat result, everything after it) — use this to get the rest of a turn still running. Without wait: the chat's title, status (running / waiting_approval / failed / idle), pending permission request, last error and its latest turns (your message, the agent's items and the media with their current status and url). GET /agent/chats/{chatId} or GET /agent/chats/{chatId}/stream.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Follow the chat live up to ~50 s until the current turn ends (default false). | |
| after | No | With wait: true, return only what came after this lastEventId (e.g. 2:end). | |
| limit | No | Without wait: how many of the latest turns to return, 1 to 100 (default 20). | |
| media | No | Without wait: bring the media's status and urls up to date (default true; false is faster). | |
| chatId | Yes | The chatId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly/idempotent/non-destructive/openWorld); the description adds the non-obvious behaviors an agent actually needs: the ~50 s wait ceiling, the possible status values, the pending permission request and last-error fields, media url refresh, and the lastEventId cursor contract for resuming.
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 purpose in the first five words, then branches cleanly into wait and non-wait behavior. The single dense paragraph repeats a bit of what the schema already documents (limit, media), which keeps it short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and five parameters, the description carries the return-shape burden well: it enumerates title, status, pending permission request, last error, turns and media status/urls, plus the underlying endpoints. Nothing an agent needs to call 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 100%, so baseline is 3, but the description adds real meaning beyond the field docs: it ties 'after' to a lastEventId produced by an earlier flow_agent_chat / flow_agent_get_chat call, and explains that wait governs whether the other params apply. It adds genuine usage semantics rather than restating types.
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?
"Read a Flow agent chat" is a specific verb+resource, and the description immediately differentiates this read tool from the sibling write path (flow_agent_chat) and the list path (flow_agent_list_chats) by spelling out the per-chat return payload. An agent knows exactly what it will get back without opening a 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?
It gives explicit operational guidance for the two modes: wait:true to follow a live turn and fetch 'the rest of a turn still running', and the default no-wait read. What is missing is sibling routing — it never says to prefer this over flow_agent_list_chats or flow_agent_chat in a given situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_agent_get_settingsGet the agent's settingsARead-onlyIdempotentInspect
Read the agent settings of the account's agent project (or the projectId given): approval mode (ask: the agent asks before generating; auto: it generates without asking), project instructions (up to 3) and the default image and video model, aspect ratio and count. GET /agent/settings.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The Google Flow account email. Optional when the API token has one Flow account. | ||
| projectId | No | A Flow project id, instead of the account's own agent project ("My Agents Work <date>", made on its first chat). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is low; the description goes beyond them by disclosing the payload contents and decoding the 'ask' vs 'auto' approval-mode semantics, which the agent cannot get from annotations. It stops short of describing error or empty-settings behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with verb and resource, single dense sentence with every clause carrying information, plus the endpoint. Slightly heavy nesting of the approval-mode gloss, but nothing is 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 carries the burden of describing the response and does so by enumerating every returned field group (approval mode, instructions, models, aspect ratio, count). Nothing an agent needs to call and interpret this read 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 100% and both parameters are already documented there, including the projectId vs default-project distinction. The description's parenthetical ('or the projectId given') only mildly reinforces the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (read) plus specific resource (the agent settings of the account's agent project or a given projectId), and it enumerates exactly which settings are returned. An agent can distinguish it at a glance from the write sibling flow_agent_update_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: read the account's default agent project, or supply projectId to target another project. It does not explicitly name flow_agent_update_settings as the mutation alternative or state exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_agent_list_chatsList Flow agent chatsARead-onlyIdempotentInspect
List the agent chats of a Google Flow account (in its agent project, or the projectId given): chatId, title, created, updated and whether a turn is running. GET /agent/chats.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The Google Flow account email. Optional when the API token has one Flow account. | ||
| projectId | No | A Flow project id, instead of the account's own agent project ("My Agents Work <date>", made on its first chat). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds useful context by naming the returned fields and the GET endpoint, but says nothing about pagination, result limits, or auth requirements beyond the implicit token.
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 that front-loads the action, then the scope, then the returned payload, ending with the endpoint. No filler and nothing redundant.
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 compensates well by naming the fields returned (chatId, title, created, updated, running-turn status). What remains missing is pagination/limit behavior and relationship to the other chat siblings, but for a zero-required-parameter read tool this is close to 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 100%, so both email and projectId are already documented in the schema, including the optional-when-single-account nuance. The description's 'in its agent project, or the projectId given' restates the projectId semantics without adding syntax or format 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 specific verb and resource ('List the agent chats of a Google Flow account') and enumerates the returned fields (chatId, title, created, updated, running turn). The list-vs-get-vs-delete distinction from siblings like flow_agent_get_chat is clear from the name and description, though no sibling is explicitly 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?
Usage is only implied by the verb 'List'; there is no explicit statement of when to call this versus flow_agent_get_chat or flow_agent_chat, nor any prerequisites. The one guidance-like clause ('in its agent project, or the projectId given') describes scoping rather than when-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_agent_rename_chatRename a Flow agent chatAIdempotentInspect
Rename an agent chat (also in the Flow web app). Not while a turn runs. PATCH /agent/chats/{chatId}.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The new title, up to 200 characters. | |
| chatId | Yes | The chatId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety and repeatability profile is covered. The description adds the concurrency restriction (no rename during an active turn) and notes the change surfaces in the Flow web app, which is useful extra context but leaves failure behavior and permission requirements unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short fragments, front-loaded with the core action and free of filler. The PATCH path is arguably redundant metadata but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with no output schema, the description covers the action, a timing constraint, and the idempotent nature (reinforced by annotations). Only the success/error outcome is left implicit, which is a minor 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?
Schema description coverage is 100% and both parameters are documented in the schema (title with a 200-char limit, chatId). The description adds nothing about parameter meaning beyond the PATCH path template, 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 specific verb and resource ('Rename an agent chat'), which is unambiguous and distinct from siblings like get_chat, delete_chat, and update_settings. It does not explicitly differentiate itself from those siblings, but the rename action is unique enough that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Not while a turn runs' supplies one real when-not condition, which is genuinely useful timing guidance. However, it names no alternatives and gives no positive context for when renaming is the right call versus deleting or re-creating a chat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_agent_update_settingsChange the agent's settingsAIdempotentInspect
Change the agent settings of the account's agent project (or the projectId given; the agent project is made if the account has none yet). Send at least one of approval, instructions, imageDefaults, videoDefaults. approval auto lets the agent generate (and spend Flow credits) without asking. instructions replaces the whole list. Returns the settings as saved. PUT /agent/settings.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The Google Flow account email. Optional when the API token has one Flow account. | ||
| approval | No | ask: the agent asks before generating; auto: it generates without asking. | |
| projectId | No | A Flow project id, instead of the account's own agent project ("My Agents Work <date>", made on its first chat). | |
| instructions | No | The project instructions the agent follows in every chat, up to 3; replaces the current list (an empty list clears it). Keep an instruction's id (from flow_agent_get_settings) to edit it in place. | |
| imageDefaults | No | The default image settings the agent uses: model, aspectRatio and count (1-4). | |
| videoDefaults | No | The default video settings the agent uses: model, aspectRatio and count (1-4). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavior: approval=auto can spend Flow credits, instructions replaces the whole list, the settings are returned as saved, and the endpoint is PUT /agent/settings. However, 'instructions replaces the whole list' is a destructive replacement behavior that contradicts destructiveHint=false, which promises only additive updates. This is an annotation contradiction, so the score is 1 per the rubric.
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 definition is a single compact paragraph that front-loads the purpose and then adds only concrete operational facts: minimum payload, replacement semantics, return behavior, and endpoint. There is no redundant restatement of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex nested-object mutation tool, the description covers targeting, minimum payload, replacement semantics, return value, endpoint, and credit side effects. The absence of an output schema is partly offset by 'Returns the settings as saved,' but it does not explain error behavior or whether unspecified settings are preserved.
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 100%, so the baseline is 3. The description adds non-schema meaning by imposing the 'send at least one of' constraint and by warning that approval=auto spends Flow credits, which the schema does not mention.
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: 'Change the agent settings.' It also scopes the target precisely (the account's agent project or a supplied projectId) and explains auto-creation, making it clearly distinct from flow_agent_get_settings.
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 explicitly tells the caller to send at least one of approval, instructions, imageDefaults, or videoDefaults, and clarifies the default project target versus projectId. It does not explicitly name flow_agent_get_settings as the read alternative or state when not to use this tool, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_list_assetsList Flow images and videosARead-onlyIdempotentInspect
List the images and videos in a Google Flow project, newest first, each with its reference id (pass it as referenceImage_N / referenceVideo_1 to flow_agent_chat) and whether it is an upload. Every project lists the account's uploads; generated media are listed in the project they were made in: by default the account's main project (API generations), or pass the agent project's id from flow_agent_get_settings for what the agent made. Returns 50 by default (limit up to 200); a large project can take 20 s or more to read. GET /assets/media/{email}.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Only images or only videos. | |
| No | The Google Flow account email. Optional when the API token has one Flow account. | ||
| limit | No | How many of the newest to return, 1 to 200 (default 50). | |
| projectId | No | A Flow project id (e.g. the agent project from flow_agent_get_settings). Default: the account's main project. | |
| uploadsOnly | No | Only files uploaded to the account (flow_upload_image, POST /assets), not generated ones (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's job is to add context and it does: default page size of 50, ceiling of 200, and the notable 'a large project can take 20 s or more to read' latency warning. It stops short of describing pagination or error behavior, but the added operational context is real.
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 dense paragraph that front-loads purpose and hits scoping, defaults, limits, latency and endpoint in order. Nothing is wasted, though the middle clauses about project scoping are slightly packed and could be broken out.
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 still conveys the shape of results (newest first, reference id, upload flag) and the default/limit behavior. Minor omissions remain around pagination beyond the limit and ordering guarantees across projects, but an agent has enough 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?
Schema description coverage is 100%, so baseline is 3, but the description adds meaning the schema lacks: the concrete parameter syntax for downstream use (referenceImage_N / referenceVideo_1), which projectId to pick in practice, and what 'uploadsOnly' excludes. This is value beyond the field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the images and videos in a Google Flow project'), specifies ordering ('newest first'), and describes what each item carries (reference id, upload flag). It is clearly distinguishable from siblings like flow_list_characters, flow_list_voices and flow_upload_image.
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 tells the agent which projectId to pass and when: default main project for API generations, or the id from flow_agent_get_settings for agent-made media. It also explains the uploads-only scope and how returned reference ids feed into flow_agent_chat, so the routing decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_list_charactersList Flow charactersARead-onlyIdempotentInspect
List the characters saved on a Google Flow account: each one's character reference id (pass it as character_N to flow_agent_chat and name it @character_N), name, images and voice. GET /characters.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The Google Flow account email. Optional when the API token has one Flow account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, idempotent, non-destructive profile, so the description only needs to add context. It does so by disclosing the underlying GET /characters endpoint and the shape of each returned record, which is valuable given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense but front-loaded sentence covering purpose, return fields, and downstream usage, followed by the endpoint. Every clause carries information and nothing is padding.
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 read-only list call with one optional parameter and no output schema, the description supplies the returned field set and the identifier-chaining convention, which is what an agent needs. Account selection is deferred to the schema, leaving only minor gaps like ordering or pagination.
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 100% and the single optional 'email' parameter is fully documented there, so the baseline is 3. The description implies the tool operates against one Flow account but adds no fallback or multi-account syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the characters saved on a Google Flow account') and goes further by enumerating what each entry contains (reference id, name, images, voice). The resource noun 'characters' cleanly separates it from sibling list tools such as flow_list_voices and flow_list_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 tells the agent how to consume the result: pass the id as character_N to flow_agent_chat and reference it as @character_N, which routes the agent to the correct sibling. It stops short of stating when not to use this tool or the prerequisite that identifiers come from this call, so it is strong context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_list_voicesList Flow voicesARead-onlyIdempotentInspect
List the voices of a Google Flow account: Flow's built-in voices (pass the name) and the account's own custom voices (pass the voice reference id), as referenceAudio_N to flow_agent_chat, named @referenceAudio_N. source: system or user only. GET /voices.
| Name | Required | Description | Default |
|---|---|---|---|
| No | The Google Flow account email. Optional when the API token has one Flow account. | ||
| source | No | system: the built-in voices only; user: the account's own voices only. Default both. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the HTTP verb+path (GET /voices), the accepted source filter values, and the identifier convention (referenceAudio_N, referenced as @referenceAudio_N) that governs how results must be consumed.
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 dense sentence that front-loads the core action and keeps the integration detail attached. The referenceAudio_N/@referenceAudio_N naming is stated twice in close proximity, which is slightly redundant but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys what is returned (two voice categories), how to filter them, and how the resulting identifiers feed flow_agent_chat. Return shape/pagination is omitted, but for a simple read-only list tool the coverage is sufficient.
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 100%, so both parameters are already documented with their enum and optionality. The description's 'source: system or user only' largely restates the schema, and email filtering semantics are not expanded upon, so it sits at the baseline.
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 ('List the voices of a Google Flow account') and splits the resource into its two meaningful sub-kinds (built-in vs. custom), which is the distinction an agent actually needs. It does not explicitly position itself against flow_list_assets/flow_list_characters, but naming flow_agent_chat as the consumer makes the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent the key downstream condition: pass the name for built-in voices and the voice reference id for custom ones when using flow_agent_chat. It gives clear context for source values but offers no explicit when-not-to-use or sibling call-out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flow_upload_imageUpload an image to FlowAInspect
Upload your own JPEG, PNG or WebP image to a Google Flow account, from a public https url or as contentBase64 (small files), up to 20 MB. Returns its reference id: pass it as referenceImage_N to flow_agent_chat (and name it @referenceImage_N). An upload stays on the Google account until deleted. POST /assets/{email}.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A public https URL of the image. | |
| No | The account to upload to (use the chat's account: a reference works only there). Default: the only account, else one picked by the load balancer. | ||
| mimeType | No | The image's type: image/jpeg, image/png, image/webp. Default: from the url's answer. | |
| contentBase64 | No | The image, base64-encoded (instead of url). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-idempotent, non-destructive, open-world write. The description adds genuinely new traits beyond that: uploads persist on the Google account until deleted, a 20 MB size ceiling, and the accepted mime types. It does not discuss auth requirements or failure modes, so it stops 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?
A single dense paragraph that front-loads the operation, then constraints, then the downstream handoff. Every clause carries information; nothing is padding.
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 compensates by describing the return value (the reference id) and how to use it. Combined with source modes, size/type limits, account scoping and asset lifetime, an agent has everything needed to invoke 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?
Schema coverage is 100%, so the baseline is 3. The description still adds meaning beyond the schema: it clarifies the url-vs-contentBase64 tradeoff (base64 only for small files), states the 20 MB limit, and ties the email parameter to the chat's account by explaining a reference only works there.
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 (Upload) plus resource (your own JPEG/PNG/WebP image) and target system (a Google Flow account), with source modes spelled out. It is clearly distinguishable from siblings like flow_list_assets or flow_agent_chat, and even names the endpoint POST /assets/{email}.
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 context for the two input modes (public https url vs contentBase64 for small files, 20 MB cap) and explicitly routes the agent downstream: pass the returned id as referenceImage_N to flow_agent_chat, named @referenceImage_N. What is missing is exclusion guidance — it never says when not to use this tool or which alternative to prefer.
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 tool update
- Changed
flow_agent_update_settings1 field changed- changed
Input schema / properties / videoDefaults / properties / model / descriptionPrevious value: -"The model: one the account's plan has, as flow_agent_get_settings lists under models (omni-flash, veo-3.1-fast, veo-3.1-quality, veo-3.1-lite, veo-3.1-lite-low-priority)."New value: +"The model: one the account's plan has, as flow_agent_get_settings lists under models (omni-flash-1.2, omni-flash, veo-3.1-fast, veo-3.1-quality, veo-3.1-lite, veo-3.1-lite-low-priority)."
12 tool updates
- First observed
flow_agent_answer_approval - First observed
flow_agent_chat - First observed
flow_agent_delete_chat - First observed
flow_agent_get_chat - First observed
flow_agent_get_settings - First observed
flow_agent_list_chats - First observed
flow_agent_rename_chat - First observed
flow_agent_update_settings - First observed
flow_list_assets - First observed
flow_list_characters - First observed
flow_list_voices - First observed
flow_upload_image
Publisher details
- Operator
- useapi.net
- Operator website
- https://useapi.net
- Vendor relationship
- Independent
- Documentation
- https://useapi.net/docs/api-google-flow-v1/mcp
- Trust center
- https://useapi.net/docs/legal
- Restrictions
- Paid useapi.net subscription ($15/month flat). Requires your own Google account with Google Flow (any Google AI plan, the free one included), plus a captcha provider once the free captcha credits run out. · Publisher source
Related MCP Connectors
Make videos and docs with your AI agent — describe what you need, every output stays editable.
Build and run visual creative-production workflows from your AI agent.
Create and edit AI videos from chat: plan shots, generate scenes, and export stories and ads.
Deterministic visual marketing engine. Your agent plans, renders, and posts on-brand campaigns.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to generate and edit Google Flow images and videos, run batch storyboards, manage projects and characters, check credits, and download 1080p clips through a signed-in Flow account.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to offload production-grade image and video generation to Google Flow, with deterministic outputs, character consistency, and batch processing via MCP.31MIT
- AlicenseAqualityFmaintenanceControls Google Flow for image and video generation from an AI agent. Enables generating images with models like Imagen 4, creating videos, managing characters and scenes via browser automation.417119 npm123MIT
- AlicenseAqualityDmaintenanceEnables AI agents to drive Google Flow through a real Chrome profile to generate images, videos, characters, and scenes without sharing credentials.41912 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.