Skip to main content
Glama

Analyze a product photo (save as product)

vivid_analyze_product

Analyzes a product photo to extract attributes and create a clean e-commerce render, saving it as a reusable PRODUCT you can feature by name in image generation.

Instructions

Analyze a product photo: vision analysis (name, category, colors, material, finish, style, keywords) + a clean e-commerce render, saved to the account as a PRODUCT you can then feature by name in vivid_generate_image products (see vivid_list_references). Costs 10 credits (refunded if the analysis fails) and counts toward the plan's monthly analysis quota. Takes 30–90 s; waits by default. For jewelry the geometry lock may ask the app to confirm the category; the name comes from the analysis (rename in the app if needed).

Input Schema

NameRequiredDescriptionDefault
waitNo
imageNoProduct photo: absolute local path (preferred — uploaded as multipart) or URL (JPEG/PNG/WebP, max 15 MB; some CDNs such as Pexels refuse server-side downloads → use a local path). URLs from vivid_upload_file work too.
jobIdNoResume waiting on an analysis that returned status "processing" (no new analysis, no quota).
localeNoLanguage of the generated name/description.it
assetIdNoAnalyze a photo already in the VIVID gallery (asset id from vivid_list_assets) instead of `image`.
timeoutSecNo
descriptionNoWhat the product is, to help the analysis (e.g. "silver bracelet with blue pearls").

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.36.0

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing cost (10 credits, refunded on analysis failure), that it consumes the plan's monthly analysis quota, a 30–90 s runtime, and that it waits by default. It also flags an edge case an agent could not infer — the jewelry geometry lock prompting in-app category confirmation and the name being taken from the analysis. These are exactly the operational facts readOnlyHint=false and idempotentHint=false do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single dense paragraph that front-loads the core purpose and outputs before costs, timing, and caveats. Nearly every clause carries information, though the parenthetical field list and the nested cross-references make it feel packed; minor tightening would help readability without losing content.

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?

With no output schema, the description compensates by enumerating the analysis fields and the render, and the schema covers jobId resume and image sourcing. The main residual gap is timeoutSec and what happens on timeout versus failure (the refund condition is stated only for failure), which an agent managing a 240 s default wait would benefit from knowing.

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 71%, so the schema already explains image (local path vs URL, size limits, CDN caveat), jobId resume semantics, locale, and assetId. The description adds meaning mainly for default waiting behavior and the category-confirmation flow, but leaves timeoutSec entirely undocumented in both schema and description. Baseline 3 is appropriate given the schema does most of the work.

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 verb and resource (analyze a product photo) and enumerates the concrete outputs it produces (name, category, colors, material, finish, style, keywords, plus a clean e-commerce render). It further distinguishes the result by explaining it is persisted as a PRODUCT reference usable in vivid_generate_image, which separates it from siblings like vivid_compare_product and vivid_product_sheet.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Gives a clear downstream reason to call it — analyzing so the product can later be featured by name in vivid_generate_image `products`, with vivid_list_references pointed to as the discovery path. It does not explicitly state when to choose vivid_compare_product or vivid_retouch instead, so the sibling differentiation is implied rather than spelled out.

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