Skip to main content
Glama

YouCam for Beauty & Personal Care

Ai Skin Analysis With Product Recommendation

AI-Skin-Analysis-with-Product-Recommendation
Read-only

What it is. Your product catalog, matched against a precise skin analysis. Upload the skincare products you sell with their descriptions, pass the catalog's id, and the endpoint returns the best-matching products for each detected concern in llm_results.json. The difference from a general LLM recommendation is the input. A general LLM recommends from probability and priors. Perfect AI Skin Analysis first produces scientific, quantified skin metrics and real detection masks, so the model matches products against measured skin conditions — reliable, fast, and explainable, not a statistical guess. Parameters | Field | Type | Required | Default | Notes | |||||| | catalog_id | string | Yes | — | From Upload a product catalog. Must be ready and belong to your account. | | top_n | integer | No | 3 | Products recommended per concern. Min 1; must not exceed the catalog's sku_count. |

  • Prerequisite — Upload Your Product Catalog A product catalog is the list of products Skin Analysis recommends from. Upload it once, keep its catalog_id, and pass that id on every analysis call. Catalogs belong to your account, not to one API key — every key of the account, project keys included, sees the same catalogs, and rotating or deleting a key does not affect them. Uploading and storing catalogs is free. Catalog file requirements | Item | Value | ||| | Format | CSV with a header row | | Encoding | UTF-8, with or without BOM (Excel's "CSV UTF-8" adds one) | | Maximum file size | 5 MB | | Maximum SKU count | No limit other than file size | | Required columns | product_id, product_name, product_description | Extra columns are ignored but still count toward the 5 MB limit. Quote values containing commas or line breaks. Each non-empty data row counts as one SKU.

product_id,product_name,product_description
SKU-001,Hydrating Serum,"A lightweight serum for dry skin."
SKU-002,Brightening Cream,"Evens out skin tone, for daily use."
SKU-003,Barrier Repair Cream,"Rich cream for dry, redness-prone skin."
# Upload a catalog — validated in the same request
curl -sS -X POST "$BASE_URL/s2s/v2.1/product-catalog" \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@catalog.csv" \
  -F "name=Summer skincare"

A valid file answers status: ready with its catalog_id and sku_count — keep that id:

{
  "status": 200,
  "data": {
    "catalog_id": "1662043585118399001",
    "name": "Summer skincare",
    "status": "ready",
    "created_time": 1760256000000,
    "sku_count": 3
  }
}
# List every catalog of your account, newest first (ready and failed alike)
curl -sS -H "Authorization: Bearer $API_KEY" "$BASE_URL/s2s/v2.1/product-catalog"
# Delete a catalog — immediate and permanent
curl -sS -X DELETE -H "Authorization: Bearer $API_KEY" \
  "$BASE_URL/s2s/v2.1/product-catalog/1662043585118399001"

Catalog states and limits | Status | Meaning | Usable in Skin Analysis | |||| | ready | Uploaded and validated | Yes | | failed | Uploaded, file failed validation | No | An upload that fails validation answers an error and is still recorded as a failed catalog, visible in List catalogs; the error body never carries its catalog_id. Each account keeps up to 10 catalogs, ready and failed together — delete one before uploading another. To update a catalog, upload a new file: every upload creates a new catalog_id, and the old catalog stays usable until you delete it, so you can verify the new one before switching.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "request": "<request>"
    },
    "name": "AI-Skin-Analysis-with-Product-Recommendation"
  }
}

Input Schema

NameRequiredDescriptionDefault
pollingNoIf true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.
requestYesThis object represents a run Skin Analysis task.

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare it read-only, non-destructive and open-world, so safety is covered. The description adds genuine operational context — catalog must be `ready` and belong to the account, a 10-catalog cap, failed uploads are still recorded, deletion is permanent — but most of that describes neighboring catalog endpoints, not this call. It never mentions that the operation is asynchronous/long-running (the reason `polling` exists) or that the response shape changes with `format`, which is the most consequential behavior an agent should know.

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

Conciseness2/5

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

The bulk of the text is a catalog-management runbook — CSV requirements, encoding, 5 MB limit, curl upload/list/delete examples, sample JSON responses — none of which is invoked by this tool. The actual analysis mechanics are compressed into two sentences at the top, so the useful content is buried rather than front-loaded, and an agent must wade through off-topic material to find it.

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?

There is an output schema and a fully documented input schema, so return values and parameter mechanics need not be explained. What is missing is tool-specific completeness: no statement that results depend on the chosen `dst_actions`, no mention of the HD/SD mixing constraint at the description level, and no clarification of the async polling contract. The prerequisite coverage is thorough but displaced from this tool.

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 100%, so the schema already explains `catalog_id`, `top_n`, `format`, `dst_actions`, `polling` and the visualization args. The description's parameter table restates the schema's own text for `catalog_id` and `top_n` (including the `sku_count` ceiling) without adding syntax, failure modes, or format choices. Baseline 3 is appropriate since the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does say the endpoint matches a product catalog against detected skin concerns and returns results in `llm_results.json`, but it frames the tool almost entirely as a product-recommendation feature and never states that this call actually runs a skin-analysis task driven by `dst_actions` and an image source. It also offers no differentiation from the close sibling `AI-Skin-Analysis-with-Advanced-Report-and-Product-Recommendation`, leaving the agent to guess which to call.

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?

It gives a clear prerequisite chain (upload a catalog, keep `catalog_id`, pass it on every analysis call) and states which catalog states are usable, which is real when-to-use context. However, there is no guidance on when to pick this over the near-identical sibling tools, no guidance on when to set `polling` false, and no guidance on choosing `zip` vs `json` output.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources