Skip to main content
Glama

zhenzhen-nanobanana-mcp

用于家居日用百货电商绘图的本地 MCP Server,支持商品主图、详情页、家居场景图、营销海报及参考图编辑。通过本地 stdio 接入 Host,使用 t8star 图像服务;图像生成与编辑会产生上游费用。

批量任务先写入本地 SQLite 并立即返回,Agent 后续查询结果,无需用一次工具调用等待整批渲染。图片自动保存到本机,参考图可直接使用可读取的本机绝对路径或公开 HTTP/HTTPS 图片 URL,无需搬到 input 文件夹。

当前状态

  • 当前候选版本:0.2.1,本轮仅准备 Release 草稿,尚未正式公开;见候选版本说明。Python 3.12.14,uv 0.12.9,FastMCP 4.1.0,MCP SDK 2.3.0。

  • 正式版本:v0.2.0,提交 66555d72742cf54b98bd3dc4c57a94d3a98d7818,对应 Windows CI 成功;独立安装及协议验收通过。Windows 是当前安装和验收平台;未声明 Linux/macOS 已验收。

  • 当前开发版默认安装到 D:\MCP\zhenzhen-nanobanana-mcp,仅调整盘符,目录层级不变。已发布 v0.2.0 的文件保持原样;使用其安装脚本时显式传入 -InstallRoot 'D:\MCP',Host 模板中的路径按本页调整。日常启动不拉取最新 main。

  • Codex app-server、DSH CLI 的工具发现及免费调用已验证;GUI、自主选工具和各 Host 完整私人配置不在该结论内,见 Host 验收。

Related MCP server: EFLOWCODE Image MCP

快速安装与配置

需要 Git、PowerShell 7 和 uv 0.12.9;uv 根据项目版本文件安装/使用 Python 3.12.14。首次安装需访问 GitHub、Python 下载源和 PyPI。以下命令在 PowerShell 7 中执行,安装父目录需可写;已有目录请按升级/迁移流程处理。

$ErrorActionPreference = 'Stop'
$ProjectDir = 'D:\MCP\zhenzhen-nanobanana-mcp'
$ExpectedCommit = '66555d72742cf54b98bd3dc4c57a94d3a98d7818'
if (Test-Path -LiteralPath $ProjectDir) { throw '目录已存在,请按手册更新,不能覆盖安装。' }
New-Item -ItemType Directory -Path (Split-Path -Parent $ProjectDir) -Force | Out-Null
git clone --branch v0.2.0 --single-branch 'https://github.com/tsyecommercialdesigner-cloud/zhenzhen-nanobanana-mcp.git' $ProjectDir
if ($LASTEXITCODE -ne 0) { throw '仓库获取失败。' }
git -C $ProjectDir checkout --detach $ExpectedCommit
if ($LASTEXITCODE -ne 0) { throw '固定提交不存在,停止安装。' }
$ActualCommit = git -C $ProjectDir rev-parse HEAD
if ($LASTEXITCODE -ne 0 -or $ActualCommit -cne $ExpectedCommit) { throw '提交核验失败。' }
uv --directory $ProjectDir sync --locked --no-dev
if ($LASTEXITCODE -ne 0) { throw '锁定依赖安装失败。' }

在同一个 PowerShell 会话中创建并打开项目私有 .env,保留已有文件:

$EnvPath = Join-Path $ProjectDir '.env'
if (!(Test-Path -LiteralPath $EnvPath)) {
  [IO.File]::Copy((Join-Path $ProjectDir '.env.example'), $EnvPath, $false)
}
notepad.exe $EnvPath

在编辑器中填写 ZHENZHEN_NANOBANANA_API_KEY= 的值,保存为 UTF-8。使用原始密钥,不加 Bearer ;不要把真实值写入共享命令、Host 模板或 Git。

服务固定读取实际项目根目录 .env,逐字段优先级为 项目 .env → 进程环境 → Windows 当前用户环境,统一使用 ZHENZHEN_NANOBANANA_API_KEY,旧名称不再读取。只有缺失才回退;空值、非法值、重复字段或文件解析失败会阻止启动。详细配置、权限和升级保留规则见手册。

安装后先执行不收费的协议检查:

