Skip to main content
Glama

Z-Image Studio

Python Version License uv FastAPI PyTorch Hugging Face Apple Silicon Nvidia CUDA AMD ROCm Intel XPU Docker Docs AgentSeal MCP

A Cli, a webUI, and a MCP server for the Z-Image-Turbo text-to-image generation model (Tongyi-MAI/Z-Image-Turbo and its variants).

This tool is designed to run efficiently on local machines for Windows/Mac/Linux users. It features specific optimizations for NVIDIA (CUDA), AMD on Linux (ROCm), Intel (XPU), and Apple Silicon (MPS), falling back to CPU if no compatible GPU is detected.

Screenshot 0

Features

Hybrid Interfaces:

  • CLI: Fast, direct image generation from the terminal.

  • Web UI: Modern web interface for interactive generation.

  • MCP Server: Capability to be called by AI agents.

CLI and core features

  • Z-Image-Turbo Model: Utilizes the high-quality Tongyi-MAI/Z-Image-Turbo model and quatized variants via diffusers.

  • MPS Acceleration: Optimized for Mac users with Apple Silicon.

  • ROCm Support: Explicitly supported on Linux for AMD GPUs.

  • Intel XPU Support: Supports Intel XPU when running an Intel-enabled PyTorch build.

  • Attention Slicing Auto-detection: Automatically manages memory usage (e.g., enables attention slicing for systems with lower RAM/VRAM) to prevent Out-of-Memory errors and optimize performance.

  • Seed Control: Reproducible image generation via CLI or Web UI.

  • Multiple LoRA Support: Upload/manage LoRAs in the web UI, apply up to 4 with per-LoRA strengths in a single generation; CLI supports multiple --lora entries with optional strengths.

  • Automatic Dimension Adjustment: Ensures image dimensions are compatible (multiples of 16).

  • Customizable Output Directory: Image output directory can be customized via config file and environment variable.

Web UI features

  • Multilanguage Support: English, Japanese, Chinese Simplified (zh-CN), and Chinese Traditional (zh-TW) are supported.

  • History Browser: Efficiently search and browse your past generations with a paginated history that loads more items as you scroll.

  • Hardware-aware Model Recommendation: The Web UI dynamically presents model precision options based on your system's detected RAM/VRAM, recommending the optimal choice for your hardware. You can also inspect available models and recommendations via the CLI.

  • Image Sharing: The generated image can be downloaded to browser download directory, conveniently shared via OS share protocol, and copied into clipboard.

  • Theme Switch: Light, dark and auto themes.

  • Mobile compatible: Responsive layout for mobile devices.

MCP features

  • MCP Server (stdio + SSE + Streamable HTTP): Expose tools for image generation, listing models, and viewing history over Model Context Protocol; stdio entrypoints (zimg mcp, zimg-mcp) for local agents, SSE available at /mcp-sse, and MCP 2025-03-26 Streamable HTTP transport at /mcp.

  • Transport-Agnostic Content: All transports (stdio, SSE, Streamable HTTP) return identical structured content for consistent agent integration.

  • Client Transport Selection: Clients should try Streamable HTTP (/mcp) first for optimal performance, falling back to SSE (/mcp-sse) if needed.

Related MCP server: MCP Image Generator

Requirements

  • Python >= 3.11

  • uv (recommended for dependency management)

Python 3.12+ Note: torch.compile is disabled by default for Python 3.12+ due to known compatibility issues with the Z-Image model architecture. If you want to experiment with torch.compile on Python 3.12+, set ZIMAGE_ENABLE_TORCH_COMPILE=1 via environment variable or in ~/.z-image-studio/config.json (experimental, may cause errors).

