Skip to main content
Glama

PyPI version Python versions License: AGPL-3.0

PixelForge MCP

An MCP server for AI-powered image generation, editing, analysis, and transformation using Google's Gemini image models.

Features

  • 19 MCP tools for image generation, editing, analysis, transformation, and more

  • 4 stable Gemini image models (Nano Banana 2.1, 2 Lite, 2, and Pro) plus configurable analysis models

  • Quality presets (fast/balanced/quality) for simplified model selection

  • Parallel multi-image generation via asyncio.gather

  • Image transforms — crop, resize, rotate, flip, blur, sharpen, grayscale, watermark

  • Prompt template library — 24 curated templates across 10 categories

  • Generation history — full audit trail with search and pagination

  • Batch processing — generate up to 10 images in parallel

  • Generative upscale and mode-driven editing — upscale to the next 1K/2K/4K tier, inpaint, outpaint, background swap, style transfer, product shots

  • Two backends — Gemini API key, or Vertex AI with a service account / Application Default Credentials

  • Thinking mode & grounding — extended reasoning and Google Search for analysis

  • 14 aspect ratios (including panoramic) and temperature control

  • Async-first architecture with full Pydantic validation

  • EXIF metadata embedding (prompt, model, timestamp)

Related MCP server: Gemini Gen MCP

Quick Start

Requirements: Python 3.10+ and a Google API key or a Google Cloud project with Vertex AI (see Authentication)

Install

The quickest route in Claude Code, Codex or Cursor is the plugin, which starts the server with uvx pixelforge-mcp@latest (needs uv) and adds seven workflow skills:

# Claude Code
/plugin install pixelforge --marketplace Tehnolabs/pixelforge-mcp

# Codex
codex plugin marketplace add Tehnolabs/pixelforge-mcp && codex plugin add pixelforge@pixelforge

# Cursor: Customize -> From GitHub Repository -> https://github.com/Tehnolabs/pixelforge-mcp

See plugins/pixelforge/README.md for credentials per client and the skill list. For any other client, or a manual setup, install the server once:

pipx install pixelforge-mcp

Configure

The examples below use a Gemini API key. To use a Google Cloud service account instead, replace GOOGLE_API_KEY with GOOGLE_CLOUD_PROJECT and GOOGLE_APPLICATION_CREDENTIALS as shown in Use a service account instead of an API key.

Claude Code

claude mcp add pixelforge --scope user -e GOOGLE_API_KEY="your-key" -- pixelforge-mcp

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "pixelforge": {
      "command": "pixelforge-mcp",
      "env": {
        "GOOGLE_API_KEY": "your-key"
      }
    }
  }
}

VS Code

code --add-mcp '{"name":"pixelforge","command":"pixelforge-mcp","env":{"GOOGLE_API_KEY":"your-key"}}'

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "pixelforge": {
      "command": "pixelforge-mcp",
      "env": {
        "GOOGLE_API_KEY": "your-key"
      }
    }
  }
}

Kiro

kiro-cli mcp add --name pixelforge --scope global --command pixelforge-mcp --env "GOOGLE_API_KEY=your-key"

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "pixelforge": {
      "command": "pixelforge-mcp",
      "env": {
        "GOOGLE_API_KEY": "your-key"
      }
    }
  }
}

Restart Claude Desktop after saving.

Use

Ask Claude to generate, edit, or analyze images — all 19 tools are available automatically.

Authentication

PixelForge talks to Google through one of two backends. Every tool runs on either.

Gemini API key

Set any one of these variables. Get a key at Google AI Studio.

Variable

Notes

GOOGLE_API_KEY

Standard

GOOGLE_GENERATIVE_AI_API_KEY

Alternative

GEMINI_API_KEY

Alternative

Vertex AI

Use a Google Cloud project with the Vertex AI API enabled and Application Default Credentials: a service account key file, gcloud auth application-default login, or the attached identity when running on Google Cloud. The identity needs the Vertex AI User role (roles/aiplatform.user). No extra packages are required.

Variable

Notes

GOOGLE_CLOUD_PROJECT

Project ID. Setting it enables the Vertex AI backend

GOOGLE_APPLICATION_CREDENTIALS

Path to a service account key file. Not needed with another ADC source

GOOGLE_CLOUD_LOCATION

Vertex AI location. Default global; the current Gemini image and text models are served from the global endpoint

GOOGLE_GENAI_USE_VERTEXAI

true to use Vertex AI even when an API key is also set (GOOGLE_GENAI_USE_ENTERPRISE is accepted as well)

Use a service account instead of an API key

A service account runs every tool through Vertex AI, with no Gemini API key. One-time setup with the gcloud CLI, using your own project ID:

PROJECT_ID="YOUR_PROJECT_ID"
SA="pixelforge-sa@${PROJECT_ID}.iam.gserviceaccount.com"

# 1. Enable Vertex AI in the project
gcloud services enable aiplatform.googleapis.com --project="$PROJECT_ID"

# 2. Create the service account and grant it the Vertex AI User role
gcloud iam service-accounts create pixelforge-sa --project="$PROJECT_ID"
gcloud projects add-iam-policy-binding "$PROJECT_ID" \
  --member="serviceAccount:$SA" --role="roles/aiplatform.user"

# 3. Create a key file outside any repository
mkdir -p ~/.config/pixelforge
gcloud iam service-accounts keys create ~/.config/pixelforge/service-account.json \
  --iam-account="$SA"

Then configure your client with the project and the key path in place of GOOGLE_API_KEY. Claude Code:

claude mcp add pixelforge --scope user \
  -e GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID" \
  -e GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/pixelforge/service-account.json" \
  -- pixelforge-mcp

Cursor, Windsurf, Claude Desktop and other JSON-configured clients take the same two variables in the env block:

{
  "mcpServers": {
    "pixelforge": {
      "command": "pixelforge-mcp",
      "env": {
        "GOOGLE_CLOUD_PROJECT": "YOUR_PROJECT_ID",
        "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account.json"
      }
    }
  }
}

Verify by asking your client for get_server_info: backend.name should be vertex_ai. Commands for every client are in docs/configuration.md.

  • An API key variable set anywhere in the environment (a shell profile, for example) takes precedence, and the service account is ignored. Unset it, or add "GOOGLE_GENAI_USE_VERTEXAI": "true" to the same env block.

  • The key file grants access to your project. Keep it out of version control, give the service account only roles/aiplatform.user, and delete keys you no longer use (gcloud iam service-accounts keys list --iam-account="$SA").

  • No key file is needed when credentials come from gcloud auth application-default login (optionally with --impersonate-service-account="$SA") or from the attached identity on Google Cloud. Set only GOOGLE_CLOUD_PROJECT in that case.

Backend selection

  • An API key selects the Gemini API.

  • GOOGLE_CLOUD_PROJECT with no API key selects Vertex AI.

  • Both set: the API key wins unless GOOGLE_GENAI_USE_VERTEXAI=true.

get_server_info reports the active backend under backend.name.

Available Tools

Generation

Tool

Description

generate_image

Generate images from text (4 models, 14 aspect ratios, quality presets, parallel multi-image)

edit_image

Modify existing images with text prompts

remove_background

Remove image background (transparent or white)

transform_image

Crop, resize, rotate, flip, blur, sharpen, grayscale, or watermark

batch_generate

Generate up to 10 images in parallel from multiple prompts

upscale_image

Generative upscale to the next 1K/2K/4K tier (re-render with a Gemini image model)

advanced_edit

Inpainting, outpainting, background swap, style transfer, product shots (prompt-driven, optional mask guidance)

Analysis

Tool

Description

analyze_image

AI-powered image description with optional grounding and model override

extract_text

OCR — extract text with confidence levels

detect_objects

Detect objects with bounding boxes

compare_images

Compare 2-10 images for differences

Analysis tools and optimize_prompt accept a model override. The default is gemini-3.5-flash-lite; use gemini-3.8-flash for harder OCR or reasoning.

Utility

Tool

Description

optimize_prompt

Enhance prompts for better image generation (14 styles)

estimate_cost

Calculate generation costs per model/operation

list_templates

Browse 24 curated prompt templates across 10 categories

apply_template

Fill a template with your subject for a ready-to-use prompt

list_available_models

Model capabilities, speed, quality, and selection guidance

get_server_info

Server configuration and status

History

Tool

Description

list_history

Browse generation history with pagination and filtering

get_generation_details

Get full details of a specific generation

Model Selection

PixelForge supports per-request model switching with 4 stable Gemini image models:

Image Models

Use case

Model

Why

General use (default)

gemini-nano-banana-2.1

1K/2K/4K, web+image grounding, thinking levels, 1:4/4:1/1:8/8:1, up to 14 references. $0.0336/img at 1K

Fastest, cheapest

gemini-3.1-flash-lite-image

1K only, no panoramic, no grounding. $0.0336/img

Previous-gen workhorse

gemini-3.1-flash-image

0.5K/1K/2K/4K, panoramic, grounding. $0.067/img at 1K

Max text fidelity

gemini-3-pro-image

Best text rendering, complex multi-turn edits. $0.134/img at 1K/2K

gemini-2.5-flash-image is deprecated (Google has announced its shutdown) and remains only for existing setups. Use gemini-3.1-flash-lite-image instead.

0.5K is gemini-3.1-flash-image only and is sent to the API as 512px. generate_image rejects a size the chosen model cannot output.

upscale_image and advanced_edit re-render with gemini-nano-banana-2.1 unless model is set. upscale_image outputs the smallest of 1K/2K/4K that covers the source times the factor (capped at 4K) and needs a model with 2K/4K output (gemini-nano-banana-2.1, gemini-3.1-flash-image, or gemini-3-pro-image); gemini-3.1-flash-lite-image is rejected. Both tools pin the nearest aspect ratio the model supports; models without panoramic output get a standard ratio and a warning.

Analysis Models (text)

Used by analyze_image, extract_text, detect_objects, compare_images, and optimize_prompt. Override per request with model=.

Model

Notes

gemini-3.5-flash-lite (default)

$0.30 in / $2.50 out per 1M tokens

gemini-3.8-flash

Strongest. $0.75 in / $3.75 out per 1M tokens

Quality Presets

Instead of choosing a model manually, use quality presets:

generate_image(prompt="...", quality="fast")      # gemini-3.1-flash-lite-image
generate_image(prompt="...", quality="balanced")   # gemini-nano-banana-2.1 + 1K
generate_image(prompt="...", quality="quality")    # gemini-3-pro-image + 2K

Supported Aspect Ratios

Ratio

Description

1:1

Square (default)

16:9

Widescreen landscape

9:16

Mobile portrait

2:3

Classic portrait

3:2

Classic landscape

3:4

Portrait

4:3

Traditional landscape

4:5

Instagram portrait

5:4

Medium format

21:9

Ultrawide

1:4

Tall panoramic*

4:1

Wide panoramic*

1:8

Extra tall panoramic*

8:1

Extra wide panoramic*

* Panoramic ratios require gemini-nano-banana-2.1 or gemini-3.1-flash-image

Troubleshooting

"Invalid API key" or "Authentication failed"

Double-check your Google API key is correct and has access to the Gemini API. Get a key at Google AI Studio. If you meant to use a service account, an API key variable set anywhere in the environment takes precedence: unset it or set GOOGLE_GENAI_USE_VERTEXAI=true.

"Command not found: pixelforge-mcp"

Ensure the pipx bin directory is in your PATH:

export PATH="$HOME/.local/bin:$PATH"

"Server not starting"

Check that pixelforge-mcp is installed:

pipx list | grep pixelforge

"Publisher model ... was not found" (Vertex AI)

