{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_5dgcsb6f67jk","handle":"openflow","url":"https://wellknown.network/agents/openflow","links":{"self":"https://wellknown.network/agents/openflow/record.json","html":"https://wellknown.network/agents/openflow","markdown":"https://wellknown.network/agents/openflow/record.md","api":"https://wellknown.network/api/v1/agents/openflow","status":"https://wellknown.network/api/v1/agents/openflow/status","claim":"https://wellknown.network/agents/openflow/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/openflow/claim.json","badge":"https://wellknown.network/agents/openflow/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:openflowmcp.com:server:openflow","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"openFlow","summary":"Omni Flash and Veo video, Nano Banana images on Google Flow, from any MCP client","description":"Omni Flash and Veo video, Nano Banana images on Google Flow, from any MCP client","publisher":{"name":"molkex","url":null},"homepage":"https://openflowmcp.com/","repository":"https://github.com/molkex/mcp-flow-google","version":"1.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://openflowmcp.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-23T21:26:08.751929Z","publishedAt":"2026-08-23T21:26:08.751929Z","registryName":"io.github.molkex/omni-flash-veo3-nano-banana"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"media.image-generation","name":"Image Generation","confidence":0.583,"provenance":"derived"},{"slug":"media.video-generation","name":"Video Generation","confidence":0.583,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":0.54,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"media.image-editing","name":"Image Editing","confidence":0.51,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"}],"categories":["analytics","content","dev","infra","media"]},"observed":{"status":"live","statusReason":"Responded 46m ago.","lastOkAt":"2026-09-08T14:26:49.097Z","lastProbedAt":"2026-09-08T14:26:49.097Z","statusComputedAt":"2026-09-08T14:32:47.612Z","reliability30d":{"probes":6,"successRate":1,"p50Ms":25},"latestObservations":[{"at":"2026-09-08T14:26:49.097Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"tools":[{"name":"generate_with_face","description":"Generate a NEW image of the SAME PERSON/character as an existing photo or\n    portrait — dress them differently, move them somewhere else, make an avatar. This\n"},{"name":"generate_image","description":"Generate an image from a text prompt via Google Flow.\n\n    model — pass ONE of these exact ids (from GET v1/flow/models, verified 2026-07-25):\n      NARWHAL    "},{"name":"music_generate","description":"Generate a full song from a text brief via Google Flow Music (Lyria).\n\n    prompt — free text: genre, mood, BPM, instruments, and whether you want vocals or an\n"},{"name":"music_chat","description":"Talk to the Google Flow Music Producer agent instead of one-shotting a track.\n\n    Use this when the work is a conversation rather than a single brief: asking w"},{"name":"music_stems","description":"Split a track we generated into stems (vocals, instrumental, drums, bass, …).\n\n    clip_id — the id of a clip returned by music_generate (or music_video's song)"},{"name":"music_list","description":"List the user's music tracks."},{"name":"music_get","description":"Get metadata for a single music track."},{"name":"music_download","description":"Download the raw .m4a file of a track to the server."},{"name":"music_credits","description":"Check remaining flowmusic credits and subscription tier."},{"name":"generate_scene","description":"Build a location precisely from a scene-layout/v2 map and generate its plate.\n\n    This is the \"exact location building\" path: instead of describing the room in"},{"name":"generate_video","description":"Generate a video from a text prompt via Google Flow (Veo models).\n\n    video_model_key options: abra_t2v_4s (default, 7 credits), veo_3_1_t2v_lite\n    (10cr, vi"},{"name":"edit_video","description":"Rewrite a video this service already generated, from a plain description:\n    \"make the sky stormy\", \"take the passer-by out of the shot\", \"warmer light\".\n\n    "},{"name":"extend_video","description":"Continue a video this service already generated — Flow writes what happens next.\n\n    media_id: the id from a previous generate_video* result (the bare id, not "},{"name":"generate_video_between_frames","description":"Generate the transition between TWO given frames: the video starts at the first\n    image and ends at the second one, Flow invents everything in between.\n\n    T"},{"name":"generate_video_from_image","description":"Generate a video that starts from a given image (i2v — image-to-video).\n\n    start_image_base64: raw base64-encoded image bytes, no data: URI prefix.\n    Mutual"},{"name":"generate_video_with_reference","description":"Generate a video using up to 3 reference images (r2v — e.g. a consistent\n    character/subject across the video). reference_images_base64: raw base64-encoded\n  "},{"name":"generate_character_image","description":"Generate a portrait or body image for an existing Flow character.\n\n    entity_id: the character's entityId — from create_character or\n    create_character_from_"},{"name":"create_character","description":"Create a new, empty Flow character (just gets you an entity_id — no portrait/body,\n    no description yet). Plain HTTP, no browser involved.\n\n    Low-level buil"},{"name":"create_character_from_photo","description":"Create a new Flow character whose portrait (and optionally body) is a REAL\n    PHOTO, not a text description or generation. Both photos become the character's\n "},{"name":"create_character_from_description","description":"Invent a new character from a text description and generate its portrait — the\n    full \"make me a character, no photo involved\" path in ONE call, instead of gl"},{"name":"list_characters","description":"List the characters YOU created (create_character_from_description, or\n    create_character_from_photo with name=...) and can now generate more images of\n    vi"},{"name":"generate_character_turnaround","description":"Generate a single image showing the character's FULL BODY from 3 angles\n    (front/side/back) in one row, labeled — a \"turnaround sheet\". Pure HTTP as of\n    20"},{"name":"generate_character_expression_sheet","description":"Generate a single image showing the character's FACE with several different\n    expressions in one row, labeled — an \"expression sheet\". Same job type and same\n"},{"name":"create_project","description":"Create a NEW Flow project on one of your farm accounts and return its project_id.\n\n    Use this to give every one of YOUR OWN clients their own namespace: creat"},{"name":"check_credits","description":"Check projects for a farm account (or all). NOTE: for the credit BALANCE and a\n    full at-a-glance overview, prefer `flow_dashboard()` — it returns real credit"},{"name":"flow_dashboard","description":"The account-pool control panel: for EVERY farm account, the real credit\n    balance, subscription tier, project count, and health status, plus totals — one\n    "},{"name":"update_character","description":"Save a character's display name and/or personality notes. Without this, a\n    character stays 'Untitled Character' with no description even after portrait/body\n"},{"name":"upscale_image","description":"Upscale an existing generated image (from a prior generate_image call) to a\n    higher resolution, via Flow's own Download panel -- the same \"1K/2K/4K\" picker\n "},{"name":"upscale_video","description":"Upscale an existing generated video (from a prior generate_video call) to a\n    higher resolution, via Flow's own grid-view download menu (the \"270p/720p/1080p/"},{"name":"check_job","description":"Check the status/result of a job previously returned by generate_image,\n    generate_video, generate_video_from_image, or generate_video_with_reference.\n\n    Be"},{"name":"fetch_media","description":"Download a generated media file (video, frame) and return its bytes,\n    base64-encoded, so the file can be saved or shown even though the media endpoint\n    is"},{"name":"add_account_token","description":"Attach one of YOUR OWN Google accounts to the pool using an oauth_token captured\n    on the USER'S OWN machine (password/2FA never leave it). This is the self-s"},{"name":"flow_status","description":"What this key still needs before it can do everything — READ-ONLY, spends nothing.\n\n    Call this BEFORE the first generation of a session, whenever a call is r"},{"name":"flow_health","description":"Check whether the Flow generation backend is reachable and see current queue\n    depth (queued + warming + running jobs). Note: the Android emulator is now OFF "},{"name":"list_models","description":"List every valid model id this service accepts — READ-ONLY, spends no credits,\n    calls nothing outside this service. Call this BEFORE generate_image/generate_"}],"toolCount":35,"serverName":"openFlowAPI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-09-08T08:25:43.047Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":49,"error":null,"detail":{"tools":[{"name":"generate_with_face","description":"Generate a NEW image of the SAME PERSON/character as an existing photo or\n    portrait — dress them differently, move them somewhere else, make an avatar. This\n"},{"name":"generate_image","description":"Generate an image from a text prompt via Google Flow.\n\n    model — pass ONE of these exact ids (from GET v1/flow/models, verified 2026-07-25):\n      NARWHAL    "},{"name":"music_generate","description":"Generate a full song from a text brief via Google Flow Music (Lyria).\n\n    prompt — free text: genre, mood, BPM, instruments, and whether you want vocals or an\n"},{"name":"music_chat","description":"Talk to the Google Flow Music Producer agent instead of one-shotting a track.\n\n    Use this when the work is a conversation rather than a single brief: asking w"},{"name":"music_stems","description":"Split a track we generated into stems (vocals, instrumental, drums, bass, …).\n\n    clip_id — the id of a clip returned by music_generate (or music_video's song)"},{"name":"music_list","description":"List the user's music tracks."},{"name":"music_get","description":"Get metadata for a single music track."},{"name":"music_download","description":"Download the raw .m4a file of a track to the server."},{"name":"music_credits","description":"Check remaining flowmusic credits and subscription tier."},{"name":"generate_scene","description":"Build a location precisely from a scene-layout/v2 map and generate its plate.\n\n    This is the \"exact location building\" path: instead of describing the room in"},{"name":"generate_video","description":"Generate a video from a text prompt via Google Flow (Veo models).\n\n    video_model_key options: abra_t2v_4s (default, 7 credits), veo_3_1_t2v_lite\n    (10cr, vi"},{"name":"edit_video","description":"Rewrite a video this service already generated, from a plain description:\n    \"make the sky stormy\", \"take the passer-by out of the shot\", \"warmer light\".\n\n    "},{"name":"extend_video","description":"Continue a video this service already generated — Flow writes what happens next.\n\n    media_id: the id from a previous generate_video* result (the bare id, not "},{"name":"generate_video_between_frames","description":"Generate the transition between TWO given frames: the video starts at the first\n    image and ends at the second one, Flow invents everything in between.\n\n    T"},{"name":"generate_video_from_image","description":"Generate a video that starts from a given image (i2v — image-to-video).\n\n    start_image_base64: raw base64-encoded image bytes, no data: URI prefix.\n    Mutual"},{"name":"generate_video_with_reference","description":"Generate a video using up to 3 reference images (r2v — e.g. a consistent\n    character/subject across the video). reference_images_base64: raw base64-encoded\n  "},{"name":"generate_character_image","description":"Generate a portrait or body image for an existing Flow character.\n\n    entity_id: the character's entityId — from create_character or\n    create_character_from_"},{"name":"create_character","description":"Create a new, empty Flow character (just gets you an entity_id — no portrait/body,\n    no description yet). Plain HTTP, no browser involved.\n\n    Low-level buil"},{"name":"create_character_from_photo","description":"Create a new Flow character whose portrait (and optionally body) is a REAL\n    PHOTO, not a text description or generation. Both photos become the character's\n "},{"name":"create_character_from_description","description":"Invent a new character from a text description and generate its portrait — the\n    full \"make me a character, no photo involved\" path in ONE call, instead of gl"},{"name":"list_characters","description":"List the characters YOU created (create_character_from_description, or\n    create_character_from_photo with name=...) and can now generate more images of\n    vi"},{"name":"generate_character_turnaround","description":"Generate a single image showing the character's FULL BODY from 3 angles\n    (front/side/back) in one row, labeled — a \"turnaround sheet\". Pure HTTP as of\n    20"},{"name":"generate_character_expression_sheet","description":"Generate a single image showing the character's FACE with several different\n    expressions in one row, labeled — an \"expression sheet\". Same job type and same\n"},{"name":"create_project","description":"Create a NEW Flow project on one of your farm accounts and return its project_id.\n\n    Use this to give every one of YOUR OWN clients their own namespace: creat"},{"name":"check_credits","description":"Check projects for a farm account (or all). NOTE: for the credit BALANCE and a\n    full at-a-glance overview, prefer `flow_dashboard()` — it returns real credit"},{"name":"flow_dashboard","description":"The account-pool control panel: for EVERY farm account, the real credit\n    balance, subscription tier, project count, and health status, plus totals — one\n    "},{"name":"update_character","description":"Save a character's display name and/or personality notes. Without this, a\n    character stays 'Untitled Character' with no description even after portrait/body\n"},{"name":"upscale_image","description":"Upscale an existing generated image (from a prior generate_image call) to a\n    higher resolution, via Flow's own Download panel -- the same \"1K/2K/4K\" picker\n "},{"name":"upscale_video","description":"Upscale an existing generated video (from a prior generate_video call) to a\n    higher resolution, via Flow's own grid-view download menu (the \"270p/720p/1080p/"},{"name":"check_job","description":"Check the status/result of a job previously returned by generate_image,\n    generate_video, generate_video_from_image, or generate_video_with_reference.\n\n    Be"},{"name":"fetch_media","description":"Download a generated media file (video, frame) and return its bytes,\n    base64-encoded, so the file can be saved or shown even though the media endpoint\n    is"},{"name":"add_account_token","description":"Attach one of YOUR OWN Google accounts to the pool using an oauth_token captured\n    on the USER'S OWN machine (password/2FA never leave it). This is the self-s"},{"name":"flow_status","description":"What this key still needs before it can do everything — READ-ONLY, spends nothing.\n\n    Call this BEFORE the first generation of a session, whenever a call is r"},{"name":"flow_health","description":"Check whether the Flow generation backend is reachable and see current queue\n    depth (queued + warming + running jobs). Note: the Android emulator is now OFF "},{"name":"list_models","description":"List every valid model id this service accepts — READ-ONLY, spends no credits,\n    calls nothing outside this service. Call this BEFORE generate_image/generate_"}],"toolCount":35,"serverName":"openFlowAPI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-09-08T02:22:38.241Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"tools":[{"name":"generate_with_face","description":"Generate a NEW image of the SAME PERSON/character as an existing photo or\n    portrait — dress them differently, move them somewhere else, make an avatar. This\n"},{"name":"generate_image","description":"Generate an image from a text prompt via Google Flow.\n\n    model — pass ONE of these exact ids (from GET v1/flow/models, verified 2026-07-25):\n      NARWHAL    "},{"name":"music_generate","description":"Generate a full song from a text brief via Google Flow Music (Lyria).\n\n    prompt — free text: genre, mood, BPM, instruments, and whether you want vocals or an\n"},{"name":"music_chat","description":"Talk to the Google Flow Music Producer agent instead of one-shotting a track.\n\n    Use this when the work is a conversation rather than a single brief: asking w"},{"name":"music_stems","description":"Split a track we generated into stems (vocals, instrumental, drums, bass, …).\n\n    clip_id — the id of a clip returned by music_generate (or music_video's song)"},{"name":"music_list","description":"List the user's music tracks."},{"name":"music_get","description":"Get metadata for a single music track."},{"name":"music_download","description":"Download the raw .m4a file of a track to the server."},{"name":"music_credits","description":"Check remaining flowmusic credits and subscription tier."},{"name":"generate_scene","description":"Build a location precisely from a scene-layout/v2 map and generate its plate.\n\n    This is the \"exact location building\" path: instead of describing the room in"},{"name":"generate_video","description":"Generate a video from a text prompt via Google Flow (Veo models).\n\n    video_model_key options: abra_t2v_4s (default, 7 credits), veo_3_1_t2v_lite\n    (10cr, vi"},{"name":"edit_video","description":"Rewrite a video this service already generated, from a plain description:\n    \"make the sky stormy\", \"take the passer-by out of the shot\", \"warmer light\".\n\n    "},{"name":"extend_video","description":"Continue a video this service already generated — Flow writes what happens next.\n\n    media_id: the id from a previous generate_video* result (the bare id, not "},{"name":"generate_video_between_frames","description":"Generate the transition between TWO given frames: the video starts at the first\n    image and ends at the second one, Flow invents everything in between.\n\n    T"},{"name":"generate_video_from_image","description":"Generate a video that starts from a given image (i2v — image-to-video).\n\n    start_image_base64: raw base64-encoded image bytes, no data: URI prefix.\n    Mutual"},{"name":"generate_video_with_reference","description":"Generate a video using up to 3 reference images (r2v — e.g. a consistent\n    character/subject across the video). reference_images_base64: raw base64-encoded\n  "},{"name":"generate_character_image","description":"Generate a portrait or body image for an existing Flow character.\n\n    entity_id: the character's entityId — from create_character or\n    create_character_from_"},{"name":"create_character","description":"Create a new, empty Flow character (just gets you an entity_id — no portrait/body,\n    no description yet). Plain HTTP, no browser involved.\n\n    Low-level buil"},{"name":"create_character_from_photo","description":"Create a new Flow character whose portrait (and optionally body) is a REAL\n    PHOTO, not a text description or generation. Both photos become the character's\n "},{"name":"create_character_from_description","description":"Invent a new character from a text description and generate its portrait — the\n    full \"make me a character, no photo involved\" path in ONE call, instead of gl"},{"name":"list_characters","description":"List the characters YOU created (create_character_from_description, or\n    create_character_from_photo with name=...) and can now generate more images of\n    vi"},{"name":"generate_character_turnaround","description":"Generate a single image showing the character's FULL BODY from 3 angles\n    (front/side/back) in one row, labeled — a \"turnaround sheet\". Pure HTTP as of\n    20"},{"name":"generate_character_expression_sheet","description":"Generate a single image showing the character's FACE with several different\n    expressions in one row, labeled — an \"expression sheet\". Same job type and same\n"},{"name":"create_project","description":"Create a NEW Flow project on one of your farm accounts and return its project_id.\n\n    Use this to give every one of YOUR OWN clients their own namespace: creat"},{"name":"check_credits","description":"Check projects for a farm account (or all). NOTE: for the credit BALANCE and a\n    full at-a-glance overview, prefer `flow_dashboard()` — it returns real credit"},{"name":"flow_dashboard","description":"The account-pool control panel: for EVERY farm account, the real credit\n    balance, subscription tier, project count, and health status, plus totals — one\n    "},{"name":"update_character","description":"Save a character's display name and/or personality notes. Without this, a\n    character stays 'Untitled Character' with no description even after portrait/body\n"},{"name":"upscale_image","description":"Upscale an existing generated image (from a prior generate_image call) to a\n    higher resolution, via Flow's own Download panel -- the same \"1K/2K/4K\" picker\n "},{"name":"upscale_video","description":"Upscale an existing generated video (from a prior generate_video call) to a\n    higher resolution, via Flow's own grid-view download menu (the \"270p/720p/1080p/"},{"name":"check_job","description":"Check the status/result of a job previously returned by generate_image,\n    generate_video, generate_video_from_image, or generate_video_with_reference.\n\n    Be"},{"name":"fetch_media","description":"Download a generated media file (video, frame) and return its bytes,\n    base64-encoded, so the file can be saved or shown even though the media endpoint\n    is"},{"name":"add_account_token","description":"Attach one of YOUR OWN Google accounts to the pool using an oauth_token captured\n    on the USER'S OWN machine (password/2FA never leave it). This is the self-s"},{"name":"flow_status","description":"What this key still needs before it can do everything — READ-ONLY, spends nothing.\n\n    Call this BEFORE the first generation of a session, whenever a call is r"},{"name":"flow_health","description":"Check whether the Flow generation backend is reachable and see current queue\n    depth (queued + warming + running jobs). Note: the Android emulator is now OFF "},{"name":"list_models","description":"List every valid model id this service accepts — READ-ONLY, spends no credits,\n    calls nothing outside this service. Call this BEFORE generate_image/generate_"}],"toolCount":35,"serverName":"openFlowAPI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-09-07T19:21:49.482Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":25,"error":null,"detail":{"tools":[{"name":"generate_with_face","description":"Generate a NEW image of the SAME PERSON/character as an existing photo or\n    portrait — dress them differently, move them somewhere else, make an avatar. This\n"},{"name":"generate_image","description":"Generate an image from a text prompt via Google Flow.\n\n    model — pass ONE of these exact ids (from GET v1/flow/models, verified 2026-07-25):\n      NARWHAL    "},{"name":"music_generate","description":"Generate a full song from a text brief via Google Flow Music (Lyria).\n\n    prompt — free text: genre, mood, BPM, instruments, and whether you want vocals or an\n"},{"name":"music_chat","description":"Talk to the Google Flow Music Producer agent instead of one-shotting a track.\n\n    Use this when the work is a conversation rather than a single brief: asking w"},{"name":"music_stems","description":"Split a track we generated into stems (vocals, instrumental, drums, bass, …).\n\n    clip_id — the id of a clip returned by music_generate (or music_video's song)"},{"name":"music_list","description":"List the user's music tracks."},{"name":"music_get","description":"Get metadata for a single music track."},{"name":"music_download","description":"Download the raw .m4a file of a track to the server."},{"name":"music_credits","description":"Check remaining flowmusic credits and subscription tier."},{"name":"generate_scene","description":"Build a location precisely from a scene-layout/v2 map and generate its plate.\n\n    This is the \"exact location building\" path: instead of describing the room in"},{"name":"generate_video","description":"Generate a video from a text prompt via Google Flow (Veo models).\n\n    video_model_key options: abra_t2v_4s (default, 7 credits), veo_3_1_t2v_lite\n    (10cr, vi"},{"name":"edit_video","description":"Rewrite a video this service already generated, from a plain description:\n    \"make the sky stormy\", \"take the passer-by out of the shot\", \"warmer light\".\n\n    "},{"name":"extend_video","description":"Continue a video this service already generated — Flow writes what happens next.\n\n    media_id: the id from a previous generate_video* result (the bare id, not "},{"name":"generate_video_between_frames","description":"Generate the transition between TWO given frames: the video starts at the first\n    image and ends at the second one, Flow invents everything in between.\n\n    T"},{"name":"generate_video_from_image","description":"Generate a video that starts from a given image (i2v — image-to-video).\n\n    start_image_base64: raw base64-encoded image bytes, no data: URI prefix.\n    Mutual"},{"name":"generate_video_with_reference","description":"Generate a video using up to 3 reference images (r2v — e.g. a consistent\n    character/subject across the video). reference_images_base64: raw base64-encoded\n  "},{"name":"generate_character_image","description":"Generate a portrait or body image for an existing Flow character.\n\n    entity_id: the character's entityId — from create_character or\n    create_character_from_"},{"name":"create_character","description":"Create a new, empty Flow character (just gets you an entity_id — no portrait/body,\n    no description yet). Plain HTTP, no browser involved.\n\n    Low-level buil"},{"name":"create_character_from_photo","description":"Create a new Flow character whose portrait (and optionally body) is a REAL\n    PHOTO, not a text description or generation. Both photos become the character's\n "},{"name":"create_character_from_description","description":"Invent a new character from a text description and generate its portrait — the\n    full \"make me a character, no photo involved\" path in ONE call, instead of gl"},{"name":"list_characters","description":"List the characters YOU created (create_character_from_description, or\n    create_character_from_photo with name=...) and can now generate more images of\n    vi"},{"name":"generate_character_turnaround","description":"Generate a single image showing the character's FULL BODY from 3 angles\n    (front/side/back) in one row, labeled — a \"turnaround sheet\". Pure HTTP as of\n    20"},{"name":"generate_character_expression_sheet","description":"Generate a single image showing the character's FACE with several different\n    expressions in one row, labeled — an \"expression sheet\". Same job type and same\n"},{"name":"create_project","description":"Create a NEW Flow project on one of your farm accounts and return its project_id.\n\n    Use this to give every one of YOUR OWN clients their own namespace: creat"},{"name":"check_credits","description":"Check projects for a farm account (or all). NOTE: for the credit BALANCE and a\n    full at-a-glance overview, prefer `flow_dashboard()` — it returns real credit"},{"name":"flow_dashboard","description":"The account-pool control panel: for EVERY farm account, the real credit\n    balance, subscription tier, project count, and health status, plus totals — one\n    "},{"name":"update_character","description":"Save a character's display name and/or personality notes. Without this, a\n    character stays 'Untitled Character' with no description even after portrait/body\n"},{"name":"upscale_image","description":"Upscale an existing generated image (from a prior generate_image call) to a\n    higher resolution, via Flow's own Download panel -- the same \"1K/2K/4K\" picker\n "},{"name":"upscale_video","description":"Upscale an existing generated video (from a prior generate_video call) to a\n    higher resolution, via Flow's own grid-view download menu (the \"270p/720p/1080p/"},{"name":"check_job","description":"Check the status/result of a job previously returned by generate_image,\n    generate_video, generate_video_from_image, or generate_video_with_reference.\n\n    Be"},{"name":"fetch_media","description":"Download a generated media file (video, frame) and return its bytes,\n    base64-encoded, so the file can be saved or shown even though the media endpoint\n    is"},{"name":"add_account_token","description":"Attach one of YOUR OWN Google accounts to the pool using an oauth_token captured\n    on the USER'S OWN machine (password/2FA never leave it). This is the self-s"},{"name":"flow_status","description":"What this key still needs before it can do everything — READ-ONLY, spends nothing.\n\n    Call this BEFORE the first generation of a session, whenever a call is r"},{"name":"flow_health","description":"Check whether the Flow generation backend is reachable and see current queue\n    depth (queued + warming + running jobs). Note: the Android emulator is now OFF "},{"name":"list_models","description":"List every valid model id this service accepts — READ-ONLY, spends no credits,\n    calls nothing outside this service. Call this BEFORE generate_image/generate_"}],"toolCount":35,"serverName":"openFlowAPI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-09-07T12:24:09.079Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":37,"error":null,"detail":{"tools":[{"name":"generate_with_face","description":"Generate a NEW image of the SAME PERSON/character as an existing photo or\n    portrait — dress them differently, move them somewhere else, make an avatar. This\n"},{"name":"generate_image","description":"Generate an image from a text prompt via Google Flow.\n\n    model — pass ONE of these exact ids (from GET v1/flow/models, verified 2026-07-25):\n      NARWHAL    "},{"name":"music_generate","description":"Generate a full song from a text brief via Google Flow Music (Lyria).\n\n    prompt — free text: genre, mood, BPM, instruments, and whether you want vocals or an\n"},{"name":"music_chat","description":"Talk to the Google Flow Music Producer agent instead of one-shotting a track.\n\n    Use this when the work is a conversation rather than a single brief: asking w"},{"name":"music_stems","description":"Split a track we generated into stems (vocals, instrumental, drums, bass, …).\n\n    clip_id — the id of a clip returned by music_generate (or music_video's song)"},{"name":"music_list","description":"List the user's music tracks."},{"name":"music_get","description":"Get metadata for a single music track."},{"name":"music_download","description":"Download the raw .m4a file of a track to the server."},{"name":"music_credits","description":"Check remaining flowmusic credits and subscription tier."},{"name":"generate_scene","description":"Build a location precisely from a scene-layout/v2 map and generate its plate.\n\n    This is the \"exact location building\" path: instead of describing the room in"},{"name":"generate_video","description":"Generate a video from a text prompt via Google Flow (Veo models).\n\n    video_model_key options: abra_t2v_4s (default, 7 credits), veo_3_1_t2v_lite\n    (10cr, vi"},{"name":"edit_video","description":"Rewrite a video this service already generated, from a plain description:\n    \"make the sky stormy\", \"take the passer-by out of the shot\", \"warmer light\".\n\n    "},{"name":"extend_video","description":"Continue a video this service already generated — Flow writes what happens next.\n\n    media_id: the id from a previous generate_video* result (the bare id, not "},{"name":"generate_video_between_frames","description":"Generate the transition between TWO given frames: the video starts at the first\n    image and ends at the second one, Flow invents everything in between.\n\n    T"},{"name":"generate_video_from_image","description":"Generate a video that starts from a given image (i2v — image-to-video).\n\n    start_image_base64: raw base64-encoded image bytes, no data: URI prefix.\n    Mutual"},{"name":"generate_video_with_reference","description":"Generate a video using up to 3 reference images (r2v — e.g. a consistent\n    character/subject across the video). reference_images_base64: raw base64-encoded\n  "},{"name":"generate_character_image","description":"Generate a portrait or body image for an existing Flow character.\n\n    entity_id: the character's entityId — from create_character or\n    create_character_from_"},{"name":"create_character","description":"Create a new, empty Flow character (just gets you an entity_id — no portrait/body,\n    no description yet). Plain HTTP, no browser involved.\n\n    Low-level buil"},{"name":"create_character_from_photo","description":"Create a new Flow character whose portrait (and optionally body) is a REAL\n    PHOTO, not a text description or generation. Both photos become the character's\n "},{"name":"create_character_from_description","description":"Invent a new character from a text description and generate its portrait — the\n    full \"make me a character, no photo involved\" path in ONE call, instead of gl"},{"name":"list_characters","description":"List the characters YOU created (create_character_from_description, or\n    create_character_from_photo with name=...) and can now generate more images of\n    vi"},{"name":"generate_character_turnaround","description":"Generate a single image showing the character's FULL BODY from 3 angles\n    (front/side/back) in one row, labeled — a \"turnaround sheet\". Pure HTTP as of\n    20"},{"name":"generate_character_expression_sheet","description":"Generate a single image showing the character's FACE with several different\n    expressions in one row, labeled — an \"expression sheet\". Same job type and same\n"},{"name":"create_project","description":"Create a NEW Flow project on one of your farm accounts and return its project_id.\n\n    Use this to give every one of YOUR OWN clients their own namespace: creat"},{"name":"check_credits","description":"Check projects for a farm account (or all). NOTE: for the credit BALANCE and a\n    full at-a-glance overview, prefer `flow_dashboard()` — it returns real credit"},{"name":"flow_dashboard","description":"The account-pool control panel: for EVERY farm account, the real credit\n    balance, subscription tier, project count, and health status, plus totals — one\n    "},{"name":"update_character","description":"Save a character's display name and/or personality notes. Without this, a\n    character stays 'Untitled Character' with no description even after portrait/body\n"},{"name":"upscale_image","description":"Upscale an existing generated image (from a prior generate_image call) to a\n    higher resolution, via Flow's own Download panel -- the same \"1K/2K/4K\" picker\n "},{"name":"upscale_video","description":"Upscale an existing generated video (from a prior generate_video call) to a\n    higher resolution, via Flow's own grid-view download menu (the \"270p/720p/1080p/"},{"name":"check_job","description":"Check the status/result of a job previously returned by generate_image,\n    generate_video, generate_video_from_image, or generate_video_with_reference.\n\n    Be"},{"name":"fetch_media","description":"Download a generated media file (video, frame) and return its bytes,\n    base64-encoded, so the file can be saved or shown even though the media endpoint\n    is"},{"name":"add_account_token","description":"Attach one of YOUR OWN Google accounts to the pool using an oauth_token captured\n    on the USER'S OWN machine (password/2FA never leave it). This is the self-s"},{"name":"flow_status","description":"What this key still needs before it can do everything — READ-ONLY, spends nothing.\n\n    Call this BEFORE the first generation of a session, whenever a call is r"},{"name":"flow_health","description":"Check whether the Flow generation backend is reachable and see current queue\n    depth (queued + warming + running jobs). Note: the Android emulator is now OFF "},{"name":"list_models","description":"List every valid model id this service accepts — READ-ONLY, spends no credits,\n    calls nothing outside this service. Call this BEFORE generate_image/generate_"}],"toolCount":35,"serverName":"openFlowAPI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-09-07T04:26:23.587Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":26,"error":null,"detail":{"tools":[{"name":"generate_with_face","description":"Generate a NEW image of the SAME PERSON/character as an existing photo or\n    portrait — dress them differently, move them somewhere else, make an avatar. This\n"},{"name":"generate_image","description":"Generate an image from a text prompt via Google Flow.\n\n    model — pass ONE of these exact ids (from GET v1/flow/models, verified 2026-07-25):\n      NARWHAL    "},{"name":"music_generate","description":"Generate a full song from a text brief via Google Flow Music (Lyria).\n\n    prompt — free text: genre, mood, BPM, instruments, and whether you want vocals or an\n"},{"name":"music_chat","description":"Talk to the Google Flow Music Producer agent instead of one-shotting a track.\n\n    Use this when the work is a conversation rather than a single brief: asking w"},{"name":"music_stems","description":"Split a track we generated into stems (vocals, instrumental, drums, bass, …).\n\n    clip_id — the id of a clip returned by music_generate (or music_video's song)"},{"name":"music_list","description":"List the user's music tracks."},{"name":"music_get","description":"Get metadata for a single music track."},{"name":"music_download","description":"Download the raw .m4a file of a track to the server."},{"name":"music_credits","description":"Check remaining flowmusic credits and subscription tier."},{"name":"generate_scene","description":"Build a location precisely from a scene-layout/v2 map and generate its plate.\n\n    This is the \"exact location building\" path: instead of describing the room in"},{"name":"generate_video","description":"Generate a video from a text prompt via Google Flow (Veo models).\n\n    video_model_key options: abra_t2v_4s (default, 7 credits), veo_3_1_t2v_lite\n    (10cr, vi"},{"name":"edit_video","description":"Rewrite a video this service already generated, from a plain description:\n    \"make the sky stormy\", \"take the passer-by out of the shot\", \"warmer light\".\n\n    "},{"name":"extend_video","description":"Continue a video this service already generated — Flow writes what happens next.\n\n    media_id: the id from a previous generate_video* result (the bare id, not "},{"name":"generate_video_between_frames","description":"Generate the transition between TWO given frames: the video starts at the first\n    image and ends at the second one, Flow invents everything in between.\n\n    T"},{"name":"generate_video_from_image","description":"Generate a video that starts from a given image (i2v — image-to-video).\n\n    start_image_base64: raw base64-encoded image bytes, no data: URI prefix.\n    Mutual"},{"name":"generate_video_with_reference","description":"Generate a video using up to 3 reference images (r2v — e.g. a consistent\n    character/subject across the video). reference_images_base64: raw base64-encoded\n  "},{"name":"generate_character_image","description":"Generate a portrait or body image for an existing Flow character.\n\n    entity_id: the character's entityId — from create_character or\n    create_character_from_"},{"name":"create_character","description":"Create a new, empty Flow character (just gets you an entity_id — no portrait/body,\n    no description yet). Plain HTTP, no browser involved.\n\n    Low-level buil"},{"name":"create_character_from_photo","description":"Create a new Flow character whose portrait (and optionally body) is a REAL\n    PHOTO, not a text description or generation. Both photos become the character's\n "},{"name":"create_character_from_description","description":"Invent a new character from a text description and generate its portrait — the\n    full \"make me a character, no photo involved\" path in ONE call, instead of gl"},{"name":"list_characters","description":"List the characters YOU created (create_character_from_description, or\n    create_character_from_photo with name=...) and can now generate more images of\n    vi"},{"name":"generate_character_turnaround","description":"Generate a single image showing the character's FULL BODY from 3 angles\n    (front/side/back) in one row, labeled — a \"turnaround sheet\". Pure HTTP as of\n    20"},{"name":"generate_character_expression_sheet","description":"Generate a single image showing the character's FACE with several different\n    expressions in one row, labeled — an \"expression sheet\". Same job type and same\n"},{"name":"create_project","description":"Create a NEW Flow project on one of your farm accounts and return its project_id.\n\n    Use this to give every one of YOUR OWN clients their own namespace: creat"},{"name":"check_credits","description":"Check projects for a farm account (or all). NOTE: for the credit BALANCE and a\n    full at-a-glance overview, prefer `flow_dashboard()` — it returns real credit"},{"name":"flow_dashboard","description":"The account-pool control panel: for EVERY farm account, the real credit\n    balance, subscription tier, project count, and health status, plus totals — one\n    "},{"name":"update_character","description":"Save a character's display name and/or personality notes. Without this, a\n    character stays 'Untitled Character' with no description even after portrait/body\n"},{"name":"upscale_image","description":"Upscale an existing generated image (from a prior generate_image call) to a\n    higher resolution, via Flow's own Download panel -- the same \"1K/2K/4K\" picker\n "},{"name":"upscale_video","description":"Upscale an existing generated video (from a prior generate_video call) to a\n    higher resolution, via Flow's own grid-view download menu (the \"270p/720p/1080p/"},{"name":"check_job","description":"Check the status/result of a job previously returned by generate_image,\n    generate_video, generate_video_from_image, or generate_video_with_reference.\n\n    Be"},{"name":"fetch_media","description":"Download a generated media file (video, frame) and return its bytes,\n    base64-encoded, so the file can be saved or shown even though the media endpoint\n    is"},{"name":"add_account_token","description":"Attach one of YOUR OWN Google accounts to the pool using an oauth_token captured\n    on the USER'S OWN machine (password/2FA never leave it). This is the self-s"},{"name":"flow_status","description":"What this key still needs before it can do everything — READ-ONLY, spends nothing.\n\n    Call this BEFORE the first generation of a session, whenever a call is r"},{"name":"flow_health","description":"Check whether the Flow generation backend is reachable and see current queue\n    depth (queued + warming + running jobs). Note: the Android emulator is now OFF "},{"name":"list_models","description":"List every valid model id this service accepts — READ-ONLY, spends no credits,\n    calls nothing outside this service. Call this BEFORE generate_image/generate_"}],"toolCount":35,"serverName":"openFlowAPI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-09-06T21:27:17.812Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":20,"error":null,"detail":{"tools":[{"name":"generate_with_face","description":"Generate a NEW image of the SAME PERSON/character as an existing photo or\n    portrait — dress them differently, move them somewhere else, make an avatar. This\n"},{"name":"generate_image","description":"Generate an image from a text prompt via Google Flow.\n\n    model — pass ONE of these exact ids (from GET v1/flow/models, verified 2026-07-25):\n      NARWHAL    "},{"name":"music_generate","description":"Generate a full song from a text brief via Google Flow Music (Lyria).\n\n    prompt — free text: genre, mood, BPM, instruments, and whether you want vocals or an\n"},{"name":"music_chat","description":"Talk to the Google Flow Music Producer agent instead of one-shotting a track.\n\n    Use this when the work is a conversation rather than a single brief: asking w"},{"name":"music_stems","description":"Split a track we generated into stems (vocals, instrumental, drums, bass, …).\n\n    clip_id — the id of a clip returned by music_generate (or music_video's song)"},{"name":"music_list","description":"List the user's music tracks."},{"name":"music_get","description":"Get metadata for a single music track."},{"name":"music_download","description":"Download the raw .m4a file of a track to the server."},{"name":"music_credits","description":"Check remaining flowmusic credits and subscription tier."},{"name":"generate_scene","description":"Build a location precisely from a scene-layout/v2 map and generate its plate.\n\n    This is the \"exact location building\" path: instead of describing the room in"},{"name":"generate_video","description":"Generate a video from a text prompt via Google Flow (Veo models).\n\n    video_model_key options: abra_t2v_4s (default, 7 credits), veo_3_1_t2v_lite\n    (10cr, vi"},{"name":"edit_video","description":"Rewrite a video this service already generated, from a plain description:\n    \"make the sky stormy\", \"take the passer-by out of the shot\", \"warmer light\".\n\n    "},{"name":"extend_video","description":"Continue a video this service already generated — Flow writes what happens next.\n\n    media_id: the id from a previous generate_video* result (the bare id, not "},{"name":"generate_video_between_frames","description":"Generate the transition between TWO given frames: the video starts at the first\n    image and ends at the second one, Flow invents everything in between.\n\n    T"},{"name":"generate_video_from_image","description":"Generate a video that starts from a given image (i2v — image-to-video).\n\n    start_image_base64: raw base64-encoded image bytes, no data: URI prefix.\n    Mutual"},{"name":"generate_video_with_reference","description":"Generate a video using up to 3 reference images (r2v — e.g. a consistent\n    character/subject across the video). reference_images_base64: raw base64-encoded\n  "},{"name":"generate_character_image","description":"Generate a portrait or body image for an existing Flow character.\n\n    entity_id: the character's entityId — from create_character or\n    create_character_from_"},{"name":"create_character","description":"Create a new, empty Flow character (just gets you an entity_id — no portrait/body,\n    no description yet). Plain HTTP, no browser involved.\n\n    Low-level buil"},{"name":"create_character_from_photo","description":"Create a new Flow character whose portrait (and optionally body) is a REAL\n    PHOTO, not a text description or generation. Both photos become the character's\n "},{"name":"create_character_from_description","description":"Invent a new character from a text description and generate its portrait — the\n    full \"make me a character, no photo involved\" path in ONE call, instead of gl"},{"name":"list_characters","description":"List the characters YOU created (create_character_from_description, or\n    create_character_from_photo with name=...) and can now generate more images of\n    vi"},{"name":"generate_character_turnaround","description":"Generate a single image showing the character's FULL BODY from 3 angles\n    (front/side/back) in one row, labeled — a \"turnaround sheet\". Pure HTTP as of\n    20"},{"name":"generate_character_expression_sheet","description":"Generate a single image showing the character's FACE with several different\n    expressions in one row, labeled — an \"expression sheet\". Same job type and same\n"},{"name":"create_project","description":"Create a NEW Flow project on one of your farm accounts and return its project_id.\n\n    Use this to give every one of YOUR OWN clients their own namespace: creat"},{"name":"check_credits","description":"Check projects for a farm account (or all). NOTE: for the credit BALANCE and a\n    full at-a-glance overview, prefer `flow_dashboard()` — it returns real credit"},{"name":"flow_dashboard","description":"The account-pool control panel: for EVERY farm account, the real credit\n    balance, subscription tier, project count, and health status, plus totals — one\n    "},{"name":"update_character","description":"Save a character's display name and/or personality notes. Without this, a\n    character stays 'Untitled Character' with no description even after portrait/body\n"},{"name":"upscale_image","description":"Upscale an existing generated image (from a prior generate_image call) to a\n    higher resolution, via Flow's own Download panel -- the same \"1K/2K/4K\" picker\n "},{"name":"upscale_video","description":"Upscale an existing generated video (from a prior generate_video call) to a\n    higher resolution, via Flow's own grid-view download menu (the \"270p/720p/1080p/"},{"name":"check_job","description":"Check the status/result of a job previously returned by generate_image,\n    generate_video, generate_video_from_image, or generate_video_with_reference.\n\n    Be"},{"name":"fetch_media","description":"Download a generated media file (video, frame) and return its bytes,\n    base64-encoded, so the file can be saved or shown even though the media endpoint\n    is"},{"name":"add_account_token","description":"Attach one of YOUR OWN Google accounts to the pool using an oauth_token captured\n    on the USER'S OWN machine (password/2FA never leave it). This is the self-s"},{"name":"flow_status","description":"What this key still needs before it can do everything — READ-ONLY, spends nothing.\n\n    Call this BEFORE the first generation of a session, whenever a call is r"},{"name":"flow_health","description":"Check whether the Flow generation backend is reachable and see current queue\n    depth (queued + warming + running jobs). Note: the Android emulator is now OFF "},{"name":"list_models","description":"List every valid model id this service accepts — READ-ONLY, spends no credits,\n    calls nothing outside this service. Call this BEFORE generate_image/generate_"}],"toolCount":35,"serverName":"openFlowAPI","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}}],"tools":[{"name":"generate_with_face","description":"Generate a NEW image of the SAME PERSON/character as an existing photo or\n    portrait — dress them differently, move them somewhere else, make an avatar. This\n"},{"name":"generate_image","description":"Generate an image from a text prompt via Google Flow.\n\n    model — pass ONE of these exact ids (from GET v1/flow/models, verified 2026-07-25):\n      NARWHAL    "},{"name":"music_generate","description":"Generate a full song from a text brief via Google Flow Music (Lyria).\n\n    prompt — free text: genre, mood, BPM, instruments, and whether you want vocals or an\n"},{"name":"music_chat","description":"Talk to the Google Flow Music Producer agent instead of one-shotting a track.\n\n    Use this when the work is a conversation rather than a single brief: asking w"},{"name":"music_stems","description":"Split a track we generated into stems (vocals, instrumental, drums, bass, …).\n\n    clip_id — the id of a clip returned by music_generate (or music_video's song)"},{"name":"music_list","description":"List the user's music tracks."},{"name":"music_get","description":"Get metadata for a single music track."},{"name":"music_download","description":"Download the raw .m4a file of a track to the server."},{"name":"music_credits","description":"Check remaining flowmusic credits and subscription tier."},{"name":"generate_scene","description":"Build a location precisely from a scene-layout/v2 map and generate its plate.\n\n    This is the \"exact location building\" path: instead of describing the room in"},{"name":"generate_video","description":"Generate a video from a text prompt via Google Flow (Veo models).\n\n    video_model_key options: abra_t2v_4s (default, 7 credits), veo_3_1_t2v_lite\n    (10cr, vi"},{"name":"edit_video","description":"Rewrite a video this service already generated, from a plain description:\n    \"make the sky stormy\", \"take the passer-by out of the shot\", \"warmer light\".\n\n    "},{"name":"extend_video","description":"Continue a video this service already generated — Flow writes what happens next.\n\n    media_id: the id from a previous generate_video* result (the bare id, not "},{"name":"generate_video_between_frames","description":"Generate the transition between TWO given frames: the video starts at the first\n    image and ends at the second one, Flow invents everything in between.\n\n    T"},{"name":"generate_video_from_image","description":"Generate a video that starts from a given image (i2v — image-to-video).\n\n    start_image_base64: raw base64-encoded image bytes, no data: URI prefix.\n    Mutual"},{"name":"generate_video_with_reference","description":"Generate a video using up to 3 reference images (r2v — e.g. a consistent\n    character/subject across the video). reference_images_base64: raw base64-encoded\n  "},{"name":"generate_character_image","description":"Generate a portrait or body image for an existing Flow character.\n\n    entity_id: the character's entityId — from create_character or\n    create_character_from_"},{"name":"create_character","description":"Create a new, empty Flow character (just gets you an entity_id — no portrait/body,\n    no description yet). Plain HTTP, no browser involved.\n\n    Low-level buil"},{"name":"create_character_from_photo","description":"Create a new Flow character whose portrait (and optionally body) is a REAL\n    PHOTO, not a text description or generation. Both photos become the character's\n "},{"name":"create_character_from_description","description":"Invent a new character from a text description and generate its portrait — the\n    full \"make me a character, no photo involved\" path in ONE call, instead of gl"},{"name":"list_characters","description":"List the characters YOU created (create_character_from_description, or\n    create_character_from_photo with name=...) and can now generate more images of\n    vi"},{"name":"generate_character_turnaround","description":"Generate a single image showing the character's FULL BODY from 3 angles\n    (front/side/back) in one row, labeled — a \"turnaround sheet\". Pure HTTP as of\n    20"},{"name":"generate_character_expression_sheet","description":"Generate a single image showing the character's FACE with several different\n    expressions in one row, labeled — an \"expression sheet\". Same job type and same\n"},{"name":"create_project","description":"Create a NEW Flow project on one of your farm accounts and return its project_id.\n\n    Use this to give every one of YOUR OWN clients their own namespace: creat"},{"name":"check_credits","description":"Check projects for a farm account (or all). NOTE: for the credit BALANCE and a\n    full at-a-glance overview, prefer `flow_dashboard()` — it returns real credit"},{"name":"flow_dashboard","description":"The account-pool control panel: for EVERY farm account, the real credit\n    balance, subscription tier, project count, and health status, plus totals — one\n    "},{"name":"update_character","description":"Save a character's display name and/or personality notes. Without this, a\n    character stays 'Untitled Character' with no description even after portrait/body\n"},{"name":"upscale_image","description":"Upscale an existing generated image (from a prior generate_image call) to a\n    higher resolution, via Flow's own Download panel -- the same \"1K/2K/4K\" picker\n "},{"name":"upscale_video","description":"Upscale an existing generated video (from a prior generate_video call) to a\n    higher resolution, via Flow's own grid-view download menu (the \"270p/720p/1080p/"},{"name":"check_job","description":"Check the status/result of a job previously returned by generate_image,\n    generate_video, generate_video_from_image, or generate_video_with_reference.\n\n    Be"},{"name":"fetch_media","description":"Download a generated media file (video, frame) and return its bytes,\n    base64-encoded, so the file can be saved or shown even though the media endpoint\n    is"},{"name":"add_account_token","description":"Attach one of YOUR OWN Google accounts to the pool using an oauth_token captured\n    on the USER'S OWN machine (password/2FA never leave it). This is the self-s"},{"name":"flow_status","description":"What this key still needs before it can do everything — READ-ONLY, spends nothing.\n\n    Call this BEFORE the first generation of a session, whenever a call is r"},{"name":"flow_health","description":"Check whether the Flow generation backend is reachable and see current queue\n    depth (queued + warming + running jobs). Note: the Android emulator is now OFF "},{"name":"list_models","description":"List every valid model id this service accepts — READ-ONLY, spends no credits,\n    calls nothing outside this service. Call this BEFORE generate_image/generate_"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.molkex/omni-flash-veo3-nano-banana","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.molkex%2Fomni-flash-veo3-nano-banana","firstSeenAt":"2026-09-06T21:22:20.715Z","fetchedAt":"2026-09-06T21:22:20.715Z","normalizedAt":"2026-09-06T21:22:20.715Z"}]},"firstSeenAt":"2026-09-06T21:22:20.715Z","updatedAt":"2026-09-08T14:33:21.640Z"}