GPU acceleration notes

  • NVIDIA (CUDA): Works with standard PyTorch CUDA builds.

  • AMD on Linux (ROCm): Explicitly supported on Linux.

    Note: AMD GPU support currently requires ROCm, which is only available for Linux PyTorch builds. Windows users with AMD GPUs will currently fall back to CPU.

    • Installation: Install AMD ROCm drivers/runtime for your distribution. Then install PyTorch with ROCm support (e.g., via pip install torch --index-url https://download.pytorch.org/whl/rocm6.1 or similar). Ensure the PyTorch ROCm version matches your installed driver version.

    • Verification: The app will automatically detect your device as "rocm". You can confirm this by running zimg models.

    • Troubleshooting:

      • If the app falls back to CPU, ensure torch.version.hip is detected.

      • HSA Override: For some consumer GPUs (e.g., RX 6000/7000 series) not officially supported by all ROCm versions, you may need to set HSA_OVERRIDE_GFX_VERSION (e.g., 10.3.0 for RDNA2, 11.0.0 for RDNA3).

      • Performance: torch.compile is disabled by default on ROCm due to experimental support. You can force-enable it with ZIMAGE_ENABLE_TORCH_COMPILE=1 if your setup (Triton/ROCm version) supports it.

  • Intel (XPU): Supported when PyTorch is built with Intel XPU backend.

    • Verification: The app will detect your device as "xpu" in zimg models.

    • Compatibility: CUDA-specific components/features are not guaranteed on XPU.

  • Apple Silicon (MPS): Uses PyTorch MPS backend on macOS.

Global installation

If you just want the zimg CLI to be available from anywhere, install it as a uv tool:

uv tool install git+https://github.com/iconben/z-image-studio.git
# or, if you have the repo cloned locally:
# git clone https://github.com/iconben/z-image-studio.git
# cd z-image-studio
# uv tool install .

After this, the zimg command is available globally:

zimg --help

To update z-image-studio:

uv tool upgrade z-image-studio
# or, if you have the repo cloned locally, you pull the latest source code:
# git pull

Windows Installation

For Windows users, a pre-built installer is available that bundles everything you need:

  1. Download the latest installer from GitHub Releases

  2. Run Z-Image-Studio-Windows-x64-x.x.x.exe

  3. Follow the installation wizard

  4. Launch from the Start Menu:

    • Z-Image Studio (Web UI): Starts the web server and opens your browser

    • Z-Image Studio CLI: Opens a console for command-line usage

Installation Details

  • Install Location: C:\Program Files\Z-Image Studio

  • User Data: %LOCALAPPDATA%\z-image-studio (contains database, LoRAs, and outputs)

  • Uninstall: Use "Add or Remove Programs" or the uninstall shortcut in the Start Menu

System Requirements

  • Windows 10 or Windows 11

  • NVIDIA GPU with CUDA support (recommended) or compatible AMD GPU

  • 8GB+ RAM (16GB+ recommended for full precision models)

Docker Installation

Run Z-Image Studio in a container with Docker:

Quick Start

# Create persistent volume
docker volume create zimg-data

# Run the container
docker run -d \
  --name z-image-studio \
  -p 8000:8000 \
  -v zimg-data:/data \
  -v zimg-config:/home/appuser/.z-image-studio \
  -v zimg-outputs:/data/outputs \
  iconben/z-image-studio:latest

Then open http://localhost:8000 in your browser.

With Docker Compose

Create a docker-compose.yml file:

services:
  z-image-studio:
    image: iconben/z-image-studio:latest
    container_name: z-image-studio
    ports:
      - "8000:8000"
    volumes:
      - zimg-data:/data
      - zimg-config:/home/appuser/.z-image-studio
      - zimg-outputs:/data/outputs
    restart: unless-stopped

volumes:
  zimg-data:
  zimg-config:
  zimg-outputs:

Then run:

docker compose up -d

With GPU Support

NVIDIA GPU:

services:
  z-image-studio:
    image: iconben/z-image-studio:latest
    container_name: z-image-studio
    ports:
      - "8000:8000"
    volumes:
      - zimg-data:/data
      - zimg-config:/home/appuser/.z-image-studio
      - zimg-outputs:/data/outputs
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

volumes:
  zimg-data:
  zimg-config:
  zimg-outputs:

AMD GPU (Linux):

services:
  z-image-studio:
    image: iconben/z-image-studio:latest
    container_name: z-image-studio
    ports:
      - "8000:8000"
    volumes:
      - zimg-data:/data
      - zimg-config:/home/appuser/.z-image-studio
      - zimg-outputs:/data/outputs
    devices:
      - /dev/dri:/dev/dri
    restart: unless-stopped

volumes:
  zimg-data:
  zimg-config:
  zimg-outputs:

Then run:

docker compose up -d

With Docker Run

Basic:

docker run -d \
  --name z-image-studio \
  -p 8000:8000 \
  -v zimg-data:/data \
  -v zimg-config:/home/appuser/.z-image-studio \
  -v zimg-outputs:/data/outputs \
  iconben/z-image-studio:latest

NVIDIA GPU:

docker run -d \
  --name z-image-studio \
  -p 8000:8000 \
  --gpus all \
  -v zimg-data:/data \
  -v zimg-config:/home/appuser/.z-image-studio \
  -v zimg-outputs:/data/outputs \
  iconben/z-image-studio:latest

AMD GPU (Linux):

docker run -d \
  --name z-image-studio \
  -p 8000:8000 \
  --device /dev/dri:/dev/dri \
  -v zimg-data:/data \
  -v zimg-config:/home/appuser/.z-image-studio \
  -v zimg-outputs:/data/outputs \
  iconben/z-image-studio:latest

Data Persistence

The container uses Docker volumes for persistence:

Volume

Path

Description

zimg-data

/data

Database and LoRA storage

zimg-outputs

/data/outputs

Generated images

zimg-config

/home/appuser/.z-image-studio

User configuration

Note: The data directories (/data and /data/outputs) are set as defaults in the Dockerfile. Override with environment variables only if needed.

Environment Variables

Variable

Default

Description

HOST

0.0.0.0

Server bind host

PORT

8000

Server bind port

ZIMAGE_BASE_URL

Auto

Base URL for generated links

ZIMAGE_DISABLE_MCP

0

Disable MCP endpoints

ZIMAGE_ENABLE_TORCH_COMPILE

Auto

Force torch.compile

Development Mode

Mount source code for development:

docker run -d \
  --name z-image-studio-dev \
  -p 8000:8000 \
  -v $(pwd)/src:/app/src \
  -v zimg-data:/data \
  -e DEBUG=1 \
  iconben/z-image-studio:latest

Management Commands

# View logs
docker logs -f z-image-studio

# Stop container
docker stop z-image-studio

# Remove container (data preserved)
docker rm z-image-studio

# Remove all data
docker volume rm zimg-data zimg-outputs zimg-config

pip / uv Installation

Install Z-Image Studio via pip or uv:

pip install z-image-studio
# or
uv pip install z-image-studio

After installation, the zimg command is available globally:

zimg --help

From Source

git clone https://github.com/iconben/z-image-studio.git
cd z-image-studio
pip install -e .
# or
uv pip install -e .

Usage

After installation, you can use the zimg command directly from your terminal.

1. CLI Generation (Default Mode)

Generate images directly from the command line using the generate (or gen) subcommand.

# Basic generation
zimg generate "A futuristic city with neon lights"

# Using the alias 'gen'
zimg gen "A cute cat"

# Custom output path
zimg gen "A cute cat" --output "my_cat.png"

# High quality settings
zimg gen "Landscape view" --width 1920 --height 1080 --steps 20

# With a specific seed for reproducibility
zimg gen "A majestic dragon" --seed 12345

# Select model precision (full, q8, q4)
zimg gen "A futuristic city" --precision q8

# Skip writing to history DB
zimg gen "Quick scratch" --no-history

2. Web Server Mode

Launch the web interface to generate images interactively.

# Start server on default port (http://localhost:8000)
zimg serve

# Start on custom host/port
zimg serve --host 0.0.0.0 --port 9090

Once started, open your browser to the displayed URL.

3. MCP Server Mode (Model Context Protocol)

Run Z-Image Studio as an MCP server:

# stdio transport (ideal for local agents/tools); also available as `zimg mcp`
zimg-mcp

# MCP transports are available when you run the web server:
zimg serve          # Both Streamable HTTP (/mcp) and SSE (/mcp-sse) available
zimg serve --disable-mcp   # Disable all MCP endpoints

Available tools: generate (prompt to image), list_models, and list_history. Logs are routed to stderr to keep MCP stdio clean.

Connecting an AI agent (e.g., Claude Desktop) to zimg-mcp

  1. Ensure dependencies are installed (uv sync) and that zimg-mcp is on PATH (installed via uv tool install . or run locally via uv run zimg-mcp).

  2. In Claude Desktop (or any MCP-aware client), add a local mcp server entry like:

    {
      "mcpServers": {
        "z-image-studio": {
          "command": "zimg-mcp",
          "args": [],
          "env": {}
        }
      }
    }

    Adjust the command to a full path if not on PATH. If the agent cannot find the zimg-mcp command, you can also try setting the path in environment.

    Different agents may have slightly different parameters, for example, cline will timeout fast if you do not explicitly set a timeout parameter. Here is the example for cline:

    {
      "mcpServers": {
        "z-image-studio": {
          "command": "zimg-mcp",
          "type": "stdio",
          "args": [],,
          "env": {},
          "disabled": false,
          "autoApprove": [],
          "timeout": 300
        }
      }
    }

    Detailed syntax may vary, please refer to the specific agent's documentation.

  3. For Clients that support remote mcp server, configure the client with the streamable Http mcp endpoint URL (meanwhile keep the server up by running zimg serve). Here is an example for Gemini CLI:

    {
      "mcpServers": {
        "z-image-studio": {
          "httpUrl": "http://localhost:8000/mcp"
        }
      }
    }

    Detailed syntax may vary, please refer to the specific agent's documentation.

  4. For legacy SSE , run zimg serve and configure the client with the SSE endpoint URL. Here is an example for Cline CLI:

    {
      "mcpServers": {
        "z-image-studio": {
          "url": "http://localhost:8000/mcp-sse/sse"
        }
      }
    }

    Detailed syntax may vary, please refer to the specific agent's documentation.

  5. The agent will receive tools: generate, list_models, list_history.

MCP Content Structure

The generate tool returns a consistent content array with three items in this order:

  1. TextContent: Enhanced metadata including generation info, file details, and preview metadata

    {
      "message": "Image generated successfully",
      "duration_seconds": 1.23,
      "width": 1280,
      "height": 720,
      "precision": "q8",
      "model_id": "z-image-turbo-q8",
      "seed": 12345,
      "filename": "image_12345.png",
      "file_path": "/absolute/path/to/image_12345.png",
      "access_note": "Access full image via ResourceLink.uri or this URL",
      "preview": true,
      "preview_size": 400,
      "preview_mime": "image/png"
    }
    • SSE/Streamable HTTP Transports: url and access_note point to the absolute image URL

    • Stdio Transport: file_path and access_note point to the local file path

  2. ResourceLink: Main image file reference with context-appropriate URI

    • SSE/Streamable HTTP Transports: Absolute URL built from request context, ZIMAGE_BASE_URL, or relative path

    • Stdio Transport: file:// URI for local access

    URI Building Priority (SSE/Streamable HTTP):

    1. Request Context (via Context parameter) - builds absolute URL from X-Forwarded-* headers

    2. ZIMAGE_BASE_URL environment variable - configured base URL

    3. Relative URL - fallback when no other method available

    Example with Context parameter:

    @mcp.tool()
    async def generate_with_context(..., ctx: Context) -> ...:
        request = ctx.request_context.request
        proto = request.headers.get('x-forwarded-proto', 'http')
        host = request.headers.get('x-forwarded-host', 'localhost')
        return ResourceLink(uri=f"{proto}://{host}/outputs/image.png", ...)
    {
      "type": "resource_link",
      "name": "image_12345.png",
      "uri": "https://example.com/outputs/image_12345.png",
      "mimeType": "image/png"
    }
  3. ImageContent: Thumbnail preview (base64 PNG, max 400px)

    {
      "data": "base64-encoded-png-data",
      "mimeType": "image/png"
    }

This structure ensures:

  • Consistency: Same content for both stdio and SSE transports

  • Efficiency: No URL/path duplication across content items

  • Flexibility: ResourceLink provides file access while ImageContent offers immediate preview

  • Compatibility: Follows MCP best practices for structured content types

Command Line Arguments

Subcommand: generate (alias: gen)

Argument

Short

Type

Default

Description

prompt

str

Required

The text prompt for image generation.

--output

-o

str

None

Custom output filename. Defaults to outputs/<prompt-slug>.png inside the data directory.

--steps

int

9

Number of inference steps. Higher usually means better quality.

--width

-w

int

1280

Image width (automatically adjusted to be a multiple of 8).

--height

-H

int

720

Image height (automatically adjusted to be a multiple of 8).

--seed

int

None

Random seed for reproducible generation.

--precision

str

q8

Model precision (full, q8, q4). q8 is the default and balanced, full is higher quality but slower, q4 is fastest and uses less memory.

--lora

str

[]

LoRA filename or path, optionally with strength (name.safetensors:0.8). Can be passed multiple times (max 4); strength is clamped to -1.0..2.0.

--no-history

bool

False

Do not record this generation in the history database.

Subcommand: serve

Argument

Type

Default

Description

--host

str

0.0.0.0

Host to bind the server to.

--port

int

8000

Port to bind the server to.

--reload

bool

False

Enable auto-reload (for development).

--timeout-graceful-shutdown

int

5

Seconds to wait for graceful shutdown before forcing exit.

--disable-mcp

bool

False

Disable all MCP endpoints (/mcp and /mcp-sse).

Subcommand: models

Argument

Short

Type

Default

Description

(None)

Lists available image generation models and local cache status (cached flag, cache path, cache size).

list

Explicit alias for list behavior (zimg models list).

clear <precision>

str

Required

Clear local cached files for one precision (full, q8, q4).

Subcommand: info

Argument

Type

Default

Description

--json

bool

False

Output application diagnostics as JSON (for scripts/tools).

(none)

Shows version, runtime details, resolved data/config/output paths, env overrides, and hardware probe info.

Subcommand: mcp

Argument

Type

Default

Description

(none)

Stdio-only MCP server (for agents). Use zimg-mcp or zimg mcp.

Data Directory and Configuration

By default, Z-Image Studio uses the following directories:

  • Data Directory (Database, LoRAs): ~/.local/share/z-image-studio (Linux), ~/Library/Application Support/z-image-studio (macOS), or %LOCALAPPDATA%\z-image-studio (Windows).

  • Output Directory (Generated Images): <Data Directory>/outputs by default.

Configure the directory

  • Config File: ~/.z-image-studio/config.json (created on first run after migration).

    • Override the data directory with Z_IMAGE_STUDIO_DATA_DIR.

    • If you want the output directory sit in another location instead of the data directory, you can override it with Z_IMAGE_STUDIO_OUTPUT_DIR.

Directory structure inside Data Directory by default:

  • zimage.db: SQLite database

  • loras/: LoRA models

  • outputs/: Generated image files

One-time Migration (automatic)

On first run without an existing config file, the app migrates legacy data by moving:

  • outputs/, loras/, and zimage.db from the current working directory (old layout) into the new locations.

Screenshots

Screenshot 1 (Screenshot 1: Two column layout with History browser collapsed)

Screenshot 2 (Screenshot 2: Three column layout with History browser pinned)

Screenshot 3 (Screenshot 3: Generated Image zoomed to fit the screen)

Development

Installation in Project Virtual Environment

  1. Clone the repository:

    git clone https://github.com/iconben/z-image-studio.git
    cd z-image-studio

To run the source code directly without installation:

  1. Run CLI:

    uv run src/zimage/cli.py generate "A prompt"
  2. Run Server:

    uv run src/zimage/cli.py serve --reload
  3. Run tests:

    uv run pytest

Optional: Install in editable mode:**

First install it:
```bash
uv pip install -e .
```

After this, the `zimg` command is available **inside this virtual environment**:

Then use the zimg command in either ways:

Using `uv` (recommended):
```bash
uv run zimg generate "A prompt"
```

or use in more traditional way:
```bash
source .venv/bin/activate  # Under Windows: .venv\Scripts\activate
zimg serve
```

Optional: Override the folder settings with environment variables

 If you do not want your development data mess up your production data,
 You can define environment variable Z_IMAGE_STUDIO_DATA_DIR to change the data folder for
 You can also define environment variable Z_IMAGE_STUDIO_OUTPUT_DIR to change the output folder to another separate folder

Docker Development

Build and run with Docker:

# Build the image
docker build -t z-image-studio:dev .

# Run with source mounted for hot-reload
docker run -d \
  --name zimg-dev \
  -p 8000:8000 \
  -v $(pwd)/src:/app/src \
  -v zimg-data:/data \
  -e DEBUG=1 \
  -e ZIMAGE_ENABLE_TORCH_COMPILE=1 \
  z-image-studio:dev

Or use Docker Compose:

docker compose up -d

Environment Variables

Variable

Description

ZIMAGE_ENABLE_TORCH_COMPILE

Force enable torch.compile optimization (experimental). By default disabled for Python 3.12+ due to known compatibility issues. Can be set to 1 via environment variable or config file (~/.z-image-studio/config.json) to enable at your own risk.

Z_IMAGE_STUDIO_DATA_DIR

Override the default data directory location.

Z_IMAGE_STUDIO_OUTPUT_DIR

Override the default output directory location.

Notes

  • Guidance Scale: The script hardcodes guidance_scale=0.0 as required by the Turbo model distillation process.

  • Safety Checker: Disabled by default to prevent false positives and potential black image outputs during local testing.

For detailed architecture and development guidelines, see docs/architecture.md.

Available Tools

3 tools
generateA
Generate an image from a text prompt.

Returns a consistent content array for both stdio and SSE transports:
1. TextContent: Enhanced metadata including generation info and file details
2. ResourceLink: Main image file reference with context-appropriate URI:
   - SSE: Absolute URL built from request context (X-Forwarded-* headers), ZIMAGE_BASE_URL, or relative path
   - Stdio: file:// URI for local access
3. ImageContent: Thumbnail preview (base64 PNG, max 400px)

URI Building Priority (SSE):
1. Context parameter (ctx.request_context.request) - builds absolute URL from request headers
2. ZIMAGE_BASE_URL environment variable - uses configured base URL
3. Relative URL - fallback when no other method available

File metadata (filename, file_path) is in TextContent to avoid duplication in ResourceLink.

For long-running operations (high steps/large images), this function will:
- Send progress notifications at key milestones via ctx.report_progress()
- Handle client disconnections gracefully
ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
stepsNoNumber of inference steps (max bounded by server config)
widthNoImage width in pixels (max bounded by server config)
heightNoImage height in pixels (max bounded by server config)
promptYes
precisionNoq8

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description fully discloses return structure (three content types), transport-dependent URI building, progress notifications for long-running operations, and client disconnection handling. It is transparent about key behaviors, though it omits side effects or auth requirements.

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 description front-loads the core purpose and uses structured bullet points for return type details and URI building priority. While somewhat verbose on transport specifics, it is well-organized and each section adds meaningful detail.

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?

Given 6 parameters, no annotations, and existing output schema, the description covers the tool's operation and return structure but lacks constraints on parameter values (e.g., valid ranges for steps/dimensions) and usage examples. It is adequate but not complete.

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?

The schema has 50% description coverage for 6 parameters. The description does not elaborate on any parameter meanings or constraints beyond the schema's own descriptions, failing to add value for the agent's understanding of parameters like seed, precision, etc.

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?

The description begins with a clear statement: 'Generate an image from a text prompt.' This provides a specific verb and resource, and the tool is easily distinguishable from its siblings (list_history, list_models).

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 implies usage for image generation but does not explicitly tell when to use this tool versus alternatives, nor does it provide conditions for not using it. No exclusions or alternative suggestions are given.

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

list_historyC

List recent image generations history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to mention ordering, pagination behavior, or any side effects, leaving the agent with minimal insight into how the tool behaves beyond listing.

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 description is a single efficient sentence that conveys purpose without extraneous words. However, it lacks structural elements like bullet points or explicit parameter explanations. It earns its place but is slightly under-developed.

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 list tool with an output schema, the description is minimally adequate. It does not explain pagination, ordering, or the nature of the output, but the presence of the output schema reduces the burden. Missing usage context lowers completeness.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no information about the 'limit' and 'offset' parameters beyond what the schema already provides. The description must compensate for low coverage but does not.

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 clearly states the verb 'List' and the resource 'recent image generations history', effectively distinguishing it from sibling tools 'generate' and 'list_models'. However, 'recent' is ambiguous and not defined.

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 is provided on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description simply states the function without context.

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

list_modelsA

List available image generation models and hardware recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description fully carries the burden of disclosing behavior. It states the tool lists models and hardware recommendations, implying a read-only operation with no side effects. The behavior is clear for a simple list operation.

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 a single sentence of nine words, front-loaded with the verb 'List'. Every word is necessary, and there is no extraneous 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?

Given the tool has no parameters and an output schema exists (to describe return values), the description is largely sufficient. It covers the tool's purpose, though it lacks mention of when it should be called or any prerequisites.

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?

There are no parameters, and schema coverage is trivially 100%. The description adds no parameter information because none exist, meeting the baseline for high coverage.

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?

The description clearly states the tool lists available image generation models and hardware recommendations. It uses a specific verb ('List') and resource ('image generation models'), and distinguishes from siblings ('generate' and 'list_history') by its function.

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 does not explicitly state when to use this tool versus alternatives, but the context of sibling tools implies it is used before 'generate' to see available models. No 'when-not' or alternative references are provided.

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. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedgenerate
    • First observedlist_history
    • First observedlist_models

TDQS

A3.5/5.0
Disambiguation5/5

The three tools have completely distinct purposes: generating images, listing generation history, and listing available models. There is no functional overlap, so an agent can clearly differentiate them.

Naming Consistency5/5

All tool names use lowercase snake_case with a clear verb-first pattern. Although 'generate' is a single verb while the others are 'list_*', the convention is consistent and predictable across the set.

Tool Count4/5

With only 3 tools, the server is on the minimal side but still covers the core functionality of an image generation service. It falls within the acceptable range for a focused tool, though a few more utilities could enhance its scope.

Completeness3/5

The server includes essential operations: generate, view history, and list models. However, it lacks common lifecycle operations such as deleting history entries, viewing a specific generation's details, or updating a generation, which may hinder some workflows.

Maintenance

ActivitySlowing
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/iconben/z-image-studio'

If you have feedback or need assistance with the MCP directory API, please join our Discord server