With a regional location in the message, the request went to a regional Vertex AI endpoint. The current Gemini image and text models are served from the global endpoint: set GOOGLE_CLOUD_LOCATION=global (the default) or remove a regional override. With locations/global in the message, the model ID is unknown or retired on Vertex AI (list_available_models lists current IDs), or the project cannot access it yet. The same 404 is returned for retired Imagen model IDs, which PixelForge no longer calls.

"Rate limit exceeded" or "Permission denied"

The message carries Google's own text. A quota limit: 0, or "has not been used in project ... or it is disabled", is a project setup limit rather than a model problem: enable the Vertex AI API (or the Generative Language API for an API key), grant roles/aiplatform.user, or request a quota increase.

"No credentials found"

Set an API key, or GOOGLE_CLOUD_PROJECT with Application Default Credentials. See Authentication.

Documentation

Contributing

See CONTRIBUTING.md for development setup, code standards, and pull request guidelines.

License

AGPL-3.0

Acknowledgments

Built with FastMCP, Pydantic, and google-genai.

Author

Ahmed Al-Eryani @ Tehnolabs


PixelForge MCP - Forging pixels with AI

Available Tools

19 tools
advanced_editAdvanced EditA

Edit an image with a specialized mode using a Gemini image model.

Each mode wraps the prompt in an instruction tuned for that edit. An optional mask (white = region to change) is passed to the model as guidance; the boundary is interpreted semantically, not pixel-exactly.

NameRequiredDescriptionDefault
modelNoImage model to use (default gemini-nano-banana-2.1)
promptYesWhat to remove, add, replace, or the style to apply
edit_modeYesOne of: inpaint_removal, inpaint_insertion, outpaint, background_swap, style_transfer, product_image
mask_pathNoOptional mask image for the inpainting modes
image_pathYesPath to the image to edit
output_formatNoOutput format (png, jpeg, webp)png
output_filenameNoCustom output filename (optional)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does deliver genuinely useful behavioral detail: an optional mask is guidance only, interpreted semantically rather than pixel-exactly. It is silent on whether the source file is overwritten, where the result is written, and any cost/latency, which matters for a model-inference call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action, and the mask caveat placed immediately after. No filler, though the line break mid-sentence slightly fragments the flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Seven parameters, three required, and the most consequential required input (edit_mode, six undocumented enum-like values) gets no guidance on selection or per-mode prerequisites such as which modes need a mask. Output schema exists so return values needn't be explained, but the mode-selection gap keeps this at minimum-viable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description earns above that by explaining mask_path semantics (white = region to change, soft boundary guidance) and by framing prompt as what the mode-specific wrapper consumes. It adds no color on the model or output_format parameters, but those are self-describing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Edit an image") plus the distinguishing mechanism: a specialized mode backed by a Gemini image model, with per-mode prompt tuning. It does not name or contrast with the obvious sibling edit_image, so an agent cannot be fully certain which of the two to reach for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied. Nothing says when to prefer advanced_edit over edit_image, or which of the six edit_mode values fits a given intent. The mask note implies the inpainting modes benefit from a mask, but the other four modes are left uncharacterized.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_imageAnalyze ImageC

Analyze an image and get a detailed description.

NameRequiredDescriptionDefault
modelNoAnalysis model override. Default gemini-3.5-flash-lite. Use gemini-3.8-flash for harder OCR or reasoning.
promptNoCustom analysis prompt. Default: general description.
image_pathYesPath to the image to analyze
use_groundingNoEnable Google Search grounding for more accurate, factual analysis results.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden, yet it discloses nothing about cost/latency implications of the model choice, whether an external API call or credentials are required, or how grounding affects behavior. For a tool that apparently invokes a billed vision model, this is a substantial gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though efficiency here comes partly at the cost of substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the input schema is fully documented, so the agent has enough to invoke the tool correctly. However, with zero annotations and a vision-model backend, the description should at minimum note that the call may incur cost or rely on an external service.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter (model, prompt, image_path, use_grounding) is already documented in the schema with defaults and guidance. The description adds no meaning beyond that, which meets the baseline 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb and resource ("analyze an image") plus a hint at the output ("detailed description"), but it does not distinguish this from siblings like extract_text, detect_objects, or compare_images, which are also image-analysis tools. An agent cannot tell from this text why it should choose analyze_image over those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the many related siblings, and no mention of prerequisites such as valid image paths or when the model override or grounding options should be used. The schema hints at these choices, but the description offers no routing logic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_templateApply TemplateC

Apply a prompt template with a subject to generate a ready-to-use prompt.

NameRequiredDescriptionDefault
subjectYesThe subject to fill into the template (e.g., 'wireless headphones', 'coffee shop')
template_nameYesName of the template (e.g., 'product_hero', 'instagram_post'). Use list_templates() to see all.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, yet it says nothing about that this is a pure text transform (no generation side effects), what happens with an unknown template_name, or whether output is a plain string prompt. It does at least imply the return is 'a ready-to-use prompt', which is the one 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; nothing is wasted. It is arguably too terse rather than verbose, but as a structural matter it is tight and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained, and parameters are fully covered by the schema. However, with zero annotations on a tool that sits in a suite of image-generation siblings, the description should still clarify that it only produces prompt text and not an image, and how it relates to optimize_prompt/generate_image.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (template_name, subject) are already documented with examples and the list_templates pointer. The description restates that a subject is filled into a template but adds no syntax or format detail beyond the schema, matching the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('apply') and resource ('prompt template') plus the outcome ('generate a ready-to-use prompt'), which is clear enough to distinguish it from image-mutation siblings like edit_image or transform_image. It doesn't explicitly differentiate from the nearest sibling list_templates (only the schema hints at that), 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, and no alternatives are named despite siblings like list_templates, optimize_prompt, and generate_image that an agent could easily confuse it with. The only routing hint ('Use list_templates() to see all') lives in the schema property, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

