Google Flow MCP Server
October 16, 2026
Table of contents
- Endpoint and authorization
- Setup
- Tools
- Long-running work
- Approvals and credits
- Example prompts
- Limits and notes
The useapi.net Google Flow MCP server lets an AI assistant such as Claude Code, Cursor or VS Code Copilot work with Google Flow Agent, the creative assistant built into Google Flow, on your own Google accounts. It is a hosted Model Context Protocol server with 12 tools: chat with the agent, attach images, a video, voices and characters, answer its requests to spend credits, read, list, rename and delete chats, set the project’s approval mode, instructions and default models, list the account’s characters, voices, images and videos, and upload your own images. Each tool calls the Agent API or another Google Flow API endpoint, so the same rules and limits apply. Nothing needs to be installed or hosted.
Endpoint and authorization
https://api.useapi.net/v1/google-flow/mcp
- Transport: Streamable HTTP.
- Listed in the official MCP Registry as
net.useapi/google-flow, so MCP clients and directories that read the registry can find it by that name. - Authorization: your useapi.net API token in the
Authorization: Bearer …header, see Setup useapi.net. - You need at least one Google account added with Setup Google Flow, and a captcha provider once your free captcha credits run out. Adding and removing accounts is not available over MCP: use POST /accounts or the setup page.
Setup
Replace YOUR_API_TOKEN with your useapi.net API token.
Claude Code
claude mcp add --transport http useapi-google-flow https://api.useapi.net/v1/google-flow/mcp --header "Authorization: Bearer YOUR_API_TOKEN"
Cursor
In ~/.cursor/mcp.json:
{
"mcpServers": {
"useapi-google-flow": {
"url": "https://api.useapi.net/v1/google-flow/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
VS Code
In .vscode/mcp.json:
{
"servers": {
"useapi-google-flow": {
"type": "http",
"url": "https://api.useapi.net/v1/google-flow/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Windsurf and other clients
Any client that supports remote MCP servers over HTTP with custom headers works. The usual JSON shape:
{
"mcpServers": {
"useapi-google-flow": {
"serverUrl": "https://api.useapi.net/v1/google-flow/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Some clients name the address field url instead of serverUrl.
Test it with curl
curl -s https://api.useapi.net/v1/google-flow/mcp \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -s https://api.useapi.net/v1/google-flow/mcp \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
The first call answers with the server’s name useapi-google-flow and its instructions for the assistant, the second with the 12 tools.
Tools
Chats are named by their chatId, which carries its account and project, so a follow-up always runs where the chat lives. The tools that work on an account (flow_agent_list_chats, flow_agent_get_settings, flow_agent_update_settings, flow_list_characters, flow_list_voices, flow_list_assets, flow_upload_image) take an optional email, which can be left out when the API token has one Google Flow account.
Chat
| Tool | What it does | Main parameters |
|---|---|---|
flow_agent_chat | Sends a message to the agent and returns its answer: the chat’s chatId, the turn’s status (completed, waiting_approval, failed or running), the agent’s text, its tool calls, the media it made with referenceId and link, and a pending request to spend credits. Without chatId it starts a new chat, on email, on the references’ account, or on an account the API picks. Name references in the message as @referenceImage_1, @referenceVideo_1, @referenceAudio_1 or @character_1. Find them with the tools under Your characters, voices and media. They must belong to the chat’s account. | message, chatId, email, projectId, referenceImage_1..7, referenceVideo_1, referenceAudio_1..5, character_1..7 |
flow_agent_get_chat | Reads a chat: its status, pending request, last error and latest turns with media status and links. With wait: true it follows the running turn and returns the rest, after the lastEventId of an earlier result. | chatId, wait, after, media, limit |
flow_agent_answer_approval | Answers the agent’s request to spend credits with approve, always (approve and switch the project to auto) or reject, then follows the agent like flow_agent_chat. | chatId, decision, wait |
flow_agent_list_chats | Lists the account’s agent chats with title, dates and whether a turn is running, including chats started in the Flow web app in the same project. | email, projectId |
flow_agent_rename_chat | Renames a chat, also in the Flow web app. | chatId, title |
flow_agent_delete_chat | Deletes a chat’s history. The images and videos it made stay in the project. | chatId |
The parameters match POST /agent/chats, POST /agent/chats/chatId/messages, POST /agent/chats/chatId/approval and GET /agent/chats/chatId.
Settings
| Tool | What it does | Main parameters |
|---|---|---|
flow_agent_get_settings | Reads the project’s approval mode (ask or auto), its instructions and the default image and video model, aspect ratio and count. | email, projectId |
flow_agent_update_settings | Changes them. instructions replaces the whole list of up to 3. | email, projectId, approval, instructions, imageDefaults, videoDefaults |
The parameters match PUT /agent/settings.
Your characters, voices and media
| Tool | What it does | Main parameters |
|---|---|---|
flow_list_characters | Lists the characters saved on the account with their name, voice and character id, to pass as character_N. | email |
flow_list_voices | Lists the 30 built-in voices by name and the account’s own voices with their ids, to pass as referenceAudio_N. | email, source |
flow_list_assets | Lists a project’s images and videos, newest first, with a referenceId for referenceImage_N or referenceVideo_1 and whether each is an upload. Without projectId it lists the account’s main project. Every project includes the account’s uploads. Pass the agent project’s id from flow_agent_get_settings to see what the agent made. Returns 50 by default, up to 200 per call. | email, projectId, type, uploadsOnly, limit |
flow_upload_image | Uploads your own JPEG, PNG or WebP image from a public https URL, or sent as contentBase64, up to 20 MB, and returns its referenceId for referenceImage_N. Upload it to the account you chat on. Uploads stay on the Google account until deleted. | url or contentBase64, mimeType, email |
The parameters match GET /characters, GET /voices, GET /assets/media/email and POST /assets/email.
The full input schema of every tool comes from tools/list.
Long-running work
MCP clients usually give up on a tool call after about a minute, so a tool waits up to about 50 seconds:
- Sending waits for Google to accept the turn, usually 3 to 40 seconds. If Google has not confirmed it within 55 seconds, the tool says so and tells the assistant to check the chat before sending again.
- The tool then follows the agent for the rest of the time. A short answer, an image or a request to spend credits usually comes back in that time.
- A turn that is still working returns
status: "running"and alastEventId.flow_agent_get_chatwithwait: trueandafterset to thatlastEventIdreturns the rest. Ask the assistant to keep checking until it is done. - Videos finish a minute or two after the turn.
flow_agent_get_chatwithoutwaitshows their status and link.
Clients that ask for progress notifications get one about every 10 seconds while a tool waits.
Media links are Google’s and expire about 6 hours after they are issued. Read the chat again for fresh ones. A media item’s referenceId can go into a later message as referenceImage_N or referenceVideo_1.
Approvals and credits
Chatting with the agent costs no Flow credits. The images and videos it makes cost the usual Flow price. In the ask approval mode the agent stops before it spends credits and says what it costs, and the tool result tells the assistant to ask you before it answers with flow_agent_answer_approval. always, or approval: "auto" with flow_agent_update_settings, lets the agent spend without asking in every chat of the project.
Example prompts
- “Upload https://example.com/photo.jpg to my Flow account and ask the agent to describe it.”
- “Ask the Flow agent for three ideas for a 30-second coffee ad, then make the first one as a storyboard of four images.”
- “Make an 8-second Veo 3.1 Lite video of a paper boat floating on a calm pond. Show me the cost before you approve it.”
- “Send my character and this product image to the Flow agent and ask for a short video of her holding it, in the Aoede voice.”
- “Is the video from my last Flow chat ready? Give me the link.”
- “List my Flow agent chats and delete the ones about the lighthouse.”
- “Set the Flow agent to use Nano Banana Pro at 9:16 by default, and add an instruction to keep every answer short.”
Limits and notes
- The tools use your Google accounts and the same rules as the REST API: one turn at a time per chat, at most 3 running turns per account, and Google’s daily limit on agent messages. See Limits.
- Each turn uses one captcha, the same as a generation request.
- References in a chat must belong to the chat’s account. Upload images with
flow_upload_imageto that account. flow_list_assetsreturns up to 200 items per call, and a large project can take 20 seconds or more to read. A new upload may take a moment to appear in the list.- Custom connectors on claude.ai need OAuth sign-in, which this server does not support yet. Use Claude Code or another client that can send an
Authorizationheader. - A client may send up to 20 JSON-RPC requests in one batch.
- If the client sends an
MCP-Protocol-Versionheader, it must be one of the supported versions:2025-06-18,2025-03-26or2024-11-05. - Every tool call shows in your usage stats (
bot=google-flow) as modelmcp, with the tool name as its status, orfailed.