pwsh -NoProfile -File (Join-Path $ProjectDir 'scripts\smoke-test.ps1')
if ($LASTEXITCODE -ne 0) { throw '协议检查失败。' }

smoke 使用隔离假配置,不调用绘图接口,也不证明真实密钥或上游业务可用。日常由 Host 使用下列入口启动,不安装、构建或升级依赖;手工运行 stdio 服务会等待协议输入:

uv --directory 'D:\MCP\zhenzhen-nanobanana-mcp' run --no-sync python -m zhenzhen_nanobanana_mcp

接入客户端

完整添加、保存、启用、工具发现和排障步骤见 MANUAL 第 4 节,不要覆盖 Host 中已有的其它服务。

Host

配置模板

Codex

TOML

DSH / App

profile YAML

Claude Code

JSON

Cherry Studio

JSON

模板使用 D:\MCP\zhenzhen-nanobanana-mcp;安装到其它位置时修改 --directory 的绝对路径。密钥由服务读取,默认不填入 Host 配置。

异步绘图工作流

公开 6 个工具,另提供 1 个 Prompt、1 个 Resource;详细参数和结构见手册资源清单与工具契约。

工具

用途

list_models

免费查看模型、接口限制、并发和配置状态

plan_ecommerce_images

免费生成待审阅的主图/详情页/场景/海报计划

submit_image_tasks

一次登记 1–12 项后台生成/编辑任务,立即返回;后台会收费

get_image_tasks

按原身份查询状态、结果和图片绝对路径,不重新提交

cancel_image_tasks

取消任务;已发送任务不保证远端停止或退款

get_batch_result

查询旧版 request_id 批次记录,不生成图片

先核实商品事实与计划,再为每项分配稳定的 (checkpointer, thread_id, task_id) 并提交。查询 queued、preparing、running 时继续查原身份;succeeded 后读取图片路径。相同身份和内容重放返回 reused=true,不同内容冲突拒绝,不能通过换ID盲目重试 failed 或 unknown。

默认并发为 4,可配置为 1–10;同一输出目录内的进程共享限额,单批 10 项不等于同时启动 10 个上游请求。默认输出为项目 outputs/,可通过 NANOBANANA_OUTPUT_DIR 配置绝对路径;所有共享账本的实例需保持相同并发配置。

模型与编辑

默认模型是 gemini-nano-banana-2.1;各模型的接口限制不同:

模型系列

可用格式

DALL·E 端点

gemini-3.1-flash-lite-image

Gemini、OpenAI Chat

不支持

gemini-nano-banana-2.1

Gemini、OpenAI Chat、DALL·E

Generations;参考图也走此端点,不走 Edits

nano-banana-pro

DALL·E

Generations、Edits

后两系列各保留 -2k、-4k 变体。显式分辨率长边 ≤1024 使用基础版,1024<长边≤2048 使用 2k,>2048 使用 4k;Flash-lite 不做该映射。这是模型路由,不保证上游精确输出像素。

表中为当前接口契约;本轮真实收费验证覆盖基础 gemini-nano-banana-2.1 的 Generations 和基础 nano-banana-pro 的 Edits,其余模型、格式、参考图编码与分辨率变体未因此视为实测通过。

输入图片可直接使用本机可读取的绝对路径或公开 HTTP/HTTPS URL;服务仍校验格式、大小、像素、下载地址和路径安全边界。无法把“能读取参考图”当作商品真实性证明;只使用已确认的商品信息。

验证与维护

  • 单张主图、3 项并发生成和一次本机参考图编辑及原身份重放已实测,见单张验收、小批量与编辑验收。

  • 10 项详情页实测已通过:单次异步登记、并发峰值 4、结果查询和 10 图落盘,整批原身份重放未新增上游请求。默认模型未请求精确像素,上游返回格式/尺寸可能不同。完整状态见交付任务。

  • MCP 进程退出期间不执行任务。重启只恢复明确未发送的任务;可能已经发送的中断任务标记 unknown,不自动重发。防重仅在同一实际输出目录的账本内成立,不能承诺供应商网络侧 exactly-once。

  • 维护者使用 uv sync --locked、uv run --no-sync python scripts/check.py,经 PR、必需 Windows CI 和审查合入;发布另行授权,先生成草稿,核对后才公开。更新保留成员 .env、权限与图片/SQLite,不清空安装目录。