batch_generateBatch GenerateA

Generate multiple images in parallel from a list of prompts.

NameRequiredDescriptionDefault
modelNoModel to use for all generations (optional)
promptsYesList of text prompts (1-10)
qualityNoQuality preset (fast, balanced, quality)
aspect_ratioNoAspect ratio for all images (default: 1:1)1:1
output_formatNoOutput format for all images (default: png)png

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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 does disclose one meaningful trait — parallel execution — which affects latency and error-handling expectations, but says nothing about partial failures, per-prompt error reporting, cost/rate implications, or whether shared model/quality settings apply to all outputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the parallel/batch nature is stated first, which is the key decision-relevant fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, for a batch mutation-style tool with zero annotations and five parameters, the absence of any statement about partial-failure behavior or per-prompt result mapping leaves a real gap for an agent deciding whether to batch or loop over generate_image.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters including the prompts array, model, quality preset, aspect ratio, and output format are already documented inline. The description only echoes that generation is driven by a prompt list and adds no constraints or format detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Generate'), resource ('images'), and distinguishing scope ('multiple ... in parallel from a list of prompts'). This implicitly separates it from the sibling generate_image, but it never names that sibling, so the differentiation requires the agent to infer it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'a list of prompts' suggests batching rather than one-off generation, but there is no explicit 'use generate_image for a single image' routing, no guidance on batch size (1-10 lives only in the schema), and no mention of when a batch is a poor choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_imagesCompare ImagesB

Compare two or more images and analyze differences.

Useful for A/B testing, design review, before/after comparison, and change detection.

NameRequiredDescriptionDefault
modelNoAnalysis model override. Default gemini-3.5-flash-lite. Use gemini-3.8-flash for harder OCR or reasoning.
promptNoComparison focus (e.g. "color differences"). Default: general comparison.
image_pathsYesPaths to 2+ images to compare
use_groundingNoEnable Google Search grounding for more accurate, factual results.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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 does not say whether the call is read-only versus mutating, whether it consumes paid model credits (relevant given the estimate_cost sibling), what permissions are needed, or what form the analysis output takes beyond the bare phrase 'analyze differences'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose front-loaded, with a compact use-case list that follows. No filler, though the use-case list is somewhat generic relative to the tool's capability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, with zero annotations the description should have covered safety/mutation semantics and cost implications, which are missing; the enumerated use cases only partially compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (model, prompt, image_paths, use_grounding) are already documented in the schema. The description adds no parameter-level guidance such as how to phrase the prompt or when grounding is worth enabling, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('compare two or more images') plus the action taken ('analyze differences'), so the operation is immediately understandable. It does not distinguish itself from the sibling analyze_image, which likely handles single-image inspection, leaving the boundary implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists broad application scenarios (A/B testing, design review, before/after, change detection), which implies when the tool is appropriate. It never states when to choose it over analyze_image or edit_image, and offers no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_objectsDetect ObjectsA

Detect objects in an image with bounding boxes.

Uses Gemini's zero-shot object detection. Returns bounding box coordinates normalized to 0-1000 scale as [y_min, x_min, y_max, x_max].

NameRequiredDescriptionDefault
modelNoAnalysis model override. Default gemini-3.5-flash-lite. Use gemini-3.8-flash for harder OCR or reasoning.
objectsNoSpecific objects to detect (e.g. "cats and dogs"). Default: detect all visible objects.
image_pathYesPath to the image
use_groundingNoEnable Google Search grounding for more accurate, factual results.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does carry the burden, and it usefully discloses the backend, the zero-shot nature (no example images needed), and the exact coordinate scale/order including the non-obvious [y_min, x_min, y_max, x_max] ordering. It says nothing about failure modes (non-image paths), cost, latency, or how many objects are returned, so the operational profile is incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and followed by the two facts an agent most needs (mechanism and coordinate format). The coordinate-order detail partially overlaps the output schema but is dense enough to earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be re-explained, and all four params are fully covered by the schema. What remains missing is selection guidance relative to the other image tools; otherwise the definition is sufficient to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (image_path, objects, model, use_grounding) are already documented, including the model override guidance and the objects filter example. The description adds no parameter guidance beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('detect objects in an image with bounding boxes') and adds the mechanism (Gemini zero-shot detection). It never names or contrasts with the closest sibling, analyze_image, so an agent must infer why it should pick this over a general image analysis call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the output format: wanting bounding boxes selects this tool. There is no explicit when-to-use, no when-not-to-use, and no reference to analyze_image, extract_text, or compare_images, all of which could plausibly be chosen instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_imageEdit ImageC

Edit an existing image using a text prompt.

NameRequiredDescriptionDefault
modelNoModel override. Default "gemini-nano-banana-2.1"; "gemini-3-pro-image" is best for complex multi-turn edits.
promptYesDescription of the desired changes
temperatureNoCreativity level 0.0-2.0
output_formatNoFile format: "png", "jpeg", or "webp"png
output_filenameNoCustom filename for edited image (optional)
input_image_pathYesPath to the image to edit

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden and says nothing about whether the source image is overwritten or a new file is written, what output path is used, cost implications, or any permission requirements. For a mutation tool with zero annotation coverage this is a substantial gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though the terseness borders on under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters, an output schema, no annotations, and several overlapping siblings, the description should at minimum disambiguate edit vs transform vs advanced_edit and note the non-destructive or destructive nature of the operation. It covers return values via the output schema but leaves the selection and side-effect questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including model, temperature, output_format, and output_filename is already documented in the schema. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: edit an existing image via a text prompt, which cleanly separates it from generate_image. However, it offers no distinction from the closely related siblings transform_image and advanced_edit, which an agent must choose between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no routing to alternatives despite at least three overlapping siblings (transform_image, advanced_edit, generate_image). The only hint about scale of edit appears in the model parameter schema, not in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_costEstimate CostA

