Skip to main content
Glama

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 setting SEEANY_API_KEY, calls the main site https://api.seeany.com; supports image upload, AI creation, task polling, download, and AI refinement.

Authentication environment variables

Use uniformly:

SEEANY_API_KEY=sk-sa-xxxxxxxx

Do 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 smoke

The 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-smoke

Connecting Codex

codex mcp add seeany-sun-mcp -- npx --yes seeany-sun-mcp

Install 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@seeany

After 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:

  1. seeany_upload_asset (when there is a reference image)

  2. seeany_refine_prompt (optional)

  3. seeany_generate_product_image

  4. seeany_wait_generation

  5. seeany_download_assets

MCP Inspector

npm run inspect

Current real API mapping

MCP tool

SeeAny API

seeany_upload_asset

POST /api/upload/image

seeany_refine_prompt

POST /api/prompt-tools/ai-refine

seeany_generate_product_image

POST /api/ai/smarttask, aiTypeId=113, aiType=smartImg

seeany_get_generation / seeany_wait_generation

GET /api/developer/task/status

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-mcp

Check the package contents before publishing:

npm run pack:check

Automated 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.0

release.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-oss

  • Repository: seeany-sun-mcp

  • Workflow: release.yml

  • Allowed action: npm publish

Available Tools

11 tools
seeany_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
output_dirNoOptional override for the plan output directory.
confirm_costYesExplicit confirmation of the quoted live-mode cost.
timeout_secondsNo

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
output_dirYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 0%, so the description must carry 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
modelNoseeany-quality
promptYesProduct image description, up to 2000 characters.
use_caseNoscene
resolutionNo1k
aspect_ratioNo1:1
reference_asset_idsNo

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_accountA
Read-only

Show whether this MCP is using the local demo or the authenticated SeeAny API.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_capabilitiesA
Read-only

List SeeAny image generation models, ratios, resolutions, and current execution mode.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_generationA
Read-only

Get the latest status, progress, and output URLs for a SeeAny generation task.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_visualA
Read-only

Plan a complete product-visual job and estimate its cost without creating a paid generation task. Returns a plan_id for explicit execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
modelNoseeany-quality
requestYesThe desired ecommerce product visual in natural language.
use_caseNoscene
output_dirNoLocal directory used after successful generation../seeany-output
resolutionNo1k
aspect_ratioNo1:1
reference_file_pathsNoOptional local product reference images. They are validated now and uploaded only during execution.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_generationA
Read-only

Estimate generation cost before creating a task. This is an estimate and does not reserve credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
countYes
modelYes
use_caseYes
resolutionNo1k

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo
promptYes
extra_contextNo
reference_asset_idsNo

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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

Schema description coverage is 0%, so the description must 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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute or workspace-relative local image path.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_generationA
Read-only

Poll a SeeAny generation task until it reaches a terminal state or the timeout expires.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
timeout_secondsNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 0%, so the description 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 11 tool updatesv0.6.0
    • First observedseeany_create_product_visual
    • First observedseeany_download_assets
    • First observedseeany_generate_product_image
    • First observedseeany_get_account
    • First observedseeany_get_capabilities
    • First observedseeany_get_generation
    • First observedseeany_plan_product_visual
    • First observedseeany_quote_generation
    • First observedseeany_refine_prompt
    • First observedseeany_upload_asset
    • First observedseeany_wait_generation

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation2/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers