seeany-sun-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., "@seeany-sun-mcpGenerate a product image of a white sneaker on a marble surface"
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.
SeeAny Sun MCP
This directory provides a local stdio MCP Server that can be called by MCP clients such as Codex, Claude Desktop, and Cursor.
It supports two modes:
demo: no API key required; uses product images in the repository for offline simulation and does not call paid APIs.live: after settingSEEANY_API_KEY, calls the main sitehttps://api.seeany.com; supports image upload, AI creation, task polling, download, and AI refinement.
Authentication environment variables
Use uniformly:
SEEANY_API_KEY=sk-sa-xxxxxxxxDo not write the real Key into Git, browser code, or chat messages. Copy .env.example to your local environment and fill it in. If there is no Key, the service automatically enters Demo mode; you can also use SEEANY_MCP_MODE=demo to force offline mode.
Related MCP server: metalevel/snapix-mcp-server
Local installation and testing
cd mcp-server
npm install
npm run build
npm run smokeThe Smoke test forces Demo mode and will not incur real charges.
If you need to perform a real end-to-end acceptance test (which will incur charges on the main account), after confirming that the new Key has been set, run:
npm run live-smokeConnecting Codex
codex mcp add seeany-sun-mcp -- npx --yes seeany-sun-mcpInstall as a Codex plugin (MCP + Skill)
The repository also provides a Codex plugin manifest: after installation, you will get both the SeeAny MCP tools and the seeany-product-visuals product visual workflow Skill.
codex plugin marketplace add juin20260102-oss/seeany-sun-mcp --sparse .agents/plugins
codex plugin add seeany-sun-mcp@seeanyAfter installation, start a new Codex conversation; for real image generation, you still need to set SEEANY_API_KEY in your local environment. If you only need the MCP tools, use the codex mcp add command above.
If you use the real API, set SEEANY_API_KEY in the same environment where you start the MCP. After connecting, it is recommended to call seeany_get_capabilities first, then call in the following order:
seeany_upload_asset(when there is a reference image)seeany_refine_prompt(optional)seeany_generate_product_imageseeany_wait_generationseeany_download_assets
MCP Inspector
npm run inspectCurrent real API mapping
MCP tool | SeeAny API |
|
|
|
|
|
|
|
|
Tasks default to asynchronous mode. The main site API's image/video tasks are billed according to account configuration; seeany_quote_generation only returns an estimate and does not pre-deduct charges.
SeeAny Skill
The repository includes skills/seeany-product-visuals, used to guide the Agent through the complete flow of “upload reference image → prompt refinement → quote → generate → poll → download” when calling the MCP. The npm package also includes this Skill directory.
npm package name
The current package name is set to seeany-sun-mcp, suitable for first publishing a public unscoped package. Before the official release, you need to confirm the name is available on npm; if SeeAny has established an npm scope, you can also migrate to @seeany/sun-mcp.
The simplest invocation after publishing:
npx --yes seeany-sun-mcpCheck the package contents before publishing:
npm run pack:checkAutomated testing and publishing
GitHub Actions will run on Push and Pull Request to the main branch using Node.js 20, 22, and 24 to perform plugin validation, MCP Smoke Test, and npm packaging checks.
When publishing a new version, first update the versions in package.json, package-lock.json, and .codex-plugin/plugin.json in sync, then create a Git Tag with the same version:
git tag v0.5.0
git push origin v0.5.0release.yml verifies that the Tag matches the package version, then publishes via npm Trusted Publishing and creates a GitHub Release. Before first use, you need to add the GitHub Actions Trusted Publisher in the npm package settings:
GitHub user:
juin20260102-ossRepository:
seeany-sun-mcpWorkflow:
release.ymlAllowed action:
npm publish
Available Tools
11 toolsseeany_create_product_visualA
Execute a previously quoted product-visual plan, wait for its stored job, and download outputs. In live mode confirm_cost must be true. Reusing a plan_id resumes its recorded job instead of submitting another one.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | ||
| output_dir | No | Optional override for the plan output directory. | |
| confirm_cost | Yes | Explicit confirmation of the quoted live-mode cost. | |
| timeout_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the annotations: it waits for a stored job, downloads outputs, requires confirm_cost in live mode, and explains that reusing plan_id resumes the job rather than creating a new one. This is rich, non-obvious context that helps the agent predict side effects.
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 dense, front-loaded sentences with no filler. Every clause adds operational value, and the most important usage constraint (confirm_cost) appears early.
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?
The description covers lifecycle, cost confirmation, and idempotency, which are the key operational concerns. It does not define 'live mode' or specify what the return value contains, but given the annotations and sibling tools, the definition is still sufficiently complete 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?
The schema already covers output_dir and confirm_cost, but plan_id and timeout_seconds lack descriptions. The description does add plan_id reuse semantics and confirm_cost requirements, yet it does not explain timeout_seconds or how output_dir interacts with the plan's existing output directory. With 50% schema coverage, this is adequate but not fully compensating.
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 precise action: execute a previously quoted product-visual plan, wait for the stored job, and download outputs. This clearly distinguishes it from siblings like seeany_plan_product_visual, which would create the plan rather than execute it.
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 phrase 'previously quoted product-visual plan' clearly implies this tool is used after quoting/planning, and the resume behavior adds important context. It does not explicitly name alternatives or state when not to use it, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_download_assetsA
Download completed SeeAny output images into a local directory and return their file paths.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| output_dir | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark the tool as non-read-only and non-destructive. The description adds real behavioral context: it writes output files into a local directory and returns their paths. It does not mention overwrite behavior or directory creation, but for a download operation the core side effect is disclosed.
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 sentence with no fluff: action, resource, destination, and return value are all front-loaded. Every word contributes to understanding.
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 simple two-parameter download tool, the description covers the main flow but leaves gaps like output_dir creation/overwrite behavior and the exact representation of returned file paths. It is adequate but not fully self-sufficient.
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 0%, so the description must carry the burden. It indirectly maps output_dir to 'local directory' and job_id to a 'completed SeeAny' job, adding some meaning, but it does not explain formats, whether output_dir is auto-created, or required job state in detail.
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 action (download), resource (completed SeeAny output images), destination (local directory), and return value (file paths). It is clearly distinct from siblings like upload_asset or get_generation, none of which download output images.
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 word 'completed' implies this should be used after a SeeAny generation has finished, which is a useful contextual cue next to wait_generation. However, it never explicitly says when to use this versus alternatives, and no exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_generate_product_imageB
Create an asynchronous SeeAny product-image task, then use seeany_wait_generation to receive results.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| model | No | seeany-quality | |
| prompt | Yes | Product image description, up to 2000 characters. | |
| use_case | No | scene | |
| resolution | No | 1k | |
| aspect_ratio | No | 1:1 | |
| reference_asset_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only indicate read/write hints), the description discloses the asynchronous nature of the task and directs the agent to a wait step. This is useful behavioral context that helps the agent understand the tool's execution model.
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 that conveys the core action and the required follow-up with zero filler. Every word earns its place.
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 7-parameter async task with no output schema, the description is too thin. It doesn't explain what the immediate response contains (e.g., a task ID), how the wait step connects, or what the parameters mean. The workflow hint is helpful but insufficient 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 only 14%, so the description must compensate for undocumented parameters, but it doesn't mention any parameter semantics at all. The agent is left with raw enum values and defaults but no explanation of what count, model, or resolution actually affect.
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 clearly states the tool creates an asynchronous SeeAny product-image task, with a specific verb and resource. It also points to seeany_wait_generation as the follow-up, which distinguishes it from the retrieval/wait siblings, though it doesn't explicitly differentiate it from seeany_create_product_visual.
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 gives a clear workflow context: create the async task, then wait for results. However, it provides no guidance on when to choose this tool over seeany_create_product_visual or other generation siblings, and no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_get_accountARead-only
Show whether this MCP is using the local demo or the authenticated SeeAny API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it discloses that the tool reports an environment/mode status (local demo vs authenticated API). The annotations already mark it as readOnly and non-destructive, and the description is consistent with those safety signals.
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 a single, front-loaded sentence with no filler. Every word contributes to explaining the tool's purpose, making it easy for an agent to parse quickly.
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 zeroparameter, read-only status-check tool, the description is complete. It explains what the tool reports ('whether this MCP is using the local demo or the authenticated SeeAny API') and the annotations cover sideeffect and safety characteristics. No output schema is needed for such a simple status query.
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 input schema has zero parameters and the description correctly implies no inputs are needed. Since there are no parameters to document, the baseline of 4 applies; the description adds no misleading parameter information.
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 uses a specific verb ('Show') and names the exact resource being checked: whether the MCP is using the local demo or the authenticated SeeAny API. This clearly distinguishes it from siblings like seeany_get_capabilities and seeany_generate_product_image, which serve different purposes.
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 intended use is implied by the description: call this when you need to know whether the MCP is running against the local demo or the authenticated API. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any excluded scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_get_capabilitiesARead-only
List SeeAny image generation models, ratios, resolutions, and current execution mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this read-only and non-destructive, so the description only needs to add meaningful behavioral context. It does so by specifying exactly what information is returned: models, ratios, resolutions, and execution mode. This goes beyond a vague 'get capabilities' without contradicting 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?
The description is a single compact sentence that front-loads the action and directly lists the returned data categories. Every word contributes meaning, with no filler or redundant restatement of the tool name.
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 zero-parameter read-only capability-listing tool, the description is sufficiently complete: it names the output categories and there is no output schema to elaborate. Minor gap is the lack of any indication of how the returned values are structured or formatted, but this is low-impact for this tool type.
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 has zero parameters and schema description coverage is 100%, so there is no parameter documentation burden on the description. With no parameters, the baseline of 4 applies and the description needs no further parameter-level detail.
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?
Description clearly states a specific verb ('List') and a precise resource scope (SeeAny image generation models, ratios, resolutions, and current execution mode). This distinguishes it from siblings like get_account or generation-oriented tools without appearing generic.
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?
There is no explicit guidance on when to call this tool versus the sibling tools. While its purpose is fairly obvious, the description does not mention that it should be used for discovery before generation, nor does it state any conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_get_generationARead-only
Get the latest status, progress, and output URLs for a SeeAny generation task.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call read-only; the description additionally reveals what the response contains (status, progress, output URLs) and the 'latest' nature, which is useful for repeated polling. It does not describe error cases or the lifecycle of output URL availability, but with read-only annotations the burden is lower.
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?
One sentence, front-loaded with the action and object, listing the three return groups with no filler. Every word contributes to the agent's understanding.
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 one-parameter, read-only getter with no output schema, the description covers the essential return areas and implies polling. It could mention that output URLs appear only after completion and point to wait_generation, but those are secondary for simple 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 description coverage at 0%, the description needed to explain that job_id comes from a generation-creation call and how to obtain it. It does not; it only implies the task context. The property name is self-evident, but no sourcing/format guidance is provided.
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 identifies a specific verb ('Get'), a specific resource (a SeeAny generation task), and the exact data returned (status, progress, output URLs). 'Latest' signals a polling/query behavior, distinguishing it from sibling seeany_wait_generation, which implies blocking.
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?
No guidance is given about when to call this tool versus seeany_wait_generation or seeany_download_assets. The description only implies it is for checking a task; it does not state exclusions or polling semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_plan_product_visualARead-only
Plan a complete product-visual job and estimate its cost without creating a paid generation task. Returns a plan_id for explicit execution.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| model | No | seeany-quality | |
| request | Yes | The desired ecommerce product visual in natural language. | |
| use_case | No | scene | |
| output_dir | No | Local directory used after successful generation. | ./seeany-output |
| resolution | No | 1k | |
| aspect_ratio | No | 1:1 | |
| reference_file_paths | No | Optional local product reference images. They are validated now and uploaded only during execution. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only and non-destructive; the description adds that no paid generation task is created and that the result is a plan_id for later execution. This is useful behavioral context beyond the annotations, though it doesn't detail plan validity or side effects.
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 entire description is one efficient sentence with the action and key distinction front-loaded. Every clause carries useful information, with 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?
For an 8-parameter planning endpoint without an output schema, the description gives a minimal but viable picture: plan, estimate cost, get plan_id. It omits how plan_id should be used to execute the job and what plan details/cost breakdowns the agent should expect.
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 38%, and the description adds no parameter-level explanations. Most of the eight parameters (count, model, use_case, resolution, aspect_ratio) must be understood from their names/enums; the description does not compensate for the low coverage.
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 action ('Plan... product-visual job'), clarifies the non-paid nature, and names the return value (plan_id). This distinguishes it from paid execution siblings like seeany_create_product_visual.
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 positions the tool as the estimation/planning step before 'explicit execution,' and the phrase 'without creating a paid generation task' signals when not to use this. It does not explicitly name the sibling to use for execution, but the workflow context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_quote_generationARead-only
Estimate generation cost before creating a task. This is an estimate and does not reserve credits.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | ||
| model | Yes | ||
| use_case | Yes | ||
| resolution | No | 1k |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive, so the description does not need to prove safety. It adds a valuable behavioral caveat: this is only an estimate and does not reserve credits, which prevents an agent from assuming side effects. It does not detail response behavior, but the key non-mutating trait is covered.
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 very short sentences with no filler. The first states the core purpose immediately; the second earns its place by addressing the credit-reservation misconception.
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 that there is no output schema, the description should explain what kind of quote/cost result will be returned, but it does not. It also leaves parameter semantics to inference. Still, the tool is simple and the selection context is present, so this is minimally viable rather than severely incomplete.
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 0%, and the description does not explain the meaning of model, count, use_case, or resolution. The agent must rely entirely on names and enum values. The description also does not connect these parameters to how cost is calculated.
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?
Description clearly identifies the tool as a cost estimator and frames it as a pre-task step, which distinguishes it from siblings like create_product_visual or generate_product_image. The verb 'estimate' and resource 'generation cost' are specific and non-tautological.
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 phrase 'before creating a task' gives an explicit when-to-use signal. It does not name alternative tools or state when not to use it, but the temporal context is clear enough for an agent to route appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_refine_promptB
Use SeeAny AI prompt refinement to turn a rough product-image request into a production-ready prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | ||
| prompt | Yes | ||
| extra_context | No | ||
| reference_asset_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, open-world, non-destructive behavior, and the description does not contradict them. It adds the core behavior of transforming a rough prompt into a refined one, but it does not explain how action, extra_context, or reference_asset_ids influence the result, nor what the returned output looks like.
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 a single front-loaded sentence with no filler. It efficiently communicates the tool's purpose and transformation without wasting words.
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 four parameters, no output schema, and sibling tools for image generation, the description is too thin. It does not explain the parameters, when to prefer this over generation tools, or what the refined prompt output contains, leaving important gaps for an AI agent.
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 0%, so the description must compensate for the four undocumented parameters. It only indirectly clarifies the 'prompt' parameter and leaves 'action', 'extra_context', and 'reference_asset_ids' unexplained, including the meaning of the enum values.
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 clear verb ('refine') and resource ('SeeAny AI prompt refinement'), and explains the transformation from a rough product-image request to a production-ready prompt. It does not explicitly distinguish itself from siblings like seeany_generate_product_image, but the purpose is still clear.
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 clearly implies when to use the tool: when the user has a rough product-image request and needs a refined, production-ready prompt. It does not mention alternatives or exclusions, but the context is sufficient for an agent to select it over image-generation or asset-management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_upload_assetA
Upload a local product image to SeeAny and return an asset id and URL for later generation.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute or workspace-relative local image path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is not read-only, and the description confirms the mutating upload behavior while adding the useful detail that it returns an asset id and URL. It does not disclose potential constraints like supported file types or size limits, but for a simple upload tool this is reasonably transparent.
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?
One sentence, front-loaded with the core action and outcome, with no filler or redundant detail. Every word earns its place.
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 single-parameter upload tool with no output schema, the description adequately covers the action, the input path concept, and the return values (asset id and URL). The relationship to later generation is also mentioned, making the tool self-contained 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 coverage is 100% and the single parameter file_path is already described as 'Absolute or workspace-relative local image path.' The description adds only the word 'local' and 'product image,' which largely restates schema information rather than adding new parameter meaning. 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?
The description states a specific verb ('Upload'), a resource ('local product image'), and a concrete outcome ('return an asset id and URL for later generation'). This clearly differentiates it from sibling tools like seeany_download_assets and seeany_generate_product_image.
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 phrase 'for later generation' gives clear contextual guidance on when to use this tool, positioning it as a prerequisite step before image generation. It does not explicitly name alternatives or exclusion conditions, but the purpose is clear enough for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seeany_wait_generationARead-only
Poll a SeeAny generation task until it reaches a terminal state or the timeout expires.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| timeout_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only and non-destructive. The description adds useful behavioral context by indicating that the tool blocks until a terminal state or timeout. It does not, however, explain what constitutes a terminal state, whether it returns partial status updates, or what happens on timeout beyond the parameter constraints.
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 a single, clear, front-loaded sentence. It wastes no words and conveys the core action, target resource, and termination condition efficiently.
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 simple polling tool, the essentials are present, but there is no output schema and the description does not mention what the response contains or what terminal state values might look like. This is a noticeable gap, though the tool is simple enough that an agent could still invoke it correctly with the given schema and annotations.
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 0%, so the description carries the burden of explaining parameters. It indirectly clarifies timeout_seconds by referencing the timeout expiring, and job_id is implied to identify the generation task. The parameter names are fairly self-explanatory, but the description does not explicitly define job_id's origin or the exact effect of timeout_seconds beyond the schema constraints.
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 clearly states the verb 'Poll', the resource 'SeeAny generation task', and the exit condition 'until it reaches a terminal state or the timeout expires.' This sufficiently conveys the tool's purpose and implicitly distinguishes it from a one-shot status check like seeany_get_generation, though it does not explicitly name the sibling alternative.
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 when to use the tool: when you want to wait for a generation task to finish rather than just fetch its current state. However, it does not explicitly state when not to use it or point to seeany_get_generation for single status checks, leaving the choice partly 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.6.0- First observed
seeany_create_product_visual - First observed
seeany_download_assets - First observed
seeany_generate_product_image - First observed
seeany_get_account - First observed
seeany_get_capabilities - First observed
seeany_get_generation - First observed
seeany_plan_product_visual - First observed
seeany_quote_generation - First observed
seeany_refine_prompt - First observed
seeany_upload_asset - First observed
seeany_wait_generation
TDQS
Scored across 11 tools
Several tools overlap: seeany_plan_product_visual and seeany_quote_generation both estimate costs, while seeany_create_product_visual and seeany_generate_product_image both create generation jobs and handle waiting/downloading. The separate 'visual' and 'image' workflows are not clearly distinguished by descriptions, so an agent could easily pick the wrong one.
All tools share the seeany_ prefix and follow a consistent verb_noun snake_case pattern (get_account, upload_asset, generate_product_image, wait_generation). There are no mixed conventions or unpredictable names.
At 11 tools, the server is within a reasonable scope for an image-generation API client. It could be trimmed by consolidating overlapping quote/plan and create/generate tools, but the count is not excessive.
The core lifecycle is covered: asset upload, prompt refinement, cost estimation, job creation, status polling, waiting, and downloading outputs. Missing cancellation or asset listing are minor gaps, not dead ends.
Maintenance
Related MCP Connectors
MCP server for ByteDance Seedream AI image generation
MCP server for Wan AI video generation
MCP server for Qwen Image 3 AI image generation
MCP server for Product Management
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for multi-provider AI image generation (AWS Bedrock, OpenAI, Google Gemini) enabling image generation, transformation, and editing through a unified interface.41MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for image optimization, conversion, AI generation, and gallery management via SnapiX API.7 npmMIT
- FlicenseAqualityBmaintenanceMCP server for the company image2 text-to-image API, enabling AI tools to generate images directly from text prompts.2-
- AlicenseNot gradedqualityBmaintenanceMCP server for OfflineCreator Studio that enables image and video generation, including model listing, credit management, generation tasks, and output downloads.74 npmMIT