Zhenzhen Image MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zhenzhen Image MCP用 Flare 生成一张透明背景的蓝色垃圾袋商品图,保存为 PNG"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Zhenzhen Image MCP
Python stdio MCP,面向 GPT Image 2.5 Flare / Sunburst,支持同步生成/编辑、Images 流式结果、批量异步并发、持久化防重、恢复查询和图片自动落盘。Sunburst 用于高精度编辑、Flare 用于追求速度的生成;选型建议来自供应商,质量和速度需实际验收。
开发候选版本 0.3.0 已推送到 dev,由 PR #1 审查,尚未合并或发布。实际仓库为 zhenzhen-gptimagegen2.5-mcp;正式成员从该仓库获取通过 CI 的 Release 标签和完整 SHA,按 MANUAL 第 2 节 clone、核对提交并 uv sync --locked --no-dev。不把当前候选号当作已存在的发布标签。
本项目面向 Windows 用户。PR / push CI 仅在 windows-latest 验收,手动发布工作流也使用 Windows;保留全部测试、构建、协议、安装与依赖检查。其他操作系统不在当前支持和 CI 验收范围内。
默认安装目录 C:\MCP\zhenzhen-gptimagegen2.5-mcp。API Key 由 MCP 固定读取该目录 .env:从空 .env.example 安全复制、填写并限制权限;仅缺失时按“进程 → Windows 用户级”回退,空值或损坏配置失败。升级保留 .env 与权限,修改后重启实际 MCP 子进程。完整初始化、ACL、Host 配置及升级见 MANUAL.md。
默认是逆向分组;官转必须在每次生成/编辑调用显式声明:
{
"prompt": "透明背景的蓝色垃圾袋商品图",
"model": "gpt-image-2.5-flare",
"group": "official",
"official_options": {
"n": 1,
"background": "transparent",
"output_format": "png"
}
}省略 group 即 reverse;未声明 official 却传 official_options 会在收费前失败。该字段只控制本地参数校验,不更改供应商 Key 后台分组。完整 format def 与参数表见手册第 8 节。精细编辑使用 Images edits,不提供 create_response。
安装后正常启动复用环境:
uv --directory 'C:\MCP\zhenzhen-gptimagegen2.5-mcp' run --no-sync python -m zhenzhen_image_mcp免费协议检查:
pwsh -NoProfile -File 'C:\MCP\zhenzhen-gptimagegen2.5-mcp\scripts\smoke-test.ps1'
if ($LASTEXITCODE -ne 0) { throw 'MCP 协议检查失败。' }Host 配置服务名为 zhenzhen-gptimagegen2-5-mcp,目录仍保留 2.5;默认不用在 Host 转发后端 Key。Codex、Cherry Studio、Claude Code、DSH desktop/web 与消费代理的完整步骤、适用范围和未验证项见手册第 4 节。
开发与 CI 共用检查(先在开发目录 uv sync --locked):
uv run --no-sync python scripts/check.py --build --audit
if ($LASTEXITCODE -ne 0) { throw '开发检查失败,请查看具体失败项。' }多图规划用 submit_image_batch,一次最多 10 项,默认并发 3;在收到提交编号后返回,不等待生成。使用稳定 (checkpointer, thread_id, tasks[].task_id) 幂等键,相同参数复用已有记录;供应商编号另存为 provider_task_id。get_image_batch 恢复本地会话记录,get_batch_image_task 查询指定逻辑任务并落盘。完整示例和状态见 MANUAL 第 8 节。
防重历史保存在实际项目 .runtime/checkpoints.sqlite3,升级须保留;不确定提交不会自动重发。原有单项提交工具没有检查点防重,需要防重时即使只有一项也用批量入口。收费 POST 不自动重试;排队或查询失败续查原任务,云端 SUCCESS 后检查保存状态。协议测试不收费;本轮没有发布或交付 ZIP。
Available Tools
11 toolsdownload_imageAIdempotent
按图片 URL 下载并校验 PNG/JPEG/WebP,自动落盘返回绝对路径;不会附带供应商 API Key。
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | 公开 HTTP(S) 图片 URL | |
| output_dir | No | 可选绝对输出目录;默认配置目录。异步任务查询默认沿用提交目录。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| bytes | Yes | |
| reused | Yes | |
| sha256 | Yes | |
| mime_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (openWorldHint, idempotentHint, non-destructive), but the description adds real context beyond them: it validates specific formats, persists to disk, returns an absolute path, and explicitly notes it will not carry the vendor API Key. That security disclosure is genuinely useful. It stops short of describing failure modes or overwrite behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action comes first and the security caveat is a tight trailing clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and annotations cover safety. Combined with format-validation and no-API-key disclosures, the description is nearly complete; only edge behaviors (overwrite, network failure) are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so url and output_dir are already fully documented, including the default-directory and async-task-inheritance behavior. The description adds little parameter meaning beyond restating that output goes to disk, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (下载/download) and resource (图片/image) plus the scope of what happens (validate PNG/JPEG/WebP, write to disk, return absolute path). This clearly distinguishes it from the sibling generation/edit tools, which produce images rather than fetch them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (fetch an image from a URL) but never states when to use this versus generate_image or edit_image, nor any prerequisites or exclusions. Usage is inferable but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_imageA
同步图像编辑并落盘;多图以 image[] 上传。高编辑精度场景建议 Sunburst。收费。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 可选 auto 或 WIDTHxHEIGHT;两边为16倍数、最大3840、比例不超过3:1、总像素655360..8294400。省略时不发送。 | |
| group | No | 分组声明:默认 reverse(逆向);仅用户明确使用官转时传 official。此字段不发送上游、不改变密钥后台分组。 | reverse |
| model | Yes | GPT Image 2.5 Sunburst 非常适合对编辑精度要求极高的应用场景;GPT Image 2.5 Flare 是目前用于生成高质量图片的最快模型。模型可以接受文本和图片作为输入,然后输出相应的图片。以上为用户提供的供应商选型说明,尚未做速度或质量对比实测。请结合用户意图选择并告知所用模型。 | |
| images | Yes | 本机绝对图片路径、公开 HTTP(S) 图片 URL 或 base64 data URL;PNG/JPEG/WebP。 | |
| prompt | Yes | ||
| quality | No | ||
| output_dir | No | 可选绝对输出目录;默认配置目录。异步任务查询默认沿用提交目录。 | |
| official_options | No | 仅 group="official" 可用的官转扩展参数。未声明官转时传入此对象会在收费前拒绝。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| cost | No | |
| note | No | |
| files | No | |
| group | No | |
| usage | No | |
| status | Yes | |
| task_id | No | |
| warning | No | |
| progress | No | |
| response | No | |
| next_tool | No | |
| output_dir | No | |
| fail_reason | No | |
| save_status | No | |
| wait_timed_out | No | |
| download_errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive, open-world write operation, so the bar is lower; the description still adds material context: the call is synchronous/blocking, it persists output to disk, and it is billed ('收费'). Permissions or concurrency limits are not covered, but cost and side-effect disclosure go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the core purpose and no filler. It is efficient and readable, though the terse style leaves several questions unanswered rather than balancing brevity with completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the schema documents most parameters. However, for a billed mutation with 8 parameters and an official_options gate, the description omits the async-vs-sync decision and the consequences/placement of written files, leaving it only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% and the schema itself carries detailed prose for size, group, model, images, and official_options. The description only echoes the multi-image upload format (calling it image[] where the schema field is 'images') and repeats the Sunburst model advice already present in the model property description, so it adds little.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (synchronous image editing) plus a distinctive behavior (writes result to disk), which separates it from the async submission siblings such as submit_image_edit. It does not explicitly name a sibling, but '同步' clearly contrasts with the submit/poll tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one concrete routing hint ('high editing-precision scenarios → Sunburst') and an upload convention for multi-image input, but never says when to prefer this over generate_image or submit_image_edit, nor when-not to use it. Usage is implied by the synchronous nature rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageA
同步生成并落盘。默认逆向五参数;官转须显式 group=official。收费,POST 不自动重试。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 可选 auto 或 WIDTHxHEIGHT;两边为16倍数、最大3840、比例不超过3:1、总像素655360..8294400。省略时不发送。 | |
| group | No | 分组声明:默认 reverse(逆向);仅用户明确使用官转时传 official。此字段不发送上游、不改变密钥后台分组。 | reverse |
| model | Yes | GPT Image 2.5 Sunburst 非常适合对编辑精度要求极高的应用场景;GPT Image 2.5 Flare 是目前用于生成高质量图片的最快模型。模型可以接受文本和图片作为输入,然后输出相应的图片。以上为用户提供的供应商选型说明,尚未做速度或质量对比实测。请结合用户意图选择并告知所用模型。 | |
| images | No | ||
| prompt | Yes | ||
| quality | No | ||
| output_dir | No | 可选绝对输出目录;默认配置目录。异步任务查询默认沿用提交目录。 | |
| official_options | No | 仅 group="official" 可用的官转扩展参数。未声明官转时传入此对象会在收费前拒绝。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| cost | No | |
| note | No | |
| files | No | |
| group | No | |
| usage | No | |
| status | Yes | |
| task_id | No | |
| warning | No | |
| progress | No | |
| response | No | |
| next_tool | No | |
| output_dir | No | |
| fail_reason | No | |
| save_status | No | |
| wait_timed_out | No | |
| download_errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly false, openWorld true, non-idempotent, non-destructive), and the description adds traits they do not carry: the call is billed, POST is not automatically retried, and output is persisted to disk. The retry and billing notes are operationally important for a paid, non-idempotent call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact clauses lead with the core operation, then routing, then cost/retry behavior — well front-loaded with no filler. The phrase "默认逆向五参数" is too compressed to decode, which is the one structural weakness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter synchronous generation tool with an output schema, the description covers sync execution, disk persistence, group routing, and billing. It omits how the sync path relates to the sibling async/batch submission tools and gives no guidance on the images input beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, and the schema itself richly documents size, images, model, and official_options. The description adds only the group-default rule and the fact that official_options is rejected pre-billing without group=official; "默认逆向五参数" is opaque and adds little usable meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"同步生成并落盘" gives a specific verb (generate), a modality (synchronous), and a side effect (writes to disk), which separates it from the async submit_* siblings and from edit_image. However it never names those siblings explicitly, so the agent must infer the distinction from the word "同步" alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the routing rule for the group parameter (default reverse; official only when the user explicitly wants the official route), which is real when-to-use guidance. It does not, however, say when to pick this tool over submit_image_generation or submit_image_batch, leaving the sync-vs-async choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_batch_image_taskAIdempotent
按原(checkpointer,thread_id,task_id)查询供应商异步结果并自动落盘;只读HTTP有限重试。没有供应商编号时返回本地状态,不重新提交。云端失败为工具错误;检查 result.save_status。
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | ||
| task_id | Yes | 批量提交时指定的原始 task_id。 | |
| thread_id | Yes | 稳定的本地检查点命名空间/会话键,1–128字符。 | |
| output_dir | No | 可选绝对输出目录;默认配置目录。异步任务查询默认沿用提交目录。 | |
| checkpointer | Yes | 稳定的本地检查点命名空间/会话键,1–128字符。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| group | Yes | |
| result | No | |
| reused | Yes | |
| status | Yes | |
| task_id | Yes | |
| warning | No | |
| thread_id | Yes | |
| output_dir | Yes | |
| checkpointer | Yes | |
| provider_task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: read-only HTTP with bounded retries, automatic write-to-disk, local-status fallback without resubmission, and that cloud failure surfaces as a tool error monitored via result.save_status. This meaningfully explains why readOnlyHint is false despite read-only upstream calls. It stops short of describing timing/polling semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the operation and keying inputs, then packs retry, fallback, and error-handling notes into two dense clauses. No filler, though the second half is run-on enough that the error-handling guidance is easy to skim past.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, and the description correctly points at result.save_status for the one field that matters. Persistence, retry, fallback, and error semantics are all covered; polling/wait behavior relative to wait_image_task is the only notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the per-parameter docs already carry most weight (baseline 3). The description contributes the non-obvious constraint that all three keys must be the ORIGINAL values from submission, not arbitrary IDs, and links the save/output_dir behavior to 'automatic persistence'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: query the supplier's async result keyed by the original (checkpointer, thread_id, task_id) triple, with automatic persistence. It implicitly separates itself from the submit_* siblings by noting it never resubmits, but it never names wait_image_task or get_image_task directly, so sibling differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one useful conditional: when no supplier ID is present it returns local status instead of resubmitting. It also tells the agent where to look on failure (result.save_status). However, it never says when to prefer this over wait_image_task or get_image_task, so the routing guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_image_batchARead-onlyIdempotent
免费读取本地持久化检查点,恢复该会话所有 task_id/provider_task_id/最后观察状态;不查询供应商、不提交、不等待成图。
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | 稳定的本地检查点命名空间/会话键,1–128字符。 | |
| checkpointer | Yes | 稳定的本地检查点命名空间/会话键,1–128字符。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| tasks | Yes | |
| status | Yes | |
| next_tool | Yes | |
| thread_id | Yes | |
| checkpointer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety bar is low. The description still adds value by disclosing that reads are local/free, hit no provider, and return 'last observed' (i.e. possibly stale) state rather than live data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with semicolon-separated clauses; the scoping statement ('本地') and the negative boundaries are ordered sensibly. No filler, though the three negated verbs could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description supplies enough to call it correctly; only an explicit sibling reference is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both required params (thread_id, checkpointer) carry their own pattern and length docs. The description adds no parameter-level detail, so this is the baseline 3 where the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('免费读取本地持久化检查点') and enumerates what is restored (task_id/provider_task_id/最后观察状态). The negations ('不查询供应商、不提交、不等待成图') implicitly separate it from wait_image_task and submit_image_batch, but no sibling is named explicitly, so differentiation is inferred rather than direct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context ('免费…本地持久化' implies the cheap cached path) plus explicit when-not boundaries: it does not query the provider, submit, or wait. What's missing is an explicit positive alternative (e.g. 'for live status use get_batch_image_task'), so the agent must infer the switch condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_image_taskAIdempotent
查询 NOT_START(排队)/IN_PROGRESS/FAILURE/SUCCESS;暂时性查询故障最多尝试3次。save=true 时成功图片自动落盘;false 仅查询。不重新提交。
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | ||
| task_id | Yes | ||
| output_dir | No | 可选绝对输出目录;默认配置目录。异步任务查询默认沿用提交目录。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| cost | No | |
| note | No | |
| files | No | |
| group | No | |
| usage | No | |
| status | Yes | |
| task_id | No | |
| warning | No | |
| progress | No | |
| response | No | |
| next_tool | No | |
| output_dir | No | |
| fail_reason | No | |
| save_status | No | |
| wait_timed_out | No | |
| download_errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety/idempotency (idempotentHint=true, destructiveHint=false), and the description adds real behavior beyond them: up to 3 retries on transient query failures, and disk writes on save=true (consistent with readOnlyHint=false). It stops short of describing failure semantics or what happens when save fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses, front-loaded with the query purpose, then retry behavior, then the save contract. No filler and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers states, retry behavior, and the save side-effect. It is nearly complete for a single-task query; only explicit sibling routing (vs wait_image_task) is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it does explain the most consequential parameter: save=true persists images, false queries only. task_id is self-evident and output_dir is already documented in the schema, so the remaining gap is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (query an image task) and enumerates the possible states (NOT_START/IN_PROGRESS/FAILURE/SUCCESS), which pins down the resource precisely. It also clarifies it does not resubmit, which separates it from the submit_* siblings, but it does not directly contrast with wait_image_task or get_batch_image_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives conditional usage for save=true (auto-persist images) vs false (query only) and notes the no-resubmit contract, which implies the right context. However it never names or contrasts the obvious alternatives wait_image_task and get_batch_image_task, so the when-to-use decision is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_guideARead-onlyIdempotent
免费本地模型选择建议和配置状态;只检查密钥是否存在,不显示密钥、不请求云端。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| advice | Yes | |
| models | Yes | |
| base_url | Yes | |
| output_dir | Yes | |
| key_present | Yes | |
| key_variable | Yes | |
| default_group | Yes | |
| official_declaration | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and closed-world (openWorldHint=false), so the safety profile is partly covered. The description adds genuinely new behavioral facts: it only checks whether a key exists, never displays the key, and never calls the cloud – useful privacy/offline context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the capability and then the behavioral guarantees. Every clause earns its place; only minor readability cost from packing two ideas into one sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a zero-parameter read tool, the description covers purpose and the key behavioral constraints; only explicit usage guidance is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; the schema is empty and needs no elaboration. The description correctly focuses on outcome behavior rather than invented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete deliverable: free local model selection suggestions plus configuration status. It is clearly distinguishable from the sibling image-generation tools, though the wording ('guide') is slightly abstract about exactly what content is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied – an agent can infer this is for choosing/configuring a local model, but there is no explicit when-to-use or when-not, and no named alternative or prerequisite. Adequate but with a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_image_batchAIdempotent
一次并发提交1–10项收费异步生成/编辑,默认并发3。收到任务编号即返回,不等待成图。同一(checkpointer,thread_id,task_id)及参数复用记录,参数冲突在提交前拒绝;不确定提交永不自动重发。
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes | ||
| thread_id | Yes | 稳定的本地检查点命名空间/会话键,1–128字符。 | |
| checkpointer | Yes | 稳定的本地检查点命名空间/会话键,1–128字符。 | |
| max_concurrency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| tasks | Yes | |
| status | Yes | |
| next_tool | Yes | |
| thread_id | Yes | |
| checkpointer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that this is a paid operation, that it is fire-and-return async, that identical (checkpointer, thread_id, task_id) plus parameters reuse records, that parameter conflicts are rejected pre-submission, and that uncertain submissions are never auto-resent. This is rich behavioral context and is consistent with idempotentHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact paragraph with the core action front-loaded; every clause (async return, dedup key, conflict rejection, no auto-resend) earns its place. Slightly dense/run-on but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description covers the async lifecycle, deduplication and conflict behavior an agent most needs. Remaining gaps are the per-task field semantics rather than anything blocking correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 50%, the description adds real meaning by explaining the reuse key formed from checkpointer, thread_id and task_id, and by stating the default concurrency (matching max_concurrency). However it does not describe the per-task fields (task_id, prompt, model, operation) or how tasks are structured, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (submit) and resource (1–10 async paid generation/edit tasks) with scope (batch, concurrency default 3). It implies an async batch distinct from the single-image siblings but never names an alternative, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The async contract ('returns on task IDs, does not wait for image completion') implicitly tells the agent to follow up with wait_image_task/get_image_task, but there is no explicit when-to-use/when-not guidance and no named alternative against submit_image_generation or submit_image_edit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_image_editA
POST edits?async=true 提交收费异步编辑,以 image[] 上传;返回 task_id,之后查询并落盘。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 可选 auto 或 WIDTHxHEIGHT;两边为16倍数、最大3840、比例不超过3:1、总像素655360..8294400。省略时不发送。 | |
| group | No | 分组声明:默认 reverse(逆向);仅用户明确使用官转时传 official。此字段不发送上游、不改变密钥后台分组。 | reverse |
| model | Yes | GPT Image 2.5 Sunburst 非常适合对编辑精度要求极高的应用场景;GPT Image 2.5 Flare 是目前用于生成高质量图片的最快模型。模型可以接受文本和图片作为输入,然后输出相应的图片。以上为用户提供的供应商选型说明,尚未做速度或质量对比实测。请结合用户意图选择并告知所用模型。 | |
| images | Yes | 本机绝对图片路径、公开 HTTP(S) 图片 URL 或 base64 data URL;PNG/JPEG/WebP。 | |
| prompt | Yes | ||
| quality | No | ||
| output_dir | No | 可选绝对输出目录;默认配置目录。异步任务查询默认沿用提交目录。 | |
| official_options | No | 仅 group="official" 可用的官转扩展参数。未声明官转时传入此对象会在收费前拒绝。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| cost | No | |
| note | No | |
| files | No | |
| group | No | |
| usage | No | |
| status | Yes | |
| task_id | No | |
| warning | No | |
| progress | No | |
| response | No | |
| next_tool | No | |
| output_dir | No | |
| fail_reason | No | |
| save_status | No | |
| wait_timed_out | No | |
| download_errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, open-world. The description adds genuinely new context: the call is paid (收费) and asynchronous, uploads via image[], returns a task_id, and must be followed by a query/save step. Cost and the async contract are material facts not carried by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the operation and the follow-up contract front-loaded; nothing is padded. The mixed Chinese/English and URL-fragment style ('POST edits?async=true') cost a little clarity for no gain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and the description does name task_id. However, for an 8-parameter paid async tool with several siblings that also submit or edit images, it omits the sync-vs-async decision and lifecycle guidance an agent needs to call the right tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema descriptions for size, group, model, images, output_dir, and official_options are already detailed. The description only echoes the image[] upload field and adds nothing about the other parameters, so it does not compensate for the remaining gap — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource (submit an async paid image edit via image[] upload) and notes the return value (task_id) and follow-up step. An agent can distinguish it from submit_image_generation/submit_image_batch, though the terse mixed-language phrasing ('POST edits?async=true') relies on prior knowledge of the API shape.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies a workflow — submit, then '查询并落盘' (query then save to disk) — which points at the get_image_task/wait_image_task siblings. But it never explicitly says when to prefer this async submission over the sync edit_image or over submit_image_batch, so the choice among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_image_generationA
POST generations?async=true 提交收费异步绘图,立即返回 task_id。必须继续查询才能自动落盘。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 可选 auto 或 WIDTHxHEIGHT;两边为16倍数、最大3840、比例不超过3:1、总像素655360..8294400。省略时不发送。 | |
| group | No | 分组声明:默认 reverse(逆向);仅用户明确使用官转时传 official。此字段不发送上游、不改变密钥后台分组。 | reverse |
| model | Yes | GPT Image 2.5 Sunburst 非常适合对编辑精度要求极高的应用场景;GPT Image 2.5 Flare 是目前用于生成高质量图片的最快模型。模型可以接受文本和图片作为输入,然后输出相应的图片。以上为用户提供的供应商选型说明,尚未做速度或质量对比实测。请结合用户意图选择并告知所用模型。 | |
| images | No | ||
| prompt | Yes | ||
| quality | No | ||
| output_dir | No | 可选绝对输出目录;默认配置目录。异步任务查询默认沿用提交目录。 | |
| official_options | No | 仅 group="official" 可用的官转扩展参数。未声明官转时传入此对象会在收费前拒绝。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| cost | No | |
| note | No | |
| files | No | |
| group | No | |
| usage | No | |
| status | Yes | |
| task_id | No | |
| warning | No | |
| progress | No | |
| response | No | |
| next_tool | No | |
| output_dir | No | |
| fail_reason | No | |
| save_status | No | |
| wait_timed_out | No | |
| download_errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-read-only, open-world, non-idempotent, non-destructive, but the description adds genuinely non-obvious context: the call is billed ('收费'), it returns a task_id immediately rather than the image, and persistence only happens if the agent keeps querying. This is real behavioral 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core action and its immediate result, then the follow-up obligation. Efficient, though the raw HTTP path 'POST generations?async=true' leaks implementation detail instead of describing intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the async/persistence workflow is covered. Still missing for an 8-parameter, paid, open-world mutation tool are the group=official vs reverse implications, the official_options precondition, and model-choice guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, and the schema itself carries rich per-field documentation (size constraints, group semantics, model selection, official_options gating). The description adds no parameter-level meaning beyond the raw 'async=true' endpoint form, so it neither compensates for the coverage gap nor contradicts anything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('提交收费异步绘图' – submit a paid asynchronous image generation) and pins down the immediate return value ('立即返回 task_id'). The 'async' qualifier implicitly separates it from the synchronous generate_image sibling, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent it must keep polling ('必须继续查询才能自动落盘'), which implies the get_image_task/wait_image_task siblings, and flags the operation as paid. However it never states when to pick this over generate_image, submit_image_edit, or submit_image_batch, leaving the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_image_taskBIdempotent
有界轮询,NOT_START 排队和 IN_PROGRESS 处理中继续等待,成功后落盘;只读查询有限重试计入等待时限。超时返回 task_id/wait_timed_out,云端任务继续;可稍后再次查询。
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| output_dir | No | 可选绝对输出目录;默认配置目录。异步任务查询默认沿用提交目录。 | |
| poll_interval | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| cost | No | |
| note | No | |
| files | No | |
| group | No | |
| usage | No | |
| status | Yes | |
| task_id | No | |
| warning | No | |
| progress | No | |
| response | No | |
| next_tool | No | |
| output_dir | No | |
| fail_reason | No | |
| save_status | No | |
| wait_timed_out | No | |
| download_errors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (idempotent=true, destructive=false, openWorld=true), and the description adds genuine context beyond them: bounded polling, that read-only retries count toward the wait budget, that timeout returns task_id/wait_timed_out while the cloud task continues, and that success writes to disk. It does not mention auth or rate-limit behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core concept ('有界轮询') before timeout and re-query behavior. No filler, though the multi-clause packing makes it slightly harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, and the annotations carry the safety profile. The description covers the main waiting/timeout behavior adequately, but for a 4-parameter tool with 25% schema coverage the undocumented polling parameters remain an incomplete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only output_dir is documented), so the description must compensate, and it largely does not. poll_interval and timeout_seconds have no descriptions anywhere, and the description only vaguely alludes to a 'wait time limit' and disk landing rather than mapping meaning onto those parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation — bounded polling of an image task ('有界轮询'), with the state transitions (NOT_START/IN_PROGRESS) that it waits on. It is clear what the tool does, but it never names or contrasts against the obvious sibling get_image_task, so an agent must infer the difference itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: waiting continues while the task is queued or in progress, and '可稍后再次查询' hints at re-querying after a timeout. There is no explicit when-to-use-this vs use-get_image_task guidance, leaving the choice between polling and single-query siblings to inference.
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.
11 tool updates
v0.3.0- First observed
download_image - First observed
edit_image - First observed
generate_image - First observed
get_batch_image_task - First observed
get_image_batch - First observed
get_image_task - First observed
get_model_guide - First observed
submit_image_batch - First observed
submit_image_edit - First observed
submit_image_generation - First observed
wait_image_task
TDQS
Scored across 11 tools
The set contains four closely-related task-retrieval tools (get_image_task, get_batch_image_task, get_image_batch, wait_image_task) whose boundaries are only clear after reading full descriptions, risking misselection. The sync/async pairs (generate_image vs submit_image_generation, edit_image vs submit_image_edit) are conceptually the same operation split by mode, further muddying the choice.
Nearly all tools follow a verb_noun snake_case pattern (get_, submit_, wait_, download_, generate_, edit_). Minor deviations exist in noun composition (image_task vs batch_image_task vs image_batch) and in generate_image vs submit_image_generation, but the convention is largely readable and predictable.
11 tools is within the well-scoped range for an image generation/editing service covering sync, async, batch, query, and download. Slightly heavy because four of them overlap on task-status retrieval.
The surface covers the full lifecycle: sync/async generate and edit, batch submission, task querying/waiting, local checkpoint recovery, download, and model guidance. Minor gaps like explicit task cancellation or deletion are absent but not blocking.
Maintenance
Related MCP Connectors
AI image, video, voice and music generation over MCP, routed to Veo 3.1, Seedance 2.5 and more.
Generate images from Claude, ChatGPT, Cursor and Codex with 12 top AI image models and 10 tools: up to 4 images per call, SVG vectorization, editing and more. Remote MCP with OAuth, no API keys. Pay per image, no subscription.
MCP server for Qwen Image 3 AI image generation
Focused MCP server for OpenAI image/audio generation (v2.0.0). Wraps endpoints via HAPI CLI.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceMCP server for generating and editing images using gpt-image-2. Enables image creation, editing, listing, and retrieval via natural language tools.-
- AlicenseAqualityBmaintenanceGenerates and edits images using OpenAI GPT Image or Google Gemini models, saving every result to disk and returning local file paths so AI assistants can continue working with the images. It enables prompt-based image creation, editing, inpainting, multi-image composition, and model listing through MCP tools.121 npm1Apache 2.0
- AlicenseAqualityBmaintenanceEnables generating and editing images via OpenAI GPT Image 2.5 models (flare and sunburst) through MCP tools for text-to-image and reference-based image editing.214 npmMIT
- AlicenseAqualityBmaintenanceLocal stdio MCP service that calls GPT Image API to generate images from text, edit images with references or masks, and save images locally while returning absolute paths and file URIs.324 npm1MIT