使用与更新:MANUAL · 当前计划:DELIVERY-PLAN · 工程规范:ENGINEERING-GUIDE · 许可证:MIT

Available Tools

6 tools
cancel_image_tasksCancel Image TasksA
Idempotent

取消指定任务;queued/preparing不发图,running只停止本地等待并标unknown,不保证远端停止/退款。

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idsYes
thread_idYes
checkpointerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
tasksYes
thread_idYes
next_cursorNo
checkpointerYes

TDQS

A3.6/5.0
Behavior5/5

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

Far exceeds the annotations: it discloses that queued/preparing tasks will not dispatch images, that running tasks only stop local waiting and are re-marked 'unknown', and that remote stop/refund is not guaranteed. This is exactly the caveat an agent needs before invoking a cancel, and it is consistent with idempotentHint=true and destructiveHint=false.

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 dense sentence, front-loaded with the action and then the per-state consequences; every clause carries information. The semicolon-separated structure is slightly compressed but readable and waste-free.

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?

Behavioral consequences are well covered and an output schema exists so return values need no explanation, but the definition leaves the three required parameters (especially checkpointer/thread_id) unexplained. For a 3-required-param mutation tool, that is a meaningful completeness gap.

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 0% for all three required parameters. The description only vaguely implies task_ids ('指定任务') and says nothing about what checkpointer or thread_id mean or how to obtain them, so it fails to compensate for the schema gap.

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+resource ('取消指定任务' / cancel specified tasks) and immediately qualifies behavior by task state (queued/preparing vs running). It is clear what the tool does, though it never names a sibling tool to differentiate itself from alternatives like get_image_tasks or submit_image_tasks.

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?

It implicitly guides usage by explaining the effect in each task state, which helps an agent decide whether cancelling is worthwhile. However, it gives no explicit when-to-use/when-not-to-use framing and never points to an alternative tool for related needs (e.g., checking status before cancelling).

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

get_batch_resultGet Batch ResultA
Read-onlyIdempotent

读取已登记批次及保存路径,不调用上游、不重发请求;未完成/失败返回 isError。

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
modelYes
reusedNo
statusYes
warningNo
batch_idYes
api_formatYes
request_idYes
manifest_pathYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld=false, yet the description adds genuine behavior: it does not call upstream, does not resend requests, and returns isError for incomplete/failed batches. The isError error-handling semantics are real value beyond the structured hints.

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 tight clauses with the core action front-loaded and the behavioral caveats following; no wasted wording, though it is terse to the point of omitting parameter context.

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 1-param read tool with annotations and an output schema, the safety and error-handling picture is adequately covered. The only real gap is the unexplained request_id, but return values need not be described given the output schema.

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 0% and the single request_id parameter is never explained in the description — no format, source, or meaning ('已登记批次' only loosely implies an id). The description does not compensate for the schema gap.

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+resource: reads an already-registered batch and its save path (读取已登记批次及保存路径). This is discernible from the sibling task-submission tools, though it does not explicitly contrast itself with get_image_tasks.

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?

Implies usage via the constraints '不调用上游、不重发请求' — i.e. use this to fetch a result without re-triggering work — but it never states when to prefer it over get_image_tasks or under what conditions a batch is 'registered'.

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

get_image_tasksGet Image TasksA
Read-onlyIdempotent

查询持久任务与图片绝对路径,不重新提交上游。可按task_ids筛选或用next_cursor分页。

queued/preparing/running正常返回;failed/unknown/cancelled返回isError并保留全部状态。 checkpointer是本地SQLite字符串命名空间,不是路径、LangGraph对象或认证凭据。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
task_idsNo
thread_idYes
checkpointerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
tasksYes
thread_idYes
next_cursorNo
checkpointerYes

TDQS

A3.9/5.0
Behavior4/5

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