Estimate the cost of an image operation.

Shows pricing per model per operation to help with budgeting.

NameRequiredDescriptionDefault
modelNoModel to estimate for (default: all models that support the operation). Image models price generate/edit per image at 1K; text models price analyze per call.
operationYes"generate", "edit", or "analyze"
number_of_imagesNoNumber of images (default: 1)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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 explains that the tool shows pricing per model per operation, but does not explicitly state that it is a read-only estimate, that it does not execute the operation, or how exact the estimate is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the core purpose and followed by useful budgeting context. There is no unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter, read-only estimation tool with a complete input schema and an output schema, the description is largely sufficient. The main remaining gap is the lack of explicit behavioral clarification that this estimates cost rather than performing the image operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents model, operation, and number_of_images in detail. The description adds only the high-level idea of 'per model per operation' pricing, which is a baseline contribution rather than new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb-and-resource pair: 'Estimate the cost of an image operation.' This is clearly distinct from sibling tools that actually generate, edit, or analyze images, though it does not explicitly name those siblings as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'to help with budgeting' implies the tool is used before or alongside image operations, but the description does not explicitly state when to use it versus alternatives or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_textExtract TextB

Extract text from an image using OCR.

Uses Gemini's vision capabilities for high-quality text extraction. Works with screenshots, documents, signs, handwriting, etc.

NameRequiredDescriptionDefault
modelNoAnalysis model override. Default gemini-3.5-flash-lite. Use gemini-3.8-flash for harder OCR.
image_pathYesPath to the image to extract text from
use_groundingNoEnable Google Search grounding for more accurate, factual results.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden alone. It discloses the underlying engine and that it is an OCR extraction, but says nothing about cost, latency, rate limits, or permissions — meaningful gaps for a model-backed vision call, though the read-only nature is implicit in 'extract'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action, with no filler. The second sentence's input-type list is somewhat loose but still informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, with zero annotations the description should have covered behavioral aspects like cost or whether grounding affects billing/accuracy tradeoffs; it only gestures at this via the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (image_path, model override, use_grounding) are already documented in the schema, including the model recommendation. The description adds no parameter-level meaning beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Extract text from an image using OCR'), and the second sentence clarifies the engine (Gemini vision) and scope of input types. It does not explicitly differentiate itself from the closest sibling, analyze_image, which an agent could plausibly confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples ('screenshots, documents, signs, handwriting') imply when the tool is appropriate, but there is no explicit when-to-use versus when-to-use-analyze_image guidance and no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageGenerate ImageC

Generate an image from a text prompt using Google Gemini.

NameRequiredDescriptionDefault
modelNoModel override. Options: - "gemini-nano-banana-2.1" (default): Best all-round, panoramic, grounding - "gemini-3.1-flash-lite-image": Fastest, cheapest, 1K only - "gemini-3.1-flash-image": Panoramic, grounding, 0.5K tier - "gemini-3-pro-image": Best text rendering, complex edits
promptYesText description of the image to generate
qualityNoQuality preset: "fast" (gemini-3.1-flash-lite-image), "balanced" (gemini-nano-banana-2.1), or "quality" (gemini-3-pro-image, 2K). Mutually exclusive with 'model'.
image_sizeNoResolution: "0.5K" (gemini-3.1-flash-image only), "1K" (default), "2K", or "4K". 2K/4K are not supported by gemini-3.1-flash-lite-image.
temperatureNoCreativity level 0.0-2.0
aspect_ratioNoImage dimensions (1:1, 16:9, 9:16, etc.)1:1
output_formatNoFile format: "png", "jpeg", or "webp"png
safety_settingNoSafety filter (preset:strict, preset:relaxed)preset:strict
output_filenameNoCustom filename (optional, auto-generated if not provided)
thinking_budgetNoThinking budget for extended reasoning (0-24576 tokens). Higher = deeper reasoning.
number_of_imagesNoGenerate 1-4 variations (default: 1)
reference_imagesNoPaths to reference images for style/character consistency (up to 14 images on gemini-nano-banana-2.1 and gemini-3.1-flash-image; 6 on gemini-3-pro-image)
person_generationNoAccepted for compatibility ("allow", "adults_only", "block"). Not enforced by the Gemini API; Gemini applies its own built-in restrictions on identifiable people.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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, yet it mentions nothing about cost, latency, file writes to disk, safety filtering, or model-specific limits. For a generative tool with 13 parameters and real side effects, this is a significant omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded, zero waste. It is efficient, though its brevity is partly under-specification rather than disciplined concision given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, an output schema, no annotations, and a crowded sibling set, a single sentence is not enough. It should have flagged cost implications, output location/file writing, and how text-to-image differs from the editing siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with rich per-parameter docs covering model tiers, quality presets, image_size constraints, reference image counts, and the person_generation compatibility note. The description adds nothing beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb ('Generate') plus resource ('an image') and names the underlying engine (Google Gemini). An agent can distinguish it from edit_image or transform_image by the 'from a text prompt' framing, though the differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus the 17 siblings, notably edit_image, transform_image, batch_generate, or estimate_cost. An agent must infer the boundary between text-to-image generation and image-to-image editing from names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_generation_detailsGet Generation DetailsC

Get details of a specific generation by ID.

NameRequiredDescriptionDefault
generation_idYesThe generation ID (from list_history)

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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, yet it adds nothing about failure modes (invalid/nonexistent ID), whether the generation must be complete, or side effects. It essentially restates the tool name and relies on the output schema to explain what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no waste. It is efficient, though its brevity borders on under-specification rather than tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter getter with an output schema and fully documented parameter, the essentials are covered. Still, the description says nothing about error behavior or what 'details' encompasses, leaving minor gaps for an agent calling it cold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented as coming from list_history, which is more informative than the description. The description adds no syntax or format detail beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('details of a specific generation') scoped by ID, which is unambiguous. It does not name or differentiate itself from siblings like list_history, so it falls 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, prerequisites, or alternatives. The only hint that IDs come from list_history appears in the schema, not the description, so an agent gets no routing help from the text itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_server_infoGet Server InfoA

