InkRoom
Server Details
Generate, edit and upscale images with references, batch jobs, cost previews and original downloads.
- Status
- Healthy
- Uptime
- 99.3% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 12 tools
The image-operation tools (generate_image, derive_image, upscale_image) are explicitly scoped against each other, and generation_status vs. wait_images is clarified. However, some adjacent tools such as account, spending_policy, and list_models still require careful reading to avoid momentary misselection.
All names use snake_case, but the set mixes verb_noun names (generate_image, list_models, wait_images) with noun-only names (account, prompts, help, spending_policy). The pattern is still readable, but it is not a consistent verb_noun convention.
Twelve tools is well within the appropriate range for an image-generation platform with supporting billing, policy, prompt, and delivery functions. Each listed tool maps to a distinct capability or workflow stage.
Core single-image workflows are covered: generation, derivation, upscaling, status, waiting, model listing, billing, and policy. The notable gap is batch_generate, which is referenced repeatedly in multiple tool descriptions as the correct tool for multiple jobs or edits but is absent from the tool list.
Available Tools
12 toolsaccountARead-onlyIdempotentInspect
Read personal balance/access (summary) or paginated billing (usage), not spending authorization. Returns action plus summary or usage (items, page, pageSize, total, hasMore); increment page only while hasMore. Use spending_policy for automatic-spending limits and list_models for model prices.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Usage end, RFC3339 or YYYY-MM-DD. | |
| from | No | Inclusive usage start, RFC3339 or YYYY-MM-DD. | |
| page | No | Usage page, starting at 1. | |
| type | No | Optional credit-log type, e.g. mcp_call or ai_refund. | |
| action | No | Read account summary or paginated billing; defaults to the permitted action. | |
| pageSize | No | Usage rows per page; default 5, maximum 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety is covered; the description adds genuinely new behavior beyond that—the return shape (action plus summary or usage fields) and the pagination rule 'increment page only while hasMore'. It stops short of disclosing auth/permission requirements or rate limits, but the pagination and return contract are meaningful additions.
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 dense sentences with zero filler: purpose and scope first, then return/pagination contract, then alternative routing. Front-loaded and every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates the return fields (items, page, pageSize, total, hasMore) and the iteration rule. All six parameters are schema-documented, and the alternatives are named, leaving nothing critical missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description nevertheless adds semantics the schema lacks—the conditional pagination rule tied to hasMore and the notion of a default/permitted action value. This goes slightly past restating schema fields.
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 (read) and resource (personal balance/access or paginated billing) and immediately scopes it with 'not spending authorization', which separates it from the financially-adjacent sibling spending_policy. An agent can identify the tool's function without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use spending_policy for automatic-spending limits and list_models for model prices,' and clarifies the tool is not for spending authorization. It also notes the action defaults to 'the permitted action', covering the no-arg case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
derive_imageADestructiveIdempotentInspect
Edit one source from referenceImages or parentTaskId; select parentImageIndex for a multi-image parent. Prompt provenance alone is not an image. Use generate_image without a source, upscale_image for dedicated processing, and batch_generate for multiple edits. Preview returns requestId and cost/readiness in preview; auto/run reuse that receipt. Run requires approval. Execution returns task/status or nextAction; resume the original receipt after interruption.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | GPT: pixel size e.g. 3840x2160. Others: list_models sizes. | |
| count | No | Image count; default 1, maximum 16. Zero retains the legacy default. | |
| model | No | Public image model ID from list_models; omit for the configured recommendation. | |
| action | Yes | preview freezes inputs and quotes cost; auto checks saved spending authorization; run requires explicit user approval. | |
| prompt | No | Image instructions; required for a fresh preview. | |
| quality | No | GPT: auto (default), low, medium, high; 2.5 Sunburst/Flare also xhigh, max; affects the quote. Others: list_models qualities. | |
| promptId | No | Optional source prompt provenance; does not supply an original image. | |
| requestId | No | Original preview receipt for auto/run; reuse it after interruption, without re-previewing. | |
| deliveryMode | No | native returns previews and original links; links returns original links; metadata omits image delivery. | |
| outputFormat | No | Original image format; default png. | |
| parentTaskId | No | Completed owned task supplying the original image; alternative to referenceImages. | |
| thinkingLevel | No | Gemini reasoning level; supported values and price multipliers come from list_models. | |
| derivationType | No | Lineage label, e.g. variant, edit, change-model or change-size. | |
| promptExampleId | No | Optional source example provenance; does not supply an original image. | |
| referenceImages | No | Up to 8 source images; preview freezes their bytes. Use derive_image for editing. | |
| parentImageIndex | No | Zero-based source image index; required when the parent has multiple images. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds valuable workflow behavior: preview freezes inputs and quotes cost, auto/run reuse the preview receipt, run requires approval, and interrupted executions can resume from the original receipt. It does not spell out exactly what is destructive or how the original source is preserved, which keeps it below 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?
The description is dense but front-loads the core purpose and then moves through alternatives and workflow details. It is appropriately sized for a complex 16-parameter tool, though the semicolon-heavy style and the phrase 'in preview' make it slightly harder to parse than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex editing tool with no output schema, the description covers the essential execution model: preview produces a requestId with cost/readiness, run requires approval, and execution returns task/status or nextAction. It is close to complete, though it could say more about what destructive editing means and what the original source guarantees are.
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 the schema already documents all 16 parameters, including action, requestId, referenceImages, and parentImageIndex. The description reinforces the key source and preview-receipt semantics, but mostly repeats what the schema says rather than adding new syntax or format details.
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: editing one image from either referenceImages or parentTaskId. It also immediately distinguishes this from generate_image, upscale_image, and batch_generate, so an agent can identify the tool's role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance: use generate_image when there is no source, upscale_image for dedicated processing, and batch_generate for multiple edits. It also clarifies source selection between referenceImages and parentTaskId, including parentImageIndex for multi-image parents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageADestructiveIdempotentInspect
Create one image without a source; use derive_image for source-guided edits, upscale_image for dedicated processing, or batch_generate for multiple jobs. Preview returns requestId and preview (parameters, readiness, expiry, estimatedChargePoints); auto/run reuse that ID. Run requires user approval. Execution returns task/status and possibly nextAction; resume it after interruption, never resubmit. Retry a failed task with preview retryTaskId only.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | GPT: pixel size e.g. 3840x2160. Others: list_models sizes. | |
| count | No | Image count; default 1, maximum 16. Zero retains the legacy default. | |
| model | No | Public image model ID from list_models; omit for the configured recommendation. | |
| action | Yes | preview freezes inputs and quotes cost; auto checks saved spending authorization; run requires explicit user approval. | |
| prompt | No | Image instructions; required for a fresh preview. | |
| quality | No | GPT: auto (default), low, medium, high; 2.5 Sunburst/Flare also xhigh, max; affects the quote. Others: list_models qualities. | |
| requestId | No | Original preview receipt for auto/run; reuse it after interruption, without re-previewing. | |
| retryTaskId | No | Failed task ID; preview only, without replacement image parameters. | |
| deliveryMode | No | native returns previews and original links; links returns original links; metadata omits image delivery. | |
| outputFormat | No | Original image format; default png. | |
| thinkingLevel | No | Gemini reasoning level; supported values and price multipliers come from list_models. | |
| referenceImages | No | Up to 8 source images; preview freezes their bytes. Use derive_image for editing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare non-read-only, idempotent, and destructive behavior. The description adds meaningful context beyond them: previews quote estimatedChargePoints, run requires user approval, interrupted tasks should be resumed rather than resubmitted, and failed tasks are retried only through retryTaskId.
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?
The description is dense but front-loaded with purpose and alternatives before the workflow details. Every sentence adds operational value for a complex 12-parameter tool, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex generation tool with no output schema, the description covers the main lifecycle, return signals, approval, and retry semantics well. It could more explicitly mention generation_status or wait_images for polling, but the essential calling behavior is complete.
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 100%, and the schema already documents action, requestId, retryTaskId, and most parameters in detail. The description reinforces the requestId/retry workflow but adds little parameter meaning beyond the schema and does not discuss many fields such as size, count, model, or quality.
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, resource, and scope: 'Create one image without a source.' It immediately distinguishes the tool from derive_image, upscale_image, and batch_generate, so an agent can identify the correct sibling without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance for source-guided edits, dedicated processing, and multiple jobs. It also explains the preview/auto/run lifecycle, approval requirement, interruption resume behavior, and retry path, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generation_statusADestructiveIdempotentInspect
Read or cancel one owned taskId. Returns that task: taskId, status, and images or error/settlement when present. Use wait_images for bounded waiting and image pagination; do not repeatedly poll get. Use batch_generate for several generation jobs, not this tool. Cancellation does not authorize a paid retry.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | get reads one task; cancel stops that task. Default get; use wait_images to await image delivery. | |
| taskId | Yes | Owned task ID returned by generation; not a requestId or batchId. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| images | No | |
| notice | No | |
| status | Yes | Current task state, including running and terminal success, failure or cancellation. |
| taskId | Yes | Existing owned task ID. |
| timing | No | |
| failure | No | |
| lineage | No | |
| generation | No | |
| settlement | No | |
| failedImages | No | |
| imageProgress | No | |
| deliveryStatus | No | |
| outputContract | No | |
| cancelRequested | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the bar is lower. The description still adds real context: cancellation does not authorize a paid retry, and repeated polling is discouraged — non-obvious consequences the annotations do not convey. It stops short of describing rate limits or exactly what cancellation destroys on an in-flight task.
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?
Every sentence earns its place: purpose and return shape first, then routing to wait_images, then the polling prohibition, then the cancellation caveat. No filler and no repetition of schema detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be fully spelled out, and the description still summarizes the key ones (status, images, error/settlement). Routing and cancellation caveats are covered; only ownership/auth expectations are left implicit.
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%, including an enum on action and a note distinguishing taskId from requestId/batchId, so the schema already carries the semantics. The description only reinforces the 'owned, single task' scoping; 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 set (read/cancel) and resource (one owned taskId), plus the exact return payload. It explicitly names the sibling tools it is not (wait_images, batch_generate), so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit alternatives and conditions: wait_images for bounded waiting and image pagination, batch_generate for multiple jobs, and an explicit 'do not repeatedly poll get' prohibition. This is a complete 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.
helpARead-onlyIdempotentInspect
Read capability or troubleshooting guidance when needed; generation does not require this call. Returns topic, summary, capabilities or steps, docsUrl and version metadata. Use list_models for current model prices, account for personal access, and spending_policy for automatic-spending authorization.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Help topic; omit for the capability matrix. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety is covered. The description adds real value by disclosing the return shape (topic, summary, capabilities or steps, docsUrl, version metadata), which matters because no output schema exists, and by stating the call is optional. It stops short of describing size/limits of the capability matrix, so not 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?
Three sentences, all load-bearing, with the optionality caveat and return shape front-loaded. The final routing sentence is slightly compressed ('account for personal access') but still parses correctly, costing little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating the returned fields, and it covers the optional-use case and sibling routing. For a single-enum-parameter read tool this is essentially complete; only finer detail about the capability matrix itself 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 the enum description already covers 'omit for the capability matrix', so the baseline is 3. The description adds topic-selection guidance beyond the schema by implying which subject areas belong to other tools (prices, account, spending), helping an agent pick a topic rather than guessing.
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: reading capability or troubleshooting guidance, and immediately scopes it as optional ('generation does not require this call'). It also names the sibling tools that own adjacent needs (list_models, account, spending_policy), so an agent can distinguish it from them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the when-not condition ('generation does not require this call') and routes three concrete needs to alternatives: model prices to list_models, personal access to account, automatic-spending authorization to spending_policy. This is close to a complete routing table for the help/account/billing cluster.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsARead-onlyIdempotentInspect
List models, parameters and prices. With models:read, returns account models, processingOperations, visibleCount, callableCount, mcpEnabled and publicCatalog. Existing models[].pricing keeps its rounded-up maximum-charge display; exact public selling prices are in publicCatalog.models[].offers[].pricing. Preview confirms final charges. Anonymous or missing-scope access returns only public data, without evaluating account access. Use account for balance and spending_policy for limits.
| Name | Required | Description | Default |
|---|---|---|---|
| includeUnavailable | No | With models:read, false (default) lists callable account models; true also includes unavailable public models. Anonymous or missing-scope requests return only public catalog data; neither value grants access. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and idempotent, but the description adds substantial behavioral detail: scope-dependent return fields, anonymous/missing-scope behavior, pricing display differences, and the role of Preview in confirming final charges. This is unusually transparent for a read-only listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is front-loaded and every subsequent sentence carries useful information about access, return fields, or pricing. It is somewhat dense and run-on, but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value context, and it does: it names the relevant fields and explains the publicCatalog pricing nuance. For a one-parameter read-only listing tool with annotations, this is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single includeUnavailable parameter is already fully documented in the schema. The description does not add meaning beyond that schema detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "List models, parameters and prices." It also distinguishes the tool from siblings by explicitly pointing to account for balance and spending_policy for limits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context by explaining authenticated vs anonymous behavior and naming account and spending_policy as alternatives for related but different needs. It does not explicitly state when not to use this tool beyond those alternative routes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promptsARead-onlyIdempotentInspect
Read public prompts without an MCP Token, model call or credit charge. search (default) queries published, reviewed system recommendations; get reads a currently public detail by the id returned from search. scope must be omitted or recommended; mine, favorites and private data remain authenticated. Returns scope, accountAuthorization=not_evaluated, action and list (items/pagination) or item (original text/public link). Never generates, syncs, evaluates or rewrites prompts.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Prompt ID returned by search; required for get. | |
| page | No | Search page, starting at 1. | |
| tags | No | Optional tag filters. | |
| group | No | Optional group filter. | |
| scope | No | Recommended public cases or this authenticated user's own prompts. | |
| action | No | search lists cases; get reads one full prompt. Default search. | |
| keyword | No | Optional search text. | |
| category | No | Optional category filter. | |
| pageSize | No | Results per page; default 5, maximum 20. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| list | No | |
| scope | Yes | |
| action | Yes | |
| accountAuthorization | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/idempotentHint; the description adds that no MCP Token, model call, or credit charge is involved, that authenticated scopes are excluded, and that responses carry scope, accountAuthorization=not_evaluated, action, and either list or item. Those auth and cost disclosures go meaningfully beyond the structured 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?
Dense and front-loaded: cost/auth exemption first, then the search/get distinction, then scope limits, then return shape and exclusions. Some return-field detail duplicates the output schema, which is mild redundancy, but no sentence is wasted.
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?
Given an output schema exists, the description need not spell out return fields, yet it does so briefly while still covering auth, cost, scope restrictions, and the search/get split. Nothing essential for correct invocation is missing; only the non-scope filters go undescribed.
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 the baseline is 3. The description still adds value by clarifying the omission-or-recommended constraint on scope, the id linkage to search results, and how action drives list vs item output. It doesn't document pagination or filter params (tags, group, category, keyword), so it stops short of a 5.
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 (read public prompts) with two named modes, search (default) and get, and defines exactly what search returns (published, reviewed system recommendations) versus get (one public detail by id). An agent can distinguish this read-only prompt library from mutation-oriented siblings like generate_image or reverse_prompt without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states search is the default, that get requires an id returned from search, that scope must be omitted or set to recommended, and that mine/favorites/private remain authenticated and out of scope. It also names what the tool will never do (generate, sync, evaluate, rewrite), which is a clear when-not-to-use boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_image_deliveryAIdempotentInspect
核验原图下载失败。使用原 taskId 和 imageIndex;服务端只核验自己签发的有效链接,明确 403/404/410 才按对应图片原扣款幂等补偿。超时、临时故障、正常过期、主动删除和本地保存失败不自动退款。不会重新生成。结果区分 reachable、unconfirmed、refund_pending、refunded;退款金额见 settlement。
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Original task ID from the image metadata; never submit a new generation | |
| resultId | No | Original stable result ID when available | |
| imageIndex | Yes | Zero-based image index from inkroom/image metadata |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| taskId | Yes | |
| artifact | No | |
| evidence | Yes | |
| imageIndex | Yes | |
| settlement | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag idempotency and non-destructiveness; the description adds the real behavioural payload — this is an idempotent refund/compensation path, not a regeneration, and the refund trigger set is precisely bounded by HTTP status codes. The enumerated result states (reachable, unconfirmed, refund_pending, refunded) and the pointer to settlement for amounts give the agent the side effects it must anticipate.
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 purpose in four characters, then layers conditions, exclusions, and outcomes in dense semicolon-delimited clauses; essentially every clause carries new information. Slightly dense for skim-reading, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be spelled out, yet the description still names the status vocabulary and where refund amounts live, so the agent knows what to expect. Combined with the explicit refund/exclusion rules, nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so taskId/resultId/imageIndex are already fully documented in the schema. The description only restates that the original taskId and imageIndex must be reused, adding marginal meaning (no new-generation taskId) beyond the schema's own wording.
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: verify/report that the original image download failed, with the exact identifiers to supply. It is clearly distinguishable from generate/derive/upscale siblings, though it never explicitly contrasts itself with the closest neighbour, generation_status, which an agent might otherwise reach for.
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 explicit inclusion criteria (only server-issued links, only explicit 403/404/410) and an explicit exclusion list (timeouts, transient failures, normal expiry, manual deletion, local save failures do not auto-refund), plus the instruction not to submit a new generation. That is a full when/when-not contract.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reverse_promptImage | Reverse promptADestructiveIdempotentInspect
Reconstruct Chinese/English generation prompts, negative terms and visual anchors from one image. Same MCP Key. Administrator-configured model and per-image price; default 2 credits. Free preview(image:URL/data URL) freezes bytes and quote. auto/run/get accept only the original requestId; auto obeys spending policy, run needs explicit approval. running means background analysis: wait briefly, then follow nextAction to get the original receipt for free, without restarting analysis. No automatic image generation; use generate_image with a separate quote to validate.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | One public image URL or image data URL. The standalone client also accepts a local file. | |
| action | Yes | preview freezes one image and quotes analysis; auto checks authorization; run requires approval; get resumes the original receipt for free. | |
| requestId | No | Original analysis receipt; auto/run/get only. Reuse after interruption without a new analysis. |
Output Schema
| Name | Required | Description |
|---|---|---|
| action | Yes | |
| result | No | |
| status | Yes | |
| preview | No | |
| requestId | No | |
| nextAction | No | |
| authorization | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, idempotent=true, destructive=true; the description adds cost and authorization behavior (administrator-configured model, per-image price, default 2 credits), spending-policy vs approval semantics, and the fact that 'running' means background analysis where the agent should wait and follow nextAction to retrieve a free receipt without restarting. That is substantial behavior beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the cost/approval model, then the workflow and the sibling redirect. Dense and information-rich, though the middle sentences are packed close together and would read better as separated clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-action paid tool with an output schema, the description covers pricing, approval, resumption, and the background-running state machine — including the nextAction follow-up — so nothing an agent needs to call it correctly 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 100%, so the baseline would be 3, but the description adds real meaning: auto/run/get accept only the original requestId, and requestId reuse avoids a new analysis. The action enum's intent is reinforced rather than merely repeated.
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 — reconstructing Chinese/English generation prompts, negative terms and visual anchors from one image — which is unambiguous and clearly distinct from sibling tools like generate_image or derive_image. It also explicitly marks its boundary against generation.
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 per-action guidance (preview freezes and quotes, auto obeys spending policy, run needs explicit approval, get resumes a receipt for free) and states an exclusion plus alternative: 'No automatic image generation; use generate_image with a separate quote to validate.' An agent knows both when to use each action and when to route elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spending_policyApproval | Spending limitsADestructiveInspect
Read account-wide authorization or update only with explicit user consent. 1 credit=USD 0.01. New accounts default to unlimited automatic execution; users can set task/5h/day/week limits, with suggested values 50/500/1000/5000. Existing saved policies remain unchanged. Wallet balance, token hard caps and permissions still apply. Never raise autonomously. action=get reads without other arguments; action=update requires the complete policy (including unlimited and its latest revision) and confirmed:true after explicit consent. Keep allowance and reset/recovery countdown in the same table, not separate prose. Used includes reservations; never subtract twice.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | get reads the policy without other parameters; update requires the complete policy with its latest revision and confirmed:true after explicit user approval. An explicit empty action retains legacy get behavior. | |
| policy | No | Complete replacement policy from the latest get result; never raise limits autonomously | |
| confirmed | No | true only after the user explicitly approves this policy update |
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | No | |
| policy | Yes | |
| windows | No | |
| timezone | Yes | |
| usdPerPoint | Yes | |
| dayUsedMillis | Yes | |
| reservedMillis | Yes | |
| weekUsedMillis | Yes | |
| fiveHourUsedMillis | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond annotations: explicit consent requirements, default unlimited behavior for new accounts, suggested limit values, preservation of existing policies, interaction with wallet balance/token caps/permissions, revision staleness, and reservation accounting. This is rich disclosure for a destructive update-capable tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core read/update distinction, but it is a dense paragraph with multiple operational clauses. Some sentences, such as table-formatting and reservation-counting instructions, are tangential to invoking the tool and reduce conciseness.
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?
Given the destructive-update nature, rich annotations, full schema coverage, and an output schema, the description provides enough context for correct invocation. It covers consent, defaults, revision handling, and constraints that an agent needs before calling this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents action, policy, and confirmed in detail. The description reinforces key semantics such as complete policy replacement, including unlimited and latest revision, but largely duplicates schema-level guidance rather than adding new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific read/update purpose for an account-wide spending policy, with action=get and action=update behavior made explicit. It distinguishes the two modes and names the policy object, though the opening phrase 'account-wide authorization' is slightly less direct than 'spending policy'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage conditions: get reads without other arguments, update requires the complete policy and confirmed:true, and updates must only occur after explicit user consent. It also explicitly forbids autonomous limit increases, which is a strong when-not-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_imageADestructiveIdempotentInspect
Apply x2/x4/anime/face to one image; use derive_image for general edits and generate_image for new images. Preview returns requestId and cost/readiness in preview; auto/run reuse that receipt. Run requires approval. Execution returns task/status and possibly nextAction; recover the original receipt instead of generating again.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | One public image URL or image data URL; preview only. | |
| action | Yes | preview quotes one image; auto checks saved authorization; run requires user approval. | |
| operation | No | Dedicated processing operation; default x2. Use derive_image for general editing. | |
| requestId | No | Original preview receipt; auto/run only, without new image inputs. | |
| deliveryMode | No | native returns previews and original links; links returns original links; metadata omits image delivery. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true, and the description adds genuinely non-structured behavior: run requires user approval, preview produces a requestId/cost/readiness receipt that auto/run reuse, and execution returns task/status and possibly nextAction. It does not explain why the operation is flagged destructive or what the approval/rate-limit flow looks like, so it falls just short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and alternatives, then a compact workflow clause. It is information-dense with no filler, though the telegraphic 'receipt' phrasing and run-on clauses require careful reading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with one required param, no output schema and a destructive annotation, the description covers inputs, execution flow, approval gating, and even return fields (task/status, nextAction). What it omits is the specific consequence behind the destructiveHint and any failure/recovery modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but the description adds operational meaning the schema lacks: requestId is a reusable preview receipt rather than a fresh input ('auto/run only, without new image inputs'), and action semantics tie into the preview/approval lifecycle. This is real value beyond the enum descriptions.
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?
Opens with a concrete verb plus resource and enumerated operations ('Apply x2/x4/anime/face to one image'), immediately distinguishing it from sibling tools. An agent can tell this is the dedicated upscaling tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to alternatives: 'use derive_image for general edits and generate_image for new images.' It also explains the preview/auto/run lifecycle and that run requires approval, so the when-to-use decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_imagesARead-onlyIdempotentInspect
Await existing requestId, batchId or taskIds; never submit new generation. Wait defaults to 24 seconds, maximum 45; native pages deliver 6 previews, links pages 32 originals. Returns status, complete, tasks, counts, pendingTaskIds, resultManifest and nextAction when continuation is needed. Display ready images, then call nextAction.tool with its exact arguments/cursor. Pending is not failure; report actual failed tasks with error/settlement. For one-task cancellation use generation_status. When the wait expires, return the latest snapshot with complete=false while work or delivery remains; resume nextAction without regenerating. Failed tasks remain in tasks with error/failure and settlement. Invalid or unauthorized lookups return a tool error, not a new task.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque nextAction continuation cursor; copy unchanged. Omit only to replay already delivered images. | |
| batchId | No | Original batch receipt; choose exactly one of batchId, requestId or taskIds. | |
| taskIds | No | Explicit task IDs; alternative to batchId or requestId. | |
| requestId | No | Original single-image preview receipt; alternative to batchId or taskIds. | |
| deliveryMode | No | native returns previews and original links; links returns original links; metadata omits image delivery. | |
| timeoutSeconds | No | Bounded server wait; default 24 seconds, maximum 45. A pending response is not a failed task. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tasks | Yes | |
| failed | Yes | |
| status | Yes | |
| batchId | No | |
| complete | Yes | |
| failures | No | |
| requestId | No | |
| succeeded | Yes | |
| nextAction | No | |
| settlement | No | |
| deliveryMode | No | native returns previews and original links; links returns original links; metadata omits image delivery. |
| imageProgress | Yes | |
| acceptedImages | No | |
| pendingTaskIds | No | |
| resultManifest | No | |
| requestedImages | No | |
| unsubmittedImages | No | |
| submissionComplete | Yes | |
| readyImagesRemaining | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already marking it read-only and idempotent, the description adds substantial behavioral detail: timeout bounds, delivery-mode preview counts, pending versus failed semantics, expiration snapshots, continuation behavior, and tool-error behavior for invalid or unauthorized lookups.
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?
The purpose and timeout facts are front-loaded, but the paragraph is dense and repeats failure semantics: pending is not failure, failed tasks carry error/settlement, and failed tasks remain with error/failure and settlement. Some tightening would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex wait/continuation tool, the description covers the important operational cases: bounded waiting, continuation via nextAction, pending versus failed states, expiration behavior, and invalid lookup errors. An output schema exists, so return-field enumeration is supplementary rather than necessary.
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 the baseline is 3. The description still adds meaning beyond the schema by explaining delivery-mode differences such as 6 native previews versus 32 original links, and by framing cursor as a nextAction continuation value.
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: wait for existing requestId, batchId, or taskIds, and explicitly says it never submits a new generation. It distinguishes the tool from generation and cancellation siblings.
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 clearly directs the agent to await existing receipts and not submit new generation, and it names generation_status for one-task cancellation. However, it does not fully explain when to choose wait_images versus generation_status beyond the cancellation case.
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.
2 tool updates
- Changed
derive_image2 fields changed- changed
Input schema / properties / quality / descriptionPrevious value: -"Supported quality tier from list_models; affects the quote."New value: +"GPT: auto (default), low, medium, high; 2.5 Sunburst/Flare also xhigh, max; affects the quote. Others: list_models qualities." - changed
Input schema / properties / size / descriptionPrevious value: -"Supported aspect ratio from list_models, e.g. 1:1."New value: +"GPT: pixel size e.g. 3840x2160. Others: list_models sizes."
- Changed
generate_image2 fields changed- changed
Input schema / properties / quality / descriptionPrevious value: -"Supported quality tier from list_models; affects the quote."New value: +"GPT: auto (default), low, medium, high; 2.5 Sunburst/Flare also xhigh, max; affects the quote. Others: list_models qualities." - changed
Input schema / properties / size / descriptionPrevious value: -"Supported aspect ratio from list_models, e.g. 1:1."New value: +"GPT: pixel size e.g. 3840x2160. Others: list_models sizes."
4 tool updates
- Changed
generation_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "cancelRequested": { + "type": "boolean" + }, + "deliveryStatus": { + "type": "string" + }, + "error": { + "type": "string" + }, + "failedImages": { + "items": { + "properties": { + "error": { + "type": "string" + }, + "failure": { + "properties": { + "code": { + "type": "string" + }, + "nextAction": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "retryable", + "nextAction" + ], + "type": "object" + }, + "index": { + "type": "integer" + }, + "settlement": { + "properties": { + "chargedPoints": { + "minimum": 0, + "type": "number" + }, + "estimatedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "netChargedPoints": { + "minimum": 0, + "type": "number" + }, + "quotedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "refundedPoints": { + "minimum": 0, + "type": "number" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } + }, + "required": [ + "index", + "error" + ], + "type": "object" + }, + "type": "array" + }, + "failure": { + "properties": { + "code": { + "type": "string" + }, + "nextAction": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "retryable", + "nextAction" + ], + "type": "object" + }, + "generation": { + "type": "object" + }, + "imageProgress": { + "properties": { + "failed": { + "type": "integer" + }, + "pending": { + "type": "integer" + }, + "ready": { + "type": "integer" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "total", + "ready", + "failed", + "pending" + ], + "type": "object" + }, + "images": { + "items": { + "properties": { + "deliveryStatus": { + "type": "string" + }, + "expired": { + "type": "boolean" + }, + "expiresAt": { + "type": "string" + }, + "height": { + "type": "integer" + }, + "index": { + "type": "integer" + }, + "linkExpiresAt": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "retainedUntil": { + "type": "string" + }, + "revisedPrompt": { + "type": "string" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "index" + ], + "type": "object" + }, + "type": "array" + }, + "lineage": { + "type": "object" + }, + "notice": { + "type": "string" + }, + "outputContract": { + "type": "object" + }, + "settlement": { + "properties": { + "chargedPoints": { + "minimum": 0, + "type": "number" + }, + "estimatedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "netChargedPoints": { + "minimum": 0, + "type": "number" + }, + "quotedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "refundedPoints": { + "minimum": 0, + "type": "number" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "status": { + "description": "Current task state, including running and terminal success, failure or cancellation.", + "type": "string" + }, + "taskId": { + "description": "Existing owned task ID.", + "type": "string" + }, + "timing": { + "type": "object" + } + }, + "required": [ + "taskId", + "status" + ], + "type": "object" +}
- Changed
list_models1 field changed- changed
Input schema / properties / includeUnavailable / descriptionPrevious value: -"With a Token, also show public models blocked for that account; anonymous results never evaluate account access."New value: +"With models:read, false (default) lists callable account models; true also includes unavailable public models. Anonymous or missing-scope requests return only public catalog data; neither value grants access."
- Changed
spending_policy2 fields changed- added
Input schema / properties / action / anyOfAdded value: +[ + { + "enum": [ + "get", + "update" + ], + "type": "string" + }, + { + "const": "", + "description": "Legacy empty action is treated as get; new clients should send get explicitly." + } +] - changed
Input schema / properties / action / descriptionPrevious value: -"get reads account-wide spending authorization; update requires explicit user approval"New value: +"get reads the policy without other parameters; update requires the complete policy with its latest revision and confirmed:true after explicit user approval. An explicit empty action retains legacy get behavior."
- Changed
wait_images1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "acceptedImages": { + "type": "integer" + }, + "batchId": { + "type": "string" + }, + "complete": { + "type": "boolean" + }, + "deliveryMode": { + "description": "native returns previews and original links; links returns original links; metadata omits image delivery.", + "enum": [ + "native", + "links", + "metadata" + ], + "type": "string" + }, + "failed": { + "type": "integer" + }, + "failures": { + "items": { + "properties": { + "error": { + "type": "string" + }, + "index": { + "type": "integer" + } + }, + "required": [ + "index", + "error" + ], + "type": "object" + }, + "type": "array" + }, + "imageProgress": { + "properties": { + "failed": { + "type": "integer" + }, + "pending": { + "type": "integer" + }, + "ready": { + "type": "integer" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "total", + "ready", + "failed", + "pending" + ], + "type": "object" + }, + "nextAction": { + "properties": { + "arguments": { + "properties": { + "action": { + "type": "string" + }, + "batchId": { + "type": "string" + }, + "cursor": { + "type": "string" + }, + "deliveryMode": { + "enum": [ + "native", + "links", + "metadata" + ], + "type": "string" + }, + "requestId": { + "type": "string" + }, + "seenImages": { + "additionalProperties": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "type": "object" + }, + "taskIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeoutSeconds": { + "type": "integer" + } + }, + "type": "object" + }, + "presentReadyFirst": { + "type": "boolean" + }, + "silent": { + "type": "boolean" + }, + "tool": { + "enum": [ + "wait_images", + "batch_generate" + ], + "type": "string" + } + }, + "required": [ + "tool", + "arguments", + "silent", + "presentReadyFirst" + ], + "type": "object" + }, + "pendingTaskIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "readyImagesRemaining": { + "type": "integer" + }, + "requestId": { + "type": "string" + }, + "requestedImages": { + "type": "integer" + }, + "resultManifest": { + "properties": { + "inputs": { + "items": { + "properties": { + "count": { + "type": "integer" + }, + "index": { + "type": "integer" + }, + "status": { + "type": "string" + }, + "taskId": { + "type": "string" + } + }, + "required": [ + "index", + "taskId", + "count", + "status" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "requestedImages": { + "type": "integer" + }, + "results": { + "items": { + "properties": { + "imageIndex": { + "type": "integer" + }, + "inputIndex": { + "type": "integer" + }, + "resultId": { + "type": "string" + }, + "saved": { + "type": "boolean" + }, + "settlement": { + "properties": { + "chargedPoints": { + "minimum": 0, + "type": "number" + }, + "estimatedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "netChargedPoints": { + "minimum": 0, + "type": "number" + }, + "quotedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "refundedPoints": { + "minimum": 0, + "type": "number" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "status": { + "type": "string" + } + }, + "required": [ + "resultId", + "inputIndex", + "imageIndex", + "status", + "saved" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "requestedImages", + "inputs", + "results" + ], + "type": "object" + }, + "settlement": { + "properties": { + "chargedPoints": { + "minimum": 0, + "type": "number" + }, + "estimatedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "netChargedPoints": { + "minimum": 0, + "type": "number" + }, + "quotedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "refundedPoints": { + "minimum": 0, + "type": "number" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "status": { + "type": "string" + }, + "submissionComplete": { + "type": "boolean" + }, + "succeeded": { + "type": "integer" + }, + "tasks": { + "items": { + "properties": { + "cancelRequested": { + "type": "boolean" + }, + "deliveryStatus": { + "type": "string" + }, + "error": { + "type": "string" + }, + "failedImages": { + "items": { + "properties": { + "error": { + "type": "string" + }, + "failure": { + "properties": { + "code": { + "type": "string" + }, + "nextAction": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "retryable", + "nextAction" + ], + "type": "object" + }, + "index": { + "type": "integer" + }, + "settlement": { + "properties": { + "chargedPoints": { + "minimum": 0, + "type": "number" + }, + "estimatedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "netChargedPoints": { + "minimum": 0, + "type": "number" + }, + "quotedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "refundedPoints": { + "minimum": 0, + "type": "number" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + } + }, + "required": [ + "index", + "error" + ], + "type": "object" + }, + "type": "array" + }, + "failure": { + "properties": { + "code": { + "type": "string" + }, + "nextAction": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "retryable", + "nextAction" + ], + "type": "object" + }, + "generation": { + "type": "object" + }, + "imageProgress": { + "properties": { + "failed": { + "type": "integer" + }, + "pending": { + "type": "integer" + }, + "ready": { + "type": "integer" + }, + "total": { + "type": "integer" + } + }, + "required": [ + "total", + "ready", + "failed", + "pending" + ], + "type": "object" + }, + "images": { + "items": { + "properties": { + "deliveryStatus": { + "type": "string" + }, + "expired": { + "type": "boolean" + }, + "expiresAt": { + "type": "string" + }, + "height": { + "type": "integer" + }, + "index": { + "type": "integer" + }, + "linkExpiresAt": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "retainedUntil": { + "type": "string" + }, + "revisedPrompt": { + "type": "string" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "index" + ], + "type": "object" + }, + "type": "array" + }, + "lineage": { + "type": "object" + }, + "notice": { + "type": "string" + }, + "outputContract": { + "type": "object" + }, + "settlement": { + "properties": { + "chargedPoints": { + "minimum": 0, + "type": "number" + }, + "estimatedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "netChargedPoints": { + "minimum": 0, + "type": "number" + }, + "quotedMaxPoints": { + "minimum": 0, + "type": "number" + }, + "refundedPoints": { + "minimum": 0, + "type": "number" + }, + "status": { + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" + }, + "status": { + "description": "Current task state, including running and terminal success, failure or cancellation.", + "type": "string" + }, + "taskId": { + "description": "Existing owned task ID.", + "type": "string" + }, + "timing": { + "type": "object" + } + }, + "required": [ + "taskId", + "status" + ], + "type": "object" + }, + "type": [ + "array", + "null" + ] + }, + "unsubmittedImages": { + "type": "integer" + } + }, + "required": [ + "status", + "complete", + "succeeded", + "failed", + "submissionComplete", + "imageProgress", + "tasks" + ], + "type": "object" +}
11 tool updates
- Changed
account6 fields changed- added
Input schema / properties / action / descriptionAdded value: +"Read account summary or paginated billing; defaults to the permitted action." - added
Input schema / properties / from / descriptionAdded value: +"Inclusive usage start, RFC3339 or YYYY-MM-DD." - added
Input schema / properties / page / descriptionAdded value: +"Usage page, starting at 1." - added
Input schema / properties / pageSize / descriptionAdded value: +"Usage rows per page; default 5, maximum 20." - added
Input schema / properties / to / descriptionAdded value: +"Usage end, RFC3339 or YYYY-MM-DD." - added
Input schema / properties / type / descriptionAdded value: +"Optional credit-log type, e.g. mcp_call or ai_refund."
- Changed
derive_image17 fields changed- added
Input schema / properties / action / descriptionAdded value: +"preview freezes inputs and quotes cost; auto checks saved spending authorization; run requires explicit user approval." - added
Input schema / properties / count / descriptionAdded value: +"Image count; default 1, maximum 16. Zero retains the legacy default." - added
Input schema / properties / deliveryMode / descriptionAdded value: +"native returns previews and original links; links returns original links; metadata omits image delivery." - added
Input schema / properties / derivationType / descriptionAdded value: +"Lineage label, e.g. variant, edit, change-model or change-size." - added
Input schema / properties / model / descriptionAdded value: +"Public image model ID from list_models; omit for the configured recommendation." - added
Input schema / properties / outputFormat / descriptionAdded value: +"Original image format; default png." - changed
Input schema / properties / parentImageIndex / descriptionPrevious value: -"Zero-based; required for multiple images."New value: +"Zero-based source image index; required when the parent has multiple images." - added
Input schema / properties / parentTaskId / descriptionAdded value: +"Completed owned task supplying the original image; alternative to referenceImages." - added
Input schema / properties / prompt / descriptionAdded value: +"Image instructions; required for a fresh preview." - added
Input schema / properties / promptExampleId / descriptionAdded value: +"Optional source example provenance; does not supply an original image." - added
Input schema / properties / promptId / descriptionAdded value: +"Optional source prompt provenance; does not supply an original image." - added
Input schema / properties / quality / descriptionAdded value: +"Supported quality tier from list_models; affects the quote." - changed
Input schema / properties / referenceImages / descriptionPrevious value: -"URL/data URL."New value: +"Up to 8 source images; preview freezes their bytes. Use derive_image for editing." - added
Input schema / properties / referenceImages / items / descriptionAdded value: +"Public image URL or image data URL." - added
Input schema / properties / requestId / descriptionAdded value: +"Original preview receipt for auto/run; reuse it after interruption, without re-previewing." - changed
Input schema / properties / size / descriptionPrevious value: -"Ratio."New value: +"Supported aspect ratio from list_models, e.g. 1:1." - changed
Input schema / properties / thinkingLevel / descriptionPrevious value: -"Gemini thinking; extended=高级模式."New value: +"Gemini reasoning level; supported values and price multipliers come from list_models."
- Changed
generate_image13 fields changed- added
Input schema / properties / action / descriptionAdded value: +"preview freezes inputs and quotes cost; auto checks saved spending authorization; run requires explicit user approval." - added
Input schema / properties / count / descriptionAdded value: +"Image count; default 1, maximum 16. Zero retains the legacy default." - added
Input schema / properties / deliveryMode / descriptionAdded value: +"native returns previews and original links; links returns original links; metadata omits image delivery." - added
Input schema / properties / model / descriptionAdded value: +"Public image model ID from list_models; omit for the configured recommendation." - added
Input schema / properties / outputFormat / descriptionAdded value: +"Original image format; default png." - added
Input schema / properties / prompt / descriptionAdded value: +"Image instructions; required for a fresh preview." - added
Input schema / properties / quality / descriptionAdded value: +"Supported quality tier from list_models; affects the quote." - changed
Input schema / properties / referenceImages / descriptionPrevious value: -"URL/data URL."New value: +"Up to 8 source images; preview freezes their bytes. Use derive_image for editing." - added
Input schema / properties / referenceImages / items / descriptionAdded value: +"Public image URL or image data URL." - added
Input schema / properties / requestId / descriptionAdded value: +"Original preview receipt for auto/run; reuse it after interruption, without re-previewing." - added
Input schema / properties / retryTaskId / descriptionAdded value: +"Failed task ID; preview only, without replacement image parameters." - changed
Input schema / properties / size / descriptionPrevious value: -"Ratio."New value: +"Supported aspect ratio from list_models, e.g. 1:1." - changed
Input schema / properties / thinkingLevel / descriptionPrevious value: -"Gemini thinking; extended=高级模式."New value: +"Gemini reasoning level; supported values and price multipliers come from list_models."
- Changed
generation_status2 fields changed- added
Input schema / properties / action / descriptionAdded value: +"get reads one task; cancel stops that task. Default get; use wait_images to await image delivery." - added
Input schema / properties / taskId / descriptionAdded value: +"Owned task ID returned by generation; not a requestId or batchId."
- Changed
help2 fields changed- added
Input schema / properties / topic / descriptionAdded value: +"Help topic; omit for the capability matrix." - changed
Input schema / properties / topic / enumPrevious value: -[ - "quickstart", - "generate", - "derive", - "enhance", - "compare", - "models", - "async_batch", - "prompts", - "account", - "billing", - "tasks", - "examples", - "update", - "troubleshooting" -]New value: +[ + "quickstart", + "generate", + "derive", + "enhance", + "reverse", + "compare", + "models", + "async_batch", + "prompts", + "account", + "billing", + "tasks", + "examples", + "update", + "troubleshooting" +]
- Changed
list_models1 field changed- added
Input schema / properties / includeUnavailable / descriptionAdded value: +"With a Token, also show public models blocked for that account; anonymous results never evaluate account access."
- Added
prompts - Added
reverse_prompt - Changed
spending_policy10 fields changed- added
Input schema / properties / action / descriptionAdded value: +"get reads account-wide spending authorization; update requires explicit user approval" - added
Input schema / properties / confirmed / descriptionAdded value: +"true only after the user explicitly approves this policy update" - added
Input schema / properties / policy / descriptionAdded value: +"Complete replacement policy from the latest get result; never raise limits autonomously" - added
Input schema / properties / policy / properties / dayPoints / descriptionAdded value: +"Maximum credits across the daily window when finite" - added
Input schema / properties / policy / properties / enabled / descriptionAdded value: +"Whether saved automatic-spending authorization is enabled" - added
Input schema / properties / policy / properties / fiveHourPoints / descriptionAdded value: +"Maximum credits across the rolling five-hour window when finite" - added
Input schema / properties / policy / properties / revision / descriptionAdded value: +"Latest policy revision from get; stale updates are rejected" - added
Input schema / properties / policy / properties / taskPoints / descriptionAdded value: +"Maximum credits per task when finite; 1 credit is USD 0.01" - added
Input schema / properties / policy / properties / unlimited / descriptionAdded value: +"Explicit unlimited choice; wallet balance, Token hard caps and permissions still apply" - added
Input schema / properties / policy / properties / weekPoints / descriptionAdded value: +"Maximum credits across the weekly window when finite"
- Changed
upscale_image5 fields changed- added
Input schema / properties / action / descriptionAdded value: +"preview quotes one image; auto checks saved authorization; run requires user approval." - added
Input schema / properties / deliveryMode / descriptionAdded value: +"native returns previews and original links; links returns original links; metadata omits image delivery." - changed
Input schema / properties / image / descriptionPrevious value: -"URL/data URL."New value: +"One public image URL or image data URL; preview only." - added
Input schema / properties / operation / descriptionAdded value: +"Dedicated processing operation; default x2. Use derive_image for general editing." - added
Input schema / properties / requestId / descriptionAdded value: +"Original preview receipt; auto/run only, without new image inputs."
- Changed
wait_images7 fields changed- added
Input schema / properties / batchId / descriptionAdded value: +"Original batch receipt; choose exactly one of batchId, requestId or taskIds." - changed
Input schema / properties / cursor / descriptionPrevious value: -"Copy nextAction; omit to replay images."New value: +"Opaque nextAction continuation cursor; copy unchanged. Omit only to replay already delivered images." - added
Input schema / properties / deliveryMode / descriptionAdded value: +"native returns previews and original links; links returns original links; metadata omits image delivery." - added
Input schema / properties / requestId / descriptionAdded value: +"Original single-image preview receipt; alternative to batchId or taskIds." - added
Input schema / properties / taskIds / descriptionAdded value: +"Explicit task IDs; alternative to batchId or requestId." - added
Input schema / properties / taskIds / items / descriptionAdded value: +"Owned generation task ID." - added
Input schema / properties / timeoutSeconds / descriptionAdded value: +"Bounded server wait; default 24 seconds, maximum 45. A pending response is not a failed task."
10 tool updates
- First observed
account - First observed
derive_image - First observed
generate_image - First observed
generation_status - First observed
help - First observed
list_models - First observed
report_image_delivery - First observed
spending_policy - First observed
upscale_image - First observed
wait_images
Publisher details
- Operator
- InkRoom · Publisher source
- Operator website
- https://inkroom.ai/ · Publisher source
- Vendor relationship
- Unknown
- Documentation
- https://inkroom.ai/mcp-server · Publisher source
- Trust center
- Unknown
- Restrictions
- Image generation requires the user’s InkRoom account and Key, with a cost preview before paid execution. · Publisher source
Related MCP Connectors
Generate and upscale AI images, videos and audio.
Generate and edit images, create videos, quote credit costs, and retrieve private results.
AI image generation: characters, products, posters and edits, saved to your gallery.
Generate images and videos with frontier AI models. Pay per use; credits never expire.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables text-to-image creation, image editing with optional mask-based local changes, and style-preserving variation generation through NewAPI-compatible endpoints. Generated images are auto-organized by month with extracted tags, metadata, and a searchable index.413 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI image generation using the minimax/image-01 model via Replicate API. Supports multiple aspect ratios, batch generation of up to 9 images, prompt optimization, and character reference images for consistent character generation.-
- AlicenseAqualityDmaintenanceAI image and video generation, editing, and region repair via Gemini, OpenAI, and Grok1185 npm5MIT
- AlicenseAqualityBmaintenanceEnables text-to-image, image-to-image, image editing, and 4K upscaling across 90+ image models with Chinese prompts supported.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.