Goes beyond the readOnly/idempotent annotations by disclosing status-dependent return behavior: queued/preparing/running succeed, while failed/unknown/cancelled surface as isError with full status preserved. It also warns that checkpointer is a SQLite namespace, not a path or credential. Missing pagination/return-shape details keeps it at 4.

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 tightly packed sentences, front-loaded with the core action and contrasted against resubmission, followed by status behavior and the checkpointer gotcha. Little waste, though the checkpointer sentence could be trimmed.

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 not be described; the description instead covers error semantics and the checkpointer pitfall, which are the real risks for a 5-param retrieval tool. The undocumented thread_id/limit and absent alternative-tool routing are the remaining gaps.

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 0%, so the description must carry parameter meaning. It clarifies task_ids (filtering), pagination, and especially checkpointer semantics, which is high-value. However thread_id and limit go unexplained, and it says 'next_cursor' while the schema param is 'cursor', so the coverage is only partial.

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 (查询/query) and resource (持久任务与图片绝对路径 – persistent tasks plus image absolute paths), and explicitly contrasts with the write sibling via '不重新提交上游'. It doesn't fully disentangle itself from get_batch_result, 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 Guidelines4/5

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

Gives concrete usage context: filter by task_ids or paginate with the cursor, and it signals a when-not relative to submit_image_tasks ('does not resubmit upstream'). No explicit guidance on choosing between this and get_batch_result, so not a 5.

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

list_modelsList ModelsA
Read-only

列出七个模型(含 2k/4k 变体)、API 格式、访问目录与限制;不联网、不返回密钥。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
modelsYes
input_dirsYes兼容字段,始终为空列表,表示没有目录白名单。
output_dirYes
api_formatsYes
async_tasksNo
capabilitiesNo
default_modelYes
max_batch_itemsYes
concurrency_scopeNo
local_file_accessYes
max_pending_tasksNo
upstream_verifiedNo
api_key_configuredYes
default_api_formatYes
supported_endpointsNo
max_reference_imagesYes
reference_input_noteNo
concurrency_per_processYes兼容字段:本机配置上限;实际按共享输出目录的SQLite账本限制并发。

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds useful behavioral detail: it explicitly says the tool does not connect to the network and does not return keys. This is meaningful transparency beyond the structured annotations, though it does not elaborate on caching, freshness, or return shape.

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 compact sentence that front-loads the main purpose and appends key constraints after a semicolon. Every clause carries useful information with no redundant restatement of the tool name.

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

Completeness5/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 does not need to explain return values in detail. It covers the resource being listed and the important behavioral constraints, making the definition complete enough for an agent to call it correctly.

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 has zero parameters, so the baseline for parameter semantics is 4. There is no parameter behavior to clarify, and the description appropriately does not invent any parameter semantics.

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 uses a specific verb (列出/list) and enumerates the exact resource contents: seven models with 2k/4k variants, API formats, access directories, and restrictions. This clearly distinguishes it from the sibling image-task tools, which submit, query, cancel, or batch-process images.

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 explains what is returned but gives no explicit guidance on when to use this tool, when not to use it, or which sibling to choose instead. The use case is implied by the name and contents, but no actual usage context or prerequisite is stated.

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

plan_ecommerce_imagesPlan Ecommerce ImagesA
Read-only

免费生成可审阅的主图/详情页/场景/海报绘图计划。

scene: main 主图;detail 详情模块;scene 家居场景;poster 营销海报。 selling_points: 已核实事实,可为空列表;不自动编造商品信息。 count: 图片项数,详情页推荐 6 项;比例由用户决定。 reference_images: 原样传入计划,真正出图前才读取/下载并校验。 resolution: 可选显式 width/height 像素尺寸,原样传入每项用于模型路由。

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
sceneNomain
copy_textNo
resolutionNo
aspect_ratioNo1:1
product_nameYes
requirementsNo
selling_pointsYes
reference_imagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
notesYes
sceneYes
product_nameYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond that: the operation is free, produces a reviewable plan, never fabricates product info, and defers reference-image download/validation until actual generation. That is meaningful behavioral disclosure for a planning 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?

Purpose is front-loaded in the first line, followed by a tight per-parameter glossary with no padding. Each line maps to a parameter, though the glossary style is terse rather than fully integrated prose.

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 no explanation, and the description covers the planning-specific behavior and key params. Gaps remain: no workflow relationship to submit_image_tasks/list_models and four parameters are unexplained, leaving the definition adequate but incomplete for a complex 9-param tool.

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?