Get MCP server configuration, capabilities, and available tools.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the disclosure burden, and it does not explicitly state that this is a non-mutating read-only introspection call or whether any auth/scope is required. It does disclose the content of the response (configuration, capabilities, tools), and the presence of an output schema removes the need to describe return structure, keeping the gap moderate rather than severe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb first and the three returned artifacts listed compactly. There is no filler and nothing that could be trimmed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with an output schema covering the return payload, the description is nearly sufficient: it names what is returned and requires no argument knowledge. The only missing piece is the read-only/self-inspection framing, which would help an agent trust it as a safe discovery call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there are no arguments whose meaning could be ambiguous or under-documented. Nothing in the description is needed to supplement parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource: 'Get MCP server configuration, capabilities, and available tools' tells the agent exactly what is retrieved and enumerates the three content areas. It is clearly distinguished from the image-processing siblings, though it does not explicitly separate itself from discovery siblings like list_available_models or list_templates, which overlap in intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the introspection call to make before using the other tools, but the description never states when to prefer it over list_available_models or list_templates, nor any preconditions. No explicit when/when-not guidance is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_available_modelsList Available ModelsA

List all available image generation models with capabilities.

Returns model details including speed, quality, resolution support, and best use cases. Use this to pick the right model for your task.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. It does state the returned fields (speed, quality, resolution support, best use cases), which is useful, but says nothing about whether the list is static, requires auth, or is cached/rate-limited — modest coverage for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the verb and resource, and each adds information (what's returned, why to call it). Slightly verbose on the return-value recap given an output schema exists, but no real waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters and an output schema present, the description need only justify when to use the tool, which it does. The remaining gap is minor: no guidance on what to do with the returned model identifiers before calling generate_image.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly implies a parameterless, no-argument call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all available image generation models') plus what the results contain. Sibling tools like list_templates and list_history clearly cover different resources, so the agent can distinguish it without reading schemas, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context: 'Use this to pick the right model for your task,' which tells the agent when to call it relative to the generation workflow. It stops short of explicit exclusions or naming which sibling to call instead once a model is chosen.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_historyList HistoryC

List recent generation history.

NameRequiredDescriptionDefault
limitNoMaximum entries to return (default: 20)
offsetNoSkip this many entries (for pagination)
tool_filterNoFilter by tool name (generate_image, edit_image, etc.)

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It never states ordering (newest first?), whether history is scoped per user/session/workspace, how far back 'recent' reaches, or that the call is non-destructive — only the verb 'List' weakly implies read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence is front-loaded and free of waste, but at this length the brevity reflects under-specification rather than efficiency — there is no second sentence to establish scope or ordering.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, but for a tool with zero annotations the description should at least pin down ordering and history scope. Neither is present, leaving the agent to infer key behavior before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, and tool_filter are already fully documented with defaults (including the listed tool names). The description adds nothing to parameter meaning; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('generation history'), plus a scope hint ('recent'), so the agent knows this is a read-only listing of past generations. It does not distinguish itself from the closest sibling, get_generation_details, or clarify that history spans the image tools listed as siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus get_generation_details (single-entry lookup) or the individual generation tools. The only implied usage is 'recent', with no statement of recency window or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesList TemplatesB

List available prompt templates for image generation.

NameRequiredDescriptionDefault
categoryNoFilter by category (product_photography, social_media, illustration, portrait, architecture, food, fashion, abstract, logo, panoramic). Omit for all.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, and it discloses almost nothing: no indication of whether results are paginated, ordered, or scoped to a workspace, and no permission requirements. "List" implies a read-only operation, but that is inferred rather than stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; it earns its place but is thin enough that it leaves obvious questions unanswered. Efficient in form, minimal in content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple zero-required-parameter listing tool with a fully documented schema and an output schema that covers return values, so the description need not explain them. What is missing is only the bridge to apply_template, keeping it below a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the category parameter's allowed values are fully enumerated in the schema, so the description need not repeat them. It adds no extra meaning about filtering behavior, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("List available prompt templates") and adds the domain (image generation), so the purpose is unambiguous. It does not differentiate itself from the closely related sibling apply_template, which is the main reason 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus siblings such as apply_template, list_history, or list_available_models, nor any mention of what to do with the returned templates. The only implicit cue is "available," which merely hints at a browsing use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

optimize_promptOptimize PromptA

Enhance a basic prompt for dramatically better image results.

Uses AI to add details about lighting, composition, colors, textures, and artistic techniques. The #1 way to improve generation quality.

NameRequiredDescriptionDefault
modelNoText model override. Default gemini-3.5-flash-lite. Use gemini-3.8-flash for harder OCR or reasoning.
styleNoTarget style (optional): photorealistic, illustration, 3d_render, pixel_art, watercolor, oil_painting, sketch, anime, cinematic, product_photo, architecture, food, fashion, abstract
promptYesBasic prompt to enhance

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full behavioral burden. It discloses that an AI/text model performs the rewrite and what dimensions get enriched, which is genuinely informative, but it omits cost implications (notably given the estimate_cost sibling), latency, and whether the original prompt is preserved or mutated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and the enhancement dimensions are front-loaded in the first two sentences with little waste. The closing line ('The #1 way to improve generation quality') is marketing filler rather than operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter coverage in the schema, the description need not explain return values, and it adequately conveys what the tool does and what the enhancement covers. The remaining gap is workflow placement relative to generate_image and cost expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, including enumerated style values and model-override guidance, so the schema does the heavy lifting. The description adds no parameter-level meaning (no advice on when a style choice matters or what happens if style is null), leaving this at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('enhance') plus resource ('prompt') and an explicit outcome ('better image results'), with a sentence on what the AI adds (lighting, composition, colors, textures, techniques). It is clearly a prompt-rewriting step rather than generation, but it never names generate_image or another sibling, so differentiation is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'The #1 way to improve generation quality' hints that this should precede image generation, but the description never states a workflow ('call before generate_image'), a when-not condition, or what to do if the prompt is already detailed. Usage is implied rather than instructed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_backgroundRemove BackgroundA

Remove the background from an image.

Uses AI to isolate the main subject and remove the background. Best results with clear subjects against distinct backgrounds.

NameRequiredDescriptionDefault
image_pathYesPath to the image
output_formatNo"png" (default, supports transparency), "jpeg", or "webp"png
output_filenameNoCustom filename for result (optional)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the mechanism (AI subject isolation) and the quality dependency, which is real behavioral context. However, it omits that the tool produces a new image file on disk, whether existing files can be overwritten, and any cost or rate considerations — material for an unannotated write-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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then mechanism, then the one caveat that affects success. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and all three params are fully documented, so return values need not be explained. The remaining gap is the absence of any note about where the resulting file lands or whether the operation is billed, which an agent would want before invoking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents image_path, output_format, and output_filename. The description adds nothing about parameter behavior (e.g., that png preserves transparency for the cutout), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Remove the background from an image,' which an agent can immediately distinguish from siblings like edit_image, transform_image, and upscale_image. It doesn't explicitly name the neighboring tools it is not, but the operation is unambiguous on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Best results with clear subjects against distinct backgrounds' gives a quality precondition, which is useful, but the description never says when to choose this over edit_image/advanced_edit or what happens if the subject is unclear. Usage is implied rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transform_imageTransform ImageC

Transform an image using Pillow operations.

NameRequiredDescriptionDefault
xNo
yNo
textNoWatermark text
widthNo
factorNoSharpness factor (default: 2.0, >1 = sharper)
heightNo
radiusNoBlur radius (default: 2.0)
degreesNoRotation angle in degrees
opacityNoWatermark opacity 0.0-1.0 (default: 0.5)
positionNoWatermark position (default: 'bottom-right')bottom-right
directionNoFlip direction ('horizontal' or 'vertical')
operationYesOne of: crop, resize, rotate, flip, blur, sharpen, grayscale, watermark
image_pathYesPath to the image to transform
output_formatNoOutput format (png, jpeg, webp)png
maintain_aspectNoKeep aspect ratio when resizing (default: True)
output_filenameNoCustom output filename (optional)

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure for a mutation-style image tool. It implies image modification but does not state whether the original file is overwritten, where output is written, whether permissions are required, or what side effects occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded and free of filler, but it is under-specified rather than genuinely concise for a tool with 16 parameters. It does not earn its brevity by conveying enough information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a 16-parameter image mutation tool with no annotations, the description is far too thin. Although an output schema exists and the input schema documents many parameters, the description still lacks operation semantics, file-handling behavior, and sibling differentiation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so most parameters are documented in the schema, but the description adds no meaning beyond it. With 16 parameters and several undocumented numeric fields such as x, y, width, and height, the one-sentence description does not compensate for the remaining gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a generic verb and resource ("Transform an image") and mentions the underlying library, but "transform" is broad and does not distinguish this tool from siblings like edit_image, advanced_edit, upscale_image, or remove_background. It also omits the actual supported operations that are buried in the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the many other image-manipulation siblings, nor any prerequisites or exclusions. An agent must infer its role entirely from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upscale_imageUpscale ImageA

Upscale an image to a higher 1K/2K/4K size tier with a Gemini image model.

The source is re-rendered at a higher size tier with an instruction to reproduce it exactly. Fine details can differ from the source; for exact pixel scaling use transform_image(operation="resize").

