Skip to main content
Maps the scan’s scores to cosmetic concerns and scores the catalog against them. It uses the same matching engine as the Skan app, so a match_score here equals the one the app shows for the same scan and product. Filters are optional. Pass skin_type only if the person stated it; it is never inferred from the scan. match_score is a cosmetic fit estimate from 0 to 100. It is not a diagnosis or a promise of results. No prices, stock or retailer links are returned. Allowance: 1 match per scan. After that the tool succeeds with products: [] and entitlement.upgrade_required: true. Common errors: scan_required, scan_not_ready, scan_not_uploaded, not_found, catalog_unavailable, rate_limited.

Input

Sent as params.arguments of tools/call. Unknown keys are rejected with invalid_input.
string
Required. The completed scan to match against. Without it this returns scan_required.Format uuid.
string
Required. That scan’s private access token.Pattern ^[a-f0-9]{64}$.
enum<string>
Narrow the match to one kind of product.One of cleanser, toner, serum, moisturizer, sunscreen, eye_care, exfoliator, mask, treatment.
enum<string>
Only if the person stated it. Never inferred from the scan.One of dry, oily, combination, normal.
enum<string>[]
Max 3 items. Items: fragrance, alcohol, fungal_acne_triggers.
boolean
boolean
string
Max length 60.
string
Max length 40.

Output

Returned as structuredContent, and as the same object serialised in content[0].text. On failure the result has isError: true and an error body instead.
object[]
required
Max 5 items.
string[]
required
Max 6 items.
string
required
object
required
string
required