With 0% schema coverage the description must carry parameter meaning, and it does explain scene enum values, selling_points semantics, count guidance, reference_images handling and resolution routing. But it leaves aspect_ratio, copy_text, requirements and product_name completely undocumented, so roughly half the surface is still opaque.

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 (生成 plan) and resource (主图/详情页/场景/海报绘图计划), and the phrase 可审阅的...计划 clearly distinguishes it from the sibling submit_image_tasks that actually produces images. It stops short of naming any sibling explicitly, but the plan-vs-execute distinction is legible.

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 note that reference images are only read/downloaded '真正出图前' implies this is a pre-generation planning step, and '不自动编造商品信息' hints at the intended input discipline. However it never states when to call this versus submit_image_tasks, nor any ordering or prerequisite.

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

submit_image_tasksSubmit Image TasksA
Idempotent

批量登记1–12个后台图像任务并立即返回,不等待绘图/下载(会在后台收费)。

每项task_id在checkpointer/thread_id内唯一且稳定,同内容复用;任何冲突全批不新增。 每项可选model/api_format(auto)/endpoint(auto);变体按显式resolution路由。 Flash-lite仅Gemini/Chat;nano-banana-pro仅DALL·E;gemini-nano仅DALL·E Generations/Gemini/Chat。 查询get_image_tasks;queued/preparing/running是正常状态,unknown不能盲目重交。 MCP进程关闭时未发送任务可在重启后继续,已可能发送任务不自动重试。

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksYes
thread_idYes
checkpointerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
tasksYes
thread_idYes
next_cursorNo
checkpointerYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations it discloses that billing happens in the background, that task_id is unique/stable within checkpointer/thread_id with content reuse, and critically that any conflict aborts the entire batch. It also explains restart semantics (unsent tasks resume, possibly-sent tasks do not auto-retry). This is exactly the extra behavioral context annotations cannot carry.

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 most important behavior (immediate return, no waiting) is front-loaded, and each subsequent line carries distinct information. It is dense and telegraphic but nearly every clause earns its place; a little more structure would have made it cleaner.

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

Completeness5/5

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

For a complex nested batch-submission tool with an output schema (so return values need not be described), the definition covers idempotency, conflict behavior, billing, model routing, status interpretation, and restart semantics. Nothing an agent needs to invoke it safely is missing.

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?

Top-level schema coverage is 0%, so the description must compensate, and it largely does: it explains task_id uniqueness/conflict semantics and model/api_format/endpoint defaults, and adds routing rules (Flash-lite only Gemini/Chat, nano-banana-pro only DALL·E, gemini-nano only DALL·E Generations/Gemini/Chat) plus resolution-based variant selection. It does not fully decode every nested field, so not a 5.

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 states a specific verb+resource+scope: batch-registers 1–12 background image tasks and returns immediately without waiting for rendering/download. It distinguishes itself from get_image_tasks by explicitly naming it as the query counterpart, so an agent can route correctly 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 Guidelines4/5

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

It gives clear conditional guidance: use get_image_tasks to query, treat queued/preparing/running as normal, and do not blindly resubmit on 'unknown'. It also supplies model-routing constraints. It doesn't explicitly compare against plan_ecommerce_images or cancel_image_tasks, so it stops short of a full when/when-not map.

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. 6 tool updatesv0.2.1
    • First observedcancel_image_tasks
    • First observedget_batch_result
    • First observedget_image_tasks
    • First observedlist_models
    • First observedplan_ecommerce_images
    • First observedsubmit_image_tasks

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Tools mostly cover distinct lifecycle stages: listing models, planning, submitting tasks, querying tasks, cancelling tasks, and reading batch results. The only mild ambiguity is between get_image_tasks and get_batch_result, since both retrieve persistent task output, but their descriptions distinguish per-task querying from batch-level result reading.

Naming Consistency5/5

All tool names use a consistent snake_case verb_noun pattern: list_models, plan_ecommerce_images, submit_image_tasks, get_image_tasks, cancel_image_tasks, get_batch_result. The convention is predictable and readable throughout.

Tool Count5/5

Six tools is well-scoped for an image-generation workflow server. Each tool earns its place by covering a specific stage: discovery, planning, submission, monitoring, cancellation, and batch retrieval.

Completeness4/5

The surface covers the core lifecycle from planning through submission, monitoring, cancellation, and result retrieval. Minor gaps remain around direct image download/upload or explicit retry/delete operations, though resubmission and cancellation provide workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers