Open Google Image Generator MCP
Allows interaction with Google Cloud Vertex AI, providing tools for image generation, editing, analysis, background removal, upscaling, and more via Imagen and Gemini models.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Open Google Image Generator MCPgenerate an image of a cat wearing a hat"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Open Google Image Generator MCP
This project is a Model Context Protocol (MCP) server that exposes Google Cloud Vertex AI and Google GenAI SDK capabilities—Gemini (Nano Banana) image models, Gemini 3.x / 4 text models, Veo, Lyria, and Gemini TTS—to MCP-compatible clients. Built with the MCP Python SDK (FastMCP on mcp 1.x, MCPServer on mcp 2.x — both supported).
Current version: 3.3.0 — Image generation migrated from the shut-down Imagen 4 to the Gemini image family (
gemini-3.1-flash-lite-image,gemini-3.1-flash-image,gemini-nano-banana-2.1,gemini-3-pro-image) served from the Vertex AIglobalendpoint; Gemini 3.8 Flash / 4 Argon text models; Gemini 3.8 TTS with all 30 prebuilt voices; Lyria 3.5;mcp2.x compatibility.
Features & Tools
Image Tools
Tool | Description | Backend |
| Text-to-image generation. Supports aspect ratio, multiple images, and WebP/AVIF output. Negative prompt / seed / watermark / GCS output apply to legacy Imagen IDs only | Gemini image ( |
| Mask-guided inpaint/outpaint, background swap, product image, and prompt-driven edit (mask is sent to Gemini as a reference image). See Edit modes below | Gemini image ( |
| Free-form | Gemini image ( |
| Multimodal image understanding and Q&A. Supports | Gemini ( |
| Upscale to | Gemini image ( |
| Remove the background and save a transparent PNG. Optional | Gemini image + local chroma key ⁴ |
| Parallel batch text-to-image generation (up to 10 prompts, max 4 concurrent). All tiers supported | Gemini image |
| Sequential multi-step image processing pipeline (generate → edit → transform → …) | Mixed |
⁴ These three tools used Imagen until v3.3.0. As of 2026-10-16 every Imagen model (
imagen-3.0-capability-001,imagen-4.0-*,imagen-4.0-upscale-preview) returns HTTP 404 on Vertex AI in us-central1, us-west1, us-east4, europe-west4 and global (and Imagen 4 was shut down on the Gemini API on 2026-08-17), so they now run on Gemini image models. Gemini cannot emit an alpha channel, sotool_remove_backgroundasks the model to paint everything except the subject in a flat chroma-key colour and keys it out locally with Pillow. Gemini edits are instruction-guided, not pixel-exact: content outside the mask is preserved closely but not bit-for-bit. Legacyimagen-*IDs are still accepted asmodel_name.
Video Tools
Tool | Description | Backend |
| Text-to-video generation. Supports | Veo ( |
| Animate a still image into video. Supports optional | Veo ⁵ |
| Extend an existing video clip by 4, 6, or 8 seconds | Veo ⁵ |
| Insert or remove an object in a video via | Veo ⁵ |
| Video understanding and Q&A (max 20MB; mp4, mov, avi, webm, mkv) | Gemini GenAI SDK |
⁵ The four Veo tools are still placeholder stubs: they validate input and write a text placeholder to the output path instead of calling Veo. Note that Veo 3.1 is served from
us-central1andglobalbut returns 404 in other regions such asus-west1.
Audio Tools
Tool | Description | Backend |
| Text-to-speech with any of the 30 prebuilt Gemini voices (Kore, Puck, Zephyr, Charon, Aoede, …). Supports | Gemini TTS ( |
| Music generation from a text prompt | Lyria 3.5 / Lyria 3 (GenAI SDK) |
GenAI SDK Tools
Tool | Description | Backend |
| Text embeddings as float vectors | Gemini Embedding ( |
| Streaming text generation — response is accumulated and returned in full | Gemini ( |
Utility Tools
Tool | Description |
| Live-probes every candidate model in the configured project (Gemini models on |
| Register a local file for use as a reference image in subsequent tool calls (e.g. |
Edit modes (tool_edit_image)
| What it does | Mask required? |
| Prompt-driven full-image edit, no mask | No |
| Add an object into the masked region | Yes |
| Remove content in the masked region | Yes |
| Extend the image beyond its original bounds | Yes |
| Swap the background | No |
| Product reference styling | No |
All modes work with the Gemini image models (default gemini-3.1-flash-image; use gemini-3-pro-image for the most faithful edits). tool_edit_image also accepts model_tier.
When to use which "image + text → image" tool
Need | Use |
Mask-guided inpaint/outpaint/BG-swap, or a specific edit mode |
|
"Make it look like X" / style transfer / scene rewriting / multi-reference compositions |
|
Model tiers
Most tools accept a model_tier parameter:
Tier | Description |
| Lowest latency, lowest cost |
| Quality / speed trade-off |
| Higher quality, moderate latency |
| Maximum quality (Nano Banana Pro / Veo quality models) |
Model resolution by tier and tool
Tier |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tool_edit_image and tool_remove_background use the same tier mapping. tool_upscale_image needs 2K/4K output, so its fast/balanced tiers use gemini-3.1-flash-image (the lite model is 1K-only); quality → gemini-nano-banana-2.1, ultra → gemini-3-pro-image. tool_run_pipeline applies the same per-tool mappings.
GenAI SDK tools (tool_live_generate, tool_analyze_video, tool_generate_speech, tool_embed):
Tier |
|
|
|
|
|
|
|
|
| — | — |
|
|
| — |
¹
gemini-4-argonhas no Gemini API free tier (quota limit 0) — it needs a billed key or Vertex AI. ²gemini-embedding-2is used with a Gemini API key;gemini-embedding-001with Vertex AI ADC.Model IDs verified on 2026-10-16 against both catalogs.
gemini-2.5-pro/flash/flash-literetire on Vertex AI on 2026-10-20 and are no longer used as defaults.
Model availability: Vertex AI vs. Gemini API
Google exposes models through two separate endpoints with different model catalogs:
Endpoint | Auth | Image models | Text/speech models |
Vertex AI ( | ADC / Service Account |
|
|
Gemini API ( |
| same Gemini image family | same text/TTS models plus |
³ The Gemini 3.x image models (
gemini-3-pro-image,gemini-3.1-flash-lite-image,gemini-nano-banana-2.1) are served by Vertex AI only from thegloballocation — verified on 2026-10-16: they return HTTP 404 fromus-west1and HTTP 400 (exists) fromglobal. The same holds forgemini-4-argon,gemini-3.8-flash,gemini-3.5-flash(-lite),gemini-3.1-flash-liteand the 3.8 TTS models. This server therefore sends every Gemini:generateContentcall toGOOGLE_CLOUD_GEMINI_LOCATION(defaultglobal), and keeps Imagen/Veo onGOOGLE_CLOUD_LOCATION.Sources:
Gemini API model catalog: https://ai.google.dev/gemini-api/docs/models.md.txt
Gemini API deprecations: https://ai.google.dev/gemini-api/docs/deprecations
Vertex AI model catalog: https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/google-models.md.txt
Vertex AI model versions & retirements: https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/model-versions
Vertex AI available models (live probe): run
tool_list_available_modelsin your project
Output formats
tool_generate_image, tool_edit_image, tool_transform_image, and tool_upscale_image accept a save_format / output_format parameter:
Format | Notes |
| Lossless |
| Smaller files, lossy. |
| Modern lossless/lossy, wide browser support |
| Best compression, requires |
Error handling
All tools return a uniform error shape:
{
"success": false,
"error": {
"code": 404,
"model": "gemini-9.9-nonexistent",
"endpoint": ":generateContent",
"message": "Publisher Model `...` is not found.",
"hint": "Model '...' not found in project '...' / location '...'. Try: gemini-3.1-flash-image.",
"docs_url": "https://docs.cloud.google.com/...",
"log_path": ".../logs/vertex_ai_mcp.log",
"duration_s": 0.42
}
}HTTP code | What you'll see in |
400 | Vertex's parameter-validation message verbatim |
401 | "Run |
403 | IAM role hint ( |
404 | Live alternatives from the probe cache ( |
429 |
|
500/502/503/504 | "Safe to retry once" |
| After 90s — suggests a |
| Client-side validation failure (mask missing, file not found, etc.); no HTTP call is made |
Full request/response logs are written to logs/vertex_ai_mcp.log.
Resources & Prompts
Local Resources (
local://outputs/{filename}): Generated and processed media files are exposed as MCP resources for seamless display in MCP clients (Claude Desktop, Cursor, etc.).Pre-built Prompts: Includes specialized prompt templates for
character_design,logo_concept, andUI_UX_mockup.
Related MCP server: nano-banana-mcp
Prerequisites & Resources
Python 3.10 or newer
Google Cloud Account with an active project
Vertex AI API enabled in your project
Google Cloud CLI (
gcloud) installed and configured
For GenAI SDK tools (tool_embed, tool_analyze_video, tool_generate_speech, tool_live_generate, tool_generate_music), you additionally need one of:
A Cloud API Key (
GOOGLE_CLOUD_API_KEY) — created in GCP Console, uses your existing GCP billing. Enables newer models likegemini-3.5-flash. (Recommended)A Gemini API key (
GOOGLE_GENAI_API_KEY) — from AI Studio, separate billing.Vertex AI ADC — set
GOOGLE_GENAI_BACKEND=vertexai, usesgcloud auth application-default login.Service Account JSON (
GOOGLE_APPLICATION_CREDENTIALS) — see below.
Cloud API Key setup: Run
gcloud services enable generativelanguage.googleapis.com apikeys.googleapis.comthengcloud services api-keys create --display-name="GeminiKey". The key string appears in the command output — copy it directly to.env.
Installation & Setup
Option A: Install from PyPI
pip install open-google-image-generator-mcpOption B: Clone the Repository
git clone https://github.com/miracorhan/OpenGoogleImageGeneratorMCP.git
cd OpenGoogleImageGeneratorMCP
pip install -r requirements.txtAuthentication
Choose one of the following methods:
Option A — User account (interactive login):
gcloud auth application-default loginOpens a browser. Use an account that has access to your Google Cloud project.
Option B — Service Account JSON key:
# Download key: GCP Console → IAM & Admin → Service Accounts → Keys → Add Key → JSON
# Required role: Vertex AI User (roles/aiplatform.user)Set in .env:
GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\service-account-key.jsonBoth vertex_ai_tools (Imagen, Veo, Lyria) and genai_tools (embed, speech, video analysis, live) pick up the SA JSON automatically. No gcloud CLI required when using a service account key.
Environment Configuration
Create a .env file in the project root:
# Required
GOOGLE_CLOUD_PROJECT=your-google-cloud-project-id
GOOGLE_CLOUD_LOCATION=us-central1
# Optional: location for Gemini :generateContent calls (Gemini 3.x image/text
# models are served from `global` only). Imagen/Veo keep GOOGLE_CLOUD_LOCATION.
# GOOGLE_CLOUD_GEMINI_LOCATION=global
# Output directory for generated media
DEFAULT_OUTPUT_DIR=./outputs
# --- GenAI SDK (for embed, speech, live, music, video-analysis tools) ---
# Option A: Cloud API Key (recommended — uses GCP billing, enables gemini-3.5-flash)
# Create: gcloud services enable generativelanguage.googleapis.com apikeys.googleapis.com
# gcloud services api-keys create --display-name="GeminiKey"
GOOGLE_CLOUD_API_KEY=AIza...
# Option B: Gemini API key (AI Studio, separate billing, free tier available)
# GOOGLE_GENAI_BACKEND=gemini_api
# GOOGLE_GENAI_API_KEY=AIza...
# Option C: Vertex AI ADC (no key needed, uses gcloud auth application-default login)
# GOOGLE_GENAI_BACKEND=vertexai
# Option D: Service Account JSON key (no gcloud CLI required)
# Download: GCP Console → IAM & Admin → Service Accounts → Keys → Add Key → JSON
# Required role: Vertex AI User (roles/aiplatform.user)
# GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\service-account-key.json
# --- Advanced Vertex AI Authentication (Optional) ---
# Direct OAuth 2.0 Access Token
# GOOGLE_ACCESS_TOKEN=ya29.a0AfB_by...
# Service Account Impersonation
# IMPERSONATE_SERVICE_ACCOUNT=your-service-account@your-project.iam.gserviceaccount.comUsage
Running as a Standalone Script
python mcp_server.pyIntegrating with MCP Clients
For Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"OpenGoogleImageGenerator": {
"command": "python",
"args": ["/absolute/path/to/OpenGoogleImageGeneratorMCP/mcp_server.py"],
"env": {
"GOOGLE_CLOUD_PROJECT": "your-google-cloud-project-id",
"GOOGLE_CLOUD_LOCATION": "us-central1",
"GOOGLE_GENAI_API_KEY": "AIza..."
}
}
}
}Replace /absolute/path/to/your/... with the actual path, and use the correct Python executable if using a virtual environment.
Example prompts
"Generate an image of a futuristic city at sunset."
"Edit this banner — add a glowing cyan halo around the logo." (
tool_edit_image,EDIT_MODE_DEFAULT)"Transform this photo into a hand-drawn pencil sketch." (
tool_transform_image)"Remove the background from the image I just generated."
"Analyze this image and tell me what objects are present."
"Generate 8 product shots in parallel with different backgrounds." (
tool_batch_generate)"Run a pipeline: generate → remove background → upscale." (
tool_run_pipeline)"Convert this text to speech using the Kore voice." (
tool_generate_speech)"Generate a 30-second ambient music track." (
tool_generate_music)"Embed this sentence for semantic search." (
tool_embed)"Animate this product photo into a 5-second video." (
tool_image_to_video)"Generate a video of a sunset with audio." (
tool_generate_video,audio_enabled=true)
Troubleshooting
Symptom | Cause | Fix |
| ADC token expired |
|
| Same ADC expiry, probe skipped | Re-authenticate (above) |
| Service account missing role | Grant |
| Wrong path in | Use an absolute path; forward slashes or escaped backslashes |
| Key used with Vertex AI endpoint (rejects keys) | Ensure |
|
|
|
| Google's key-validation error is identical whether the key is dead or | Confirm with |
|
|
|
| The TTS-preview, live-preview, and embedding-preview models used by these tools are not published to the Vertex AI publisher catalog — Vertex AI/ADC is not a usable fallback for them, unlike image models | Use |
Worried a GenAI SDK call will charge your Cloud Billing / free-trial credit | Once billing is enabled on a project, the Gemini API free tier is gone entirely for that project — every call becomes billable from the first token, and some promotional/free-trial credits explicitly exclude Gemini API usage regardless | For risk-free testing, create a separate GCP project with no billing account attached at all and generate its AI Studio key there ( |
Edited |
| Reconnect the MCP server ( |
|
| Omit |
| These models are served from the | Leave |
| Imagen 4 has been shut down (Gemini API: 2026-08-17) | Use |
| These models only accept | Handled automatically by |
| The model has no Gemini API free tier | Use a billed key, Vertex AI, or a lower tier ( |
| Server older than v3.3.0 installed with | Update the server (v3.3.0 supports both |
| Model not available in your project/region | Run |
| Wrong command prefix | Use |
Security: The Cloud API Key string appears in plaintext in
gcloud services api-keys createoutput. Copy it directly to.env— never paste it into a chat, commit, or log. Revoke a leaked key immediately withgcloud services api-keys delete KEY_ID.
Author & License
Developer: Mirac Orhan (mirac.orhan@gmail.com)
License: MIT License (Open Source — Free for everyone to use, modify, and distribute)
Available Tools
19 toolstool_analyze_imageC
Analyze an image using a multimodal prompt with Vertex AI.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It reveals only that a multimodal prompt is sent to Vertex AI; it says nothing about whether this is a read-only operation, whether the image must already be uploaded, latency/cost behavior, or what the returned analysis looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or padding. It is efficient, though arguably under-specified rather than truly concise.
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 annotations, no output schema, and no parameter guidance, this is too thin for a tool that takes a configurable vision model and reasoning level. An agent cannot tell what it receives back or how to interpret the result.
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?
Reported schema description coverage is 0%, and the description adds no parameter meaning at all — it never mentions the prompt, image path, model selection, thinking level, or media resolution. Whatever documentation exists is buried in nested $defs, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Analyze) plus resource (image) and adds the mechanism ('multimodal prompt with Vertex AI'), which is more than a name restatement. It does not, however, distinguish itself from close siblings like tool_analyze_video, tool_transform_image, or tool_edit_image, leaving that differentiation to the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as the image-editing or video-analysis siblings. The agent is left to infer the use case entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_analyze_videoB
Analyze a local video file using Gemini Vision. Supports mp4, mov, avi, webm, mkv. Max 20MB inline.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does contribute real constraints: supported container formats (mp4, mov, avi, webm, mkv) and a 20MB inline size limit. However it says nothing about what is returned (text analysis?), latency, whether the file leaves the machine, or auth requirements for the model backend.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the hard constraints; no filler. Slightly terse in that it never states an outcome, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description is the only place a caller could learn what comes back, and it is silent on the return shape. Combined with zero usage guidance against 18 sibling tools, an agent has enough to invoke it but not enough to predict or route confidently.
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 reported at 0% at the top level, so the description must compensate; it does add the format and size semantics for video_path but says nothing about prompt, model, or model_tier selection. The nested $defs do carry descriptions for those params, which partially offsets the gap, keeping this at minimum-viable rather than deficient.
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 ("Analyze a local video file"), naming the engine (Gemini Vision), which distinguishes it from sibling image/video tools at a glance. It does not explicitly contrast itself with tool_analyze_image or tool_generate_video, so it falls short of the 5-level sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of when to pick this over tool_analyze_image for still frames or over video-generation siblings, and no prerequisites. The description only describes capability, leaving selection entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_batch_generateA
Generate images for multiple prompts in a single call (max 10, max 4 concurrent).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add genuine behavioral facts: a cap of 10 prompts and 4 concurrent generations. It omits what happens on partial failure (does one bad prompt abort the batch?), whether the call is safe/read-only-side-effect-free, and typical latency for a 10-prompt batch.
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 tight sentence with the operation front-loaded and the constraints parenthesized, no filler whatsoever. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch mutation-style tool with no annotations and no output schema, the description is adequate but thin: it never states the return shape (per-prompt results? a list of file paths?), the failure mode, or how output files are named beyond what the schema says. An agent could call it correctly but not predict its response.
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?
Top-level schema description coverage is reported at 0% (the single `params` wrapper), though the nested BatchGenerateParams object does document each field, including its own "max 10" note. The description adds only the concurrency figure, leaving model_tier override behavior, output_prefix naming, and output_dir defaults to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Generate images") plus an explicit scope ("for multiple prompts in a single call"), which cleanly separates it from the single-prompt sibling tool_generate_image. It does not name that sibling explicitly, so it lands just short of a 5.
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?
Batch usage is implied by "multiple prompts in a single call," which tells an agent this is the bulk path, but there is no explicit when-to-use/when-not guidance and no named alternative such as tool_generate_image for single-prompt work or tool_run_pipeline for chained work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_edit_imageA
Image editing via Gemini image models — mask-guided inpaint/outpaint, background swap, product image, or mask-free prompt-driven edit. For free-form natural-language transforms (style transfer, scene rewriting), use tool_transform_image instead.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the mode taxonomy and that some modes are mask-guided versus prompt-driven, which is useful context, but says nothing about side effects (does it overwrite the base image or write only to output_path?), auth/API-key requirements, cost, or latency. That leaves meaningful behavioral gaps for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the capability enumeration front-loaded and the disambiguation clause placed last. Every phrase earns its place and nothing is repeated from the 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?
The description is adequate for identifying and selecting the tool, and the nested schema covers parameters well. However, with no annotations and no output schema, it omits what the tool returns or where results land, and the requirement that mask-required modes need a mask is only discoverable in the schema. For a file-producing edit tool this leaves a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The top-level coverage metric is 0% because the single 'params' wrapper is undocumented, but every nested property (prompt, edit_mode, model_name, mask_image_path, etc.) carries a rich schema description, so the schema itself does the heavy lifting. The description adds no parameter-level detail beyond what the schema already provides, which is the expected baseline when the schema is self-documenting.
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 ('Image editing via Gemini image models') and enumerates the concrete sub-capabilities: mask-guided inpaint/outpaint, background swap, product image, and mask-free prompt-driven edit. It also names the sibling it is not (tool_transform_image), so an agent can distinguish it 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?
Explicitly routes free-form natural-language transforms (style transfer, scene rewriting) to tool_transform_image, giving a clear selection condition. It stops short of covering the other plausible alternatives (tool_generate_image, tool_analyze_image, tool_upscale_image) or stating when this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_embedC
Generate a float embedding vector for the given text using Gemini Embedding.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only that a float vector is returned; it says nothing about vector dimensionality, cost/quota implications, authentication requirements, or whether the call is idempotent/cacheable. For an un-annotated tool this is a meaningful gap.
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, front-loaded sentence with the verb and output type leading. It is efficient with no wasted clauses, though it is arguably under-specified rather than truly concise.
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 single-input embedding tool with no output schema and no annotations, the description covers the core purpose but omits output shape (dimension/size of the vector), model selection implications, and any usage context, leaving the agent to infer more than it should.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information at all. Reported schema description coverage is 0%, and while the nested schema does carry some per-field text, the description does not compensate by explaining the text input or the model override, which is the one field an agent would most need contextualized.
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 ('Generate a float embedding vector') plus the provider ('Gemini Embedding'), which is enough for an agent to distinguish it from the media-generation siblings (images, video, music, speech). It does not explicitly name or contrast against any sibling, but the embedding task is inherently distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use embeddings versus other tools, no mention of batch vs single-text usage, no note about when to prefer this over other analysis tools, and no prerequisites or constraints. The agent gets the what but not the when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_extend_videoC
Extend an existing video by generating additional seconds at the end.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden and falls short. It does not disclose auth/permission needs, cost, model selection behavior, or what happens to the original file; it only restates the basic extend operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, clearly stating the action and result. It is efficient, though its brevity contributes to the gaps elsewhere.
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 generation/mutation tool with no annotations, no output schema, and 7 sub-parameters including an enum and output-path resolution rules, the description is too thin. It should explain output handling, model/tier choice, and length options.
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 reported at 0% and the top-level 'params' object is undocumented. The description only loosely gestures at extra_seconds ('additional seconds') and says nothing about prompt, model_name/model_tier, or the output path/filename distinction.
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 (extend), resource (existing video), and mechanism (generating additional seconds at the end). An agent can distinguish it from generate_video and image_to_video, though it never names those siblings explicitly.
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 no when-to-use or when-not-to-use guidance and never points to alternatives like tool_generate_video or tool_image_to_video. The only implied cue is that the source must already be a video.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_generate_imageA
Generate an image from a text prompt using Vertex AI Gemini image models (Nano Banana). Use model_tier for simple model selection: fast/balanced/quality/ultra. negative_prompt / seed / watermark / safety / storage_uri apply to legacy Imagen models only.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose a non-obvious behavioral trait — which parameters only take effect on legacy Imagen models — but says nothing about side effects (file written to disk vs. base64 returned), cost, rate limits, or permissions. Partial coverage of a mutation-style tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, front-loaded with the core action, then the tier shortcut, then the legacy caveat. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the core action and model-selection path, but with no output schema and no annotations the agent gets no statement of what is produced (saved path vs. base64 payload) or how to choose this over sibling generation/edit tools. Adequate but leaves real gaps for a 16-parameter generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The reported 0% coverage is an artifact of the single top-level $ref; the nested GenerateImageParams schema actually describes every field. The description still adds cross-parameter semantics the schema does not: model_tier overrides model_name, and the legacy-only grouping of negative_prompt/seed/watermark/safety/storage_uri (only some of which are marked Imagen-only in the schema itself).
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 ('Generate an image from a text prompt') plus the backing engine (Vertex AI Gemini image models / Nano Banana). This implicitly separates it from tool_edit_image and tool_transform_image, which operate on existing images, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives conditional guidance ('Use model_tier for simple model selection') and a useful applicability caveat that negative_prompt/seed/watermark/safety/storage_uri are legacy-Imagen-only. However, it never says when to prefer this tool over tool_batch_generate or tool_edit_image, so routing between siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_generate_musicB
Generate music from a text prompt using Lyria. Check tool_list_available_models to verify Lyria is enabled in your project.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing behavioral. It never says whether generation is synchronous or long-running, what gets returned (audio bytes vs. a file on disk), how output_path/output_filename interact, or any cost/rate limit. The only non-obvious behavior mentioned is the model-availability prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the prerequisite. Nothing is padded, though the brevity comes partly at the cost of the missing behavioral detail.
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 annotations, no output schema, and a nested params object, the description should explain at minimum where generated audio goes and what a call returns. Neither is covered, leaving an agent unable to predict the side effects or result of invoking it.
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 reported as 0% at the top level, and the description adds no parameter meaning at all — no mention of prompt, duration, model selection, or the output_path vs. output_filename relationship. It does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate music from a text prompt using Lyria'), which cleanly separates it from the sibling image/video/speech generators. It does not name or route against any specific alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition: verify Lyria is enabled via tool_list_available_models before calling. That is real usage context, but there is no when-not-to-use guidance or comparison against sibling generators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_generate_speechB
Convert text to speech using Gemini TTS. Returns a WAV file path in outputs/.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does usefully disclose the output artifact ('Returns a WAV file path in outputs/'), which matters because there is no output schema, but it says nothing about text length limits, latency, cost, model-tier behavioral differences, or overwrite behavior when the target path already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the return value; no filler or restatement of the tool name. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter wrapper it covers the core action and return type, but with no annotations and no output schema it leaves the agent without guidance on voice/tier selection, text-size constraints, or how output_path and output_filename interact. Adequate but with clear gaps.
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 reported at 0%, so the description is expected to compensate for parameter meaning, and it does not: voice, model, model_tier, output_path, and output_filename are never referenced. The only weak tie-in is 'outputs/', which vaguely gestures at the output path parameters without explaining precedence or format.
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 ('Convert text to speech') plus the engine ('Gemini TTS'), which cleanly separates it from siblings like tool_generate_music, tool_generate_video, and tool_analyze_video. It does not explicitly name or contrast an alternative, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention of alternatives (e.g. generate_music for audio vs. speech), and no note about when to pick model_tier 'fast' vs 'quality' or which voice to choose. Usage is only inferable from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_generate_videoC
Generate a video from a text prompt using Veo.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and mostly fails it. It does not disclose that generation is typically long-running/asynchronous, what the output artifact or return value looks like, cost/latency characteristics, or that audio requires a Veo 3+ model — all of which materially affect how an agent should call and wait on this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action, resource, and mechanism front-loaded and no filler. It is well-sized for what little it attempts, though brevity here reflects omission rather than efficiency.
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 annotations, no output schema, and a large sibling set of video-related tools, the description omits too much: no return-value expectations, no async/polling behavior, no model-tier or audio prerequisites, and no disambiguation from adjacent video tools. It is not adequate for a tool with this much surface area.
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 reported at 0%, so the description should compensate, and it adds nothing about prompt, duration, model_name, model_tier, resolution, aspect_ratio, audio_enabled, or the output_path/output_filename priority. The nested schema fields are self-documented, which keeps this above a 1, but the description contributes zero parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (generate), resource (video), and input modality (text prompt) plus the underlying engine (Veo). It clearly separates itself from image, music, and speech siblings, but never names or contrasts with the closest video siblings such as tool_image_to_video or tool_extend_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no routing to alternatives. An agent has no stated basis for choosing this over tool_image_to_video, tool_extend_video, or tool_live_generate, all of which also produce video.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_image_to_videoC
Generate a video from a still image as the first frame using Veo.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it discloses nothing about generation cost, latency/async behavior, duration or resolution limits, or file/path requirements. 'using Veo' identifies the backend engine but adds little operational context beyond what the name already implies.
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 tight, front-loaded sentence with no filler or redundancy. It is efficient, though the brevity is partly under-specification rather than genuine density.
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?
Against a nested ten-field parameter object, no annotations, and no output schema, the description is too thin. Nothing explains the first+last frame mode, output destination behavior, or model selection, leaving the agent without enough to call the tool 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 reported at 0% for the single required 'params' wrapper, so the description must compensate and does not. It hints that an image supplies the first frame but says nothing about the required first_frame_path, duration options, aspect ratio, model tier, or the output_path/output_filename priority rule.
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 (generate) and resource (video) with the key constraint 'from a still image as the first frame', which implicitly separates it from plain text-to-video siblings like tool_generate_video and tool_extend_video. It stops short of naming any sibling explicitly, so differentiation relies on the agent's inference.
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 no when-to-use guidance and never references the alternatives in a crowded sibling set (tool_generate_video, tool_extend_video, tool_video_object_edit). An agent must guess from the name alone which video tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_list_available_modelsA
Live-probe every candidate Vertex AI publisher model in this project/location and return only those that respond (HTTP 200 or 400 = reachable; 404 = not found and excluded). Results are cached for the server process lifetime; pass force_refresh=true to rescan.
Returns: { "available": { "image_generation": [...], "image_transformation": [...], "text": [...], "vision": [...] }, "recommended": <static list, may include models that 404 in this project>, "checked_at": , "project": ..., "location": ... }
| Name | Required | Description | Default |
|---|---|---|---|
| force_refresh | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well: it discloses that the call live-probes candidates (implying latency/network cost), defines the status-code semantics (200/400 = reachable, 404 = excluded), and documents process-lifetime caching plus the force_refresh escape hatch. This is exactly the behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the caching caveat, then a structured Returns block. Every sentence earns its place; the HTTP-status parenthetical prevents misreading 'respond' as success-only.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations exist, yet the description supplies the full return shape (available categories, recommended, checked_at, project, location) and flags that 'recommended' may include models that 404. An agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single force_refresh parameter, so the description must compensate. It does: 'pass force_refresh=true to rescan' explains both the effect and the default cached behavior, going beyond the bare boolean in 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 (live-probe/list) and resource (Vertex AI publisher models in this project/location) with the exact selection rule (only models that respond). It is unmistakably a discovery tool, cleanly distinguished from the generation/editing siblings like tool_generate_image and tool_edit_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?
The description makes the operating context clear (scoped to this project/location, results cached for the server process lifetime) and tells the agent how to force a rescan. It stops short of naming when-not-to-use or an explicit alternative, but the discovery role is unambiguous given the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_live_generateC
Generate text using Gemini streaming. The full streamed response is accumulated and returned.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does add one genuinely useful behavioral fact — that the stream is accumulated server-side and returned whole rather than as incremental chunks — but it omits auth requirements, latency, rate limits, error behavior, and the default model actually used.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, and the key behavioral fact is front-loaded after the purpose statement. It is lean to the point of under-specification for a tool that exposes a model-tier choice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations mean the description must explain return shape and side effects, which it does only partially. For a generation tool with a tier selector, the agent gets no guidance on tier choice, expected latency, or failure modes.
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 reported at 0% at the top level, so the description would need to compensate, and it says nothing about prompt, model, or model_tier. The model_tier semantics and the 'Live API-only models are not supported' restriction appear only in the nested schema, not in the description.
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 ('Generate text using Gemini streaming'), which distinguishes it from the image/video/audio generation siblings. It does not, however, differentiate it from the other text-producing tools such as tool_batch_generate or tool_run_pipeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternative. An agent cannot tell from the description whether to prefer this over tool_batch_generate for multiple prompts or tool_list_available_models to pick a model first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_remove_backgroundB
Remove the background from an image and save a transparent PNG. The Gemini model places the subject on a flat chroma-key colour, which is then keyed out locally.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it does disclose a genuinely useful trait: the two-stage pipeline where Gemini paints the subject on a flat chroma-key colour that is then keyed out locally. That explains why key-colour choice matters and hints at failure modes. It still says nothing about file side effects, overwrite behaviour, permission needs, or cost/latency of the model call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the outcome (transparent PNG) front-loaded and the mechanism following as supporting context. Nothing is restated and nothing is padded.
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 annotations and no output schema, the description is the only source for behavior and returns; it covers the output format but not where the file lands by default, whether an existing file is overwritten, or that a base64 return is optional. Adequate for a simple single-parameter tool, but thin given the absence of structured support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The reported schema coverage for the top-level wrapper is 0%, but the nested parameter object documents every field in detail, so the schema does the heavy lifting. The description contributes mechanism context that motivates key_color's existence, but adds no per-parameter meaning beyond it. A 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?
The description states a specific verb and resource ('Remove the background from an image') and adds the concrete output ('save a transparent PNG'), which is more than a restatement of the name. It does not, however, distinguish this tool from adjacent siblings like tool_edit_image or tool_transform_image, which an agent might reasonably consider for the same request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives. The agent is left to infer whether this is preferable to tool_edit_image for a masking request, and nothing tells it what conditions make this tool a poor fit (e.g. subjects containing the key colour, though that is buried in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_run_pipelineB
Chain image processing steps sequentially. Each step's output becomes the next step's input. Supported tools: generate, edit, transform, upscale, remove_background. Example: generate → remove_background → upscale.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the chaining data-flow model and enumerates supported tools, but says nothing about failure behavior mid-pipeline, whether it is a write/destructive operation, permissions, latency/cost, or what the return value is. Core semantics are covered; operational behavior is not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short lines, front-loaded with the core mechanic, then supported tools, then a concrete example. Every sentence carries information with no filler. Slightly more could be trimmed, but the structure is efficient and scannable.
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 an orchestration tool with a nested steps model, no annotations, and no output schema, the description covers the chaining concept and valid tools but leaves out error handling, output/return expectations, and constraints on step composition. An agent could invoke it, but not without inference on failure and output behavior.
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 reported as 0%, so the description must compensate. It does supply the valid tool names ('generate / edit / transform / upscale / remove_background'), but that list is also present in the schema's `tool` field, and the description never explains the `steps`, `output_path`, or `output_filename` semantics or how per-step `params` should be shaped. Partial compensation only.
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 ('chain image processing steps sequentially') and clarifies the data flow ('each step's output becomes the next step's input'). It names the supported operations, which map onto sibling tools, so an agent can distinguish this orchestration tool from single-op siblings. It stops short of explicitly contrasting itself with those siblings, so a 4 rather than a 5.
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 via the example ('generate → remove_background → upscale'), which shows the chaining pattern without stating when to choose this tool over calling the individual step tools. No when-not guidance, prerequisites, or alternative routing is given. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_transform_imageA
Free-form 'image + text -> image' transformation via Gemini multimodal models. Use for style transfer, scene rewriting, or any natural-language image edit that does not require pixel-precise masking.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the modality contract and that a third-party multimodal model performs the work (implying a network call), but says nothing about file side effects, cost/latency, auth, or rate limits — all relevant for a tool whose schema includes output_path and return_base64.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first states what it does and how, the second states when to use it and when not to. Zero filler and front-loaded.
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 tool with nine schema parameters, no annotations, and no output schema, the description covers the core routing decision but omits the multi-reference-image capability, tier selection, and whether a file is written to disk versus returned inline. Adequate for selection, thin for correct invocation.
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 reported at 0% for the top level, and the description never mentions any parameter — no guidance on model_name/model_tier selection, save_format, additional reference images, or output destinations. The nested property descriptions carry the load, but the description itself adds no parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb and resource ('image + text -> image' transformation) and even specifies the underlying mechanism (Gemini multimodal models). It also draws a capability boundary against masking-based edits, which distinguishes it from sibling tool_edit_image, though it never names that sibling explicitly.
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 use cases (style transfer, scene rewriting, natural-language edits) and a negative condition ('does not require pixel-precise masking'), which routes the agent away from mask-based tools. The alternative is only implied rather than named, so it stops 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.
tool_upload_fileA
Register a local file for use as a reference image in other tools (e.g. tool_transform_image). Returns a file_uri to pass as additional_image_paths.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose the return artifact (a file_uri for additional_image_paths), which is valuable given there is no output schema. However it is silent on the semantics of 'register' — whether the file is copied or merely referenced, whether the source path must remain valid, size/format limits, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and the return value second. No filler or restatement of the tool name.
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-argument setup tool with no annotations and no output schema, the description covers the two things an agent most needs: why to call it and what it returns. Missing only edge-case behavior (file lifetime, format restrictions, whether the path is copied), which is minor at this complexity level.
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 on the top-level parameter ('params') is 0%, and the description adds no parameter-level detail: it never mentions file_path, mime_type, or display_name. 'Local file' only loosely implies file_path. The nested $defs do document the inner fields, which prevents this from being a 1, but the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Register a local file') plus the exact role it plays: producing a reference image for other tools. It names a concrete sibling (tool_transform_image) as the consumer, so an agent can distinguish this precondition/setup tool from the media-generation siblings 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?
States the usage context clearly ('for use as a reference image in other tools') and gives a concrete example consumer plus the parameter name downstream tools expect. It does not state when NOT to use it (e.g. when the file is already registered or when a remote URL suffices), 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.
tool_upscale_imageB
Upscale a low resolution image to 2K or 4K by re-rendering it with a Gemini image model.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It helpfully discloses that upscaling happens by re-rendering with a generative model (implying output is synthesized, not a faithful resample), but says nothing about file-side effects (writing to output_path/output_filename), cost, overwrite behavior, or permission needs.
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 sentence, front-loaded with the verb and resource, with no filler. Every clause adds information (target resolutions, mechanism).
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 what the tool does and its output targets, but with no output schema and no annotations the description should say what comes back (saved file path vs. base64) and note the disk-writing side effect. Adequate minimum for calling the tool, incomplete for predicting its effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description contributes zero parameter detail; the reported top-level coverage is 0% only because everything is nested under a single 'params' $ref. The nested schema properties are in fact richly documented (model_name limits, model_tier overrides, output_path precedence, target_resolution aspects), so the schema does the heavy lifting and a 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?
States a specific verb (upscale), resource (image), the target outputs (2K/4K), and the mechanism (re-render with a Gemini image model), which distinguishes it from generate_image/edit_image/transform_image without naming them. It stops short of explicitly contrasting with those siblings, so it is clear but not self-routing.
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?
No when-to-use guidance and no acknowledgement of the nearby alternatives (transform_image, edit_image, generate_image). An agent has to infer that this is for low-resolution source images that need resolution increase, rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_video_object_editC
Insert or remove an object in a video using Veo.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no indication of whether the call is synchronous or long-running, where the result is written, cost/latency expectations, or permission requirements. 'Using Veo' at least identifies the backing model, which is the only behavioral fact conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with zero filler, which is structurally clean, but the brevity reads as under-specification rather than tight writing for a 7-field generative tool.
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 annotations and no output schema, the description should explain return behavior, output file handling (output_path vs output_filename) and any operational constraints, but none of that appears. For a Veo-backed editing tool whose result is a produced file, the agent is left guessing about the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter meaning beyond the schema. The nested VideoObjectEditParams definition does document its fields (prompt, operation enum, model_name/model_tier, video_path, output_path/output_filename), but the top-level schema exposes only a single undocumented 'params' object, so the description needed to compensate and does not.
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 names a specific action pair (insert/remove), the resource (an object in a video) and the engine (Veo), so an agent can immediately tell this is an object-level video edit rather than a full generation. It stops short of distinguishing itself from neighbors such as tool_generate_video, tool_image_to_video or tool_extend_video, which all operate on video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use / when-not-to-use guidance and no mention of the alternatives in the sibling set (e.g. generate_video for new footage, extend_video for lengthening). The only contextual cue is 'using Veo', which implies a source video exists but is not stated.
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.
19 tool updates
v3.3.0- First observed
tool_analyze_image - First observed
tool_analyze_video - First observed
tool_batch_generate - First observed
tool_edit_image - First observed
tool_embed - First observed
tool_extend_video - First observed
tool_generate_image - First observed
tool_generate_music - First observed
tool_generate_speech - First observed
tool_generate_video - First observed
tool_image_to_video - First observed
tool_list_available_models - First observed
tool_live_generate - First observed
tool_remove_background - First observed
tool_run_pipeline - First observed
tool_transform_image - First observed
tool_upload_file - First observed
tool_upscale_image - First observed
tool_video_object_edit
TDQS
Scored across 19 tools
Most tools target clearly distinct resource/action pairs across image, video, audio, and text. However, tool_edit_image and tool_transform_image overlap: edit_image mentions 'mask-free prompt-driven edit' while transform_image is for free-form natural-language transforms, so the boundary between them is slightly blurry despite the descriptions attempting to redirect.
All 19 tools use the same tool_ prefix with snake_case verb_noun or verb_noun_phrase pattern, e.g. tool_generate_image, tool_remove_background, tool_run_pipeline. No mixed conventions or inconsistent verb styles.
19 tools is on the heavy side for a single MCP server, even accounting for the broad multimodal scope. Some tools, such as batch_generate and run_pipeline, are convenience wrappers that an agent could orchestrate by calling individual generation tools, making the surface feel somewhat inflated.
The surface covers generation, editing, transformation, upscaling, background removal, video create/extend/edit/analyze, music, speech, text, embeddings, model discovery, batch, and pipeline. Minor gaps include no explicit output management/history tool and no non-streaming text generation, but core multi-modal workflows are well covered.
Maintenance
Related MCP Connectors
MCP server for Google Veo AI video generation
Focused MCP server for OpenAI image/audio generation (v2.0.0). Wraps endpoints via HAPI CLI.
Generate AI images and videos from any compatible MCP client.
MCP server for Qwen Image 3 AI image generation
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for generating images and videos using Google Gemini and VEO models, with support for multiple AI models and credential modes.1Apache 2.0

nano-banana-mcpofficial
AlicenseAqualityDmaintenanceMCP server that generates images using Gemini 3 Pro Image on Vertex AI, with support for reference images, task management, and GCS integration.2376 npm9-- AlicenseAqualityDmaintenanceMCP server for Google Gemini image generation with configurable model support, enabling text-to-image generation, image editing, and iterative refinement.640MIT
- FlicenseAqualityDmaintenanceWraps Google Gemini's image generation API as an MCP server, enabling text-to-image, image editing, and grounded search workflows from any MCP client.2-