NameRequiredDescriptionDefault
modelNoImage model to use (default gemini-nano-banana-2.1). gemini-3-pro-image is the other 4K-capable option.
image_pathYesPath to the image to upscale
output_formatNoOutput format (png, jpeg, webp)png
upscale_factorNo"x2" (double) or "x4" (quadruple). The output is the smallest of 1K/2K/4K that fits, capped at 4K.x2
output_filenameNoCustom output filename (optional)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and delivers the most important non-obvious trait: the result is a generative re-render, so 'fine details can differ from the source' — a crucial caveat an agent could not infer from the schema. It omits cost/latency, whether existing files are overwritten, and where output lands when output_filename is null.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the core capability front-loaded and the sibling escape hatch placed second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and all five parameters are fully described. The only remaining gap for a mutation-style, potentially costly generation tool is side effects (overwrite behavior, cost, latency), which the description does not address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter including the model choice and upscale_factor capping behavior is already documented in structured fields. The description reinforces the size-tier concept but adds no syntax or format detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Upscale an image') plus the mechanism ('re-rendered at a higher size tier with a Gemini image model') and the output tiers (1K/2K/4K). It explicitly contrasts itself with the sibling transform_image, so an agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative explicitly with its exact invocation: 'for exact pixel scaling use transform_image(operation="resize")'. The condition selecting each tool (generative upscale vs. deterministic resize) is stated, not inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.7.0
    • Changedadvanced_edit3 fields changed
      • changedInput schema / properties / mask_path / description
        Previous value: -"Optional mask image for inpainting operations"New value: +"Optional mask image for the inpainting modes"
      • addedInput schema / properties / model
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Image model to use (default gemini-nano-banana-2.1)"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"Edit instruction"New value: +"What to remove, add, replace, or the style to apply"
    • Changedupscale_image2 fields changed
      • addedInput schema / properties / model
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Image model to use (default gemini-nano-banana-2.1).\ngemini-3-pro-image is the other 4K-capable option."
        +}
      • changedInput schema / properties / upscale_factor / description
        Previous value: -"Scale factor: \"x2\" (double) or \"x4\" (quadruple)"New value: +"\"x2\" (double) or \"x4\" (quadruple). The output is\nthe smallest of 1K/2K/4K that fits, capped at 4K."
  2. 8 tool updatesv0.6.0
    • Changedanalyze_image1 field changed
      • addedInput schema / properties / model
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Analysis model override. Default gemini-3.5-flash-lite.\nUse gemini-3.8-flash for harder OCR or reasoning."
        +}
    • Changedcompare_images1 field changed
      • addedInput schema / properties / model
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Analysis model override. Default gemini-3.5-flash-lite.\nUse gemini-3.8-flash for harder OCR or reasoning."
        +}
    • Changeddetect_objects1 field changed
      • addedInput schema / properties / model
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Analysis model override. Default gemini-3.5-flash-lite.\nUse gemini-3.8-flash for harder OCR or reasoning."
        +}
    • Changededit_image1 field changed
      • changedInput schema / properties / model / description
        Previous value: -"Model override. \"gemini-3-pro-image-preview\" best\nfor complex multi-turn edits."New value: +"Model override. Default \"gemini-nano-banana-2.1\";\n\"gemini-3-pro-image\" is best for complex multi-turn edits."
    • Changedestimate_cost1 field changed
      • changedInput schema / properties / model / description
        Previous value: -"Model to estimate for (default: all models)"New value: +"Model to estimate for (default: all models that\nsupport the operation). Image models price generate/edit\nper image at 1K; text models price analyze per call."
    • Changedextract_text1 field changed
      • addedInput schema / properties / model
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Analysis model override. Default gemini-3.5-flash-lite.\nUse gemini-3.8-flash for harder OCR."
        +}
    • Changedgenerate_image5 fields changed
      • changedInput schema / properties / image_size / description
        Previous value: -"Resolution: \"1K\" (default), \"2K\", or \"4K\""New value: +"Resolution: \"0.5K\" (gemini-3.1-flash-image only),\n\"1K\" (default), \"2K\", or \"4K\". 2K/4K are not supported by\ngemini-3.1-flash-lite-image."
      • changedInput schema / properties / model / description
        Previous value: -"Model override. Options:\n- \"gemini-2.5-flash-image\" (default): Fast, cheap\n- \"gemini-3-pro-image-preview\": Best text, complex edits\n- \"gemini-3.1-flash-image-preview\": Panoramic, fast 4K"New value: +"Model override. Options:\n- \"gemini-nano-banana-2.1\" (default): Best all-round,\n  panoramic, grounding\n- \"gemini-3.1-flash-lite-image\": Fastest, cheapest, 1K only\n- \"gemini-3.1-flash-image\": Panoramic, grounding, 0.5K tier\n- \"gemini-3-pro-image\": Best text rendering, complex edits"
      • changedInput schema / properties / person_generation / description
        Previous value: -"People in images: \"allow\", \"adults_only\"\n(no minors), or \"block\" (no people). Only enforced with\nImagen models. Gemini has built-in person restrictions."New value: +"Accepted for compatibility (\"allow\",\n\"adults_only\", \"block\"). Not enforced by the Gemini API;\nGemini applies its own built-in restrictions on\nidentifiable people."
      • changedInput schema / properties / quality / description
        Previous value: -"Quality preset: \"fast\" (cheapest), \"balanced\"\n(good quality), or \"quality\" (best output). Mutually\nexclusive with 'model'."New value: +"Quality preset: \"fast\" (gemini-3.1-flash-lite-image),\n\"balanced\" (gemini-nano-banana-2.1), or \"quality\"\n(gemini-3-pro-image, 2K). Mutually exclusive with 'model'."
      • changedInput schema / properties / reference_images / description
        Previous value: -"Paths to reference images for style/character\nconsistency (up to 14 images)"New value: +"Paths to reference images for style/character\nconsistency (up to 14 images on gemini-nano-banana-2.1\nand gemini-3.1-flash-image; 6 on gemini-3-pro-image)"
    • Changedoptimize_prompt1 field changed
      • addedInput schema / properties / model
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Text model override. Default gemini-3.5-flash-lite.\nUse gemini-3.8-flash for harder OCR or reasoning."
        +}
  3. 19 tool updatesv0.5.4
    • First observedadvanced_edit
    • First observedanalyze_image
    • First observedapply_template
    • First observedbatch_generate
    • First observedcompare_images
    • First observeddetect_objects
    • First observededit_image
    • First observedestimate_cost
    • First observedextract_text
    • First observedgenerate_image
    • First observedget_generation_details
    • First observedget_server_info
    • First observedlist_available_models
    • First observedlist_history
    • First observedlist_templates
    • First observedoptimize_prompt
    • First observedremove_background
    • First observedtransform_image
    • First observedupscale_image

TDQS

B3.2/5.0

Scored across 19 tools

Disambiguation4/5

Most tools have clearly distinct purposes: generate_image vs batch_generate, analyze_image vs detect_objects vs extract_text, and transform_image vs upscale_image are well differentiated. Some mild overlap remains between edit_image and advanced_edit, and between list_available_models and get_server_info, though descriptions provide enough guidance.

Naming Consistency4/5

All tool names use snake_case, which is consistent throughout. Most follow a verb_noun pattern, but a few are adjective/noun-first or otherwise nonstandard, such as advanced_edit and batch_generate, keeping it from being perfectly predictable.

Tool Count4/5

Nineteen tools is slightly above the ideal range, but the server covers a broad image platform spanning generation, editing, analysis, utilities, prompt assistance, cost estimation, and history. The count is defensible overall, though the surface is on the heavy side.

Completeness4/5

The server covers the core image lifecycle well: generation, batching, editing, upscaling, Pillow transforms, background removal, analysis, OCR, object detection, comparison, prompt templates, cost estimation, and history. Minor gaps exist around template/history management, such as no create/delete template or delete history operations.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers