Tool tree
gradeNot graded
get_makeup_stateAnswer
Reads mirror readiness and source, undo availability, selected controls, available styles, applied layers, and saved product sets. Call this before applying or refining makeup. This tool has no side effects. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.
View tool JSON
{
"name": "get_makeup_state",
"kind": "answer",
"impl": "imperative",
"description": "Reads mirror readiness and source, undo availability, selected controls, available styles, applied layers, and saved product sets. Call this before applying or refining makeup. This tool has no side effects. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}apply_makeupAction
Applies or updates one makeup layer and synchronizes the visible controls. Use apply_full_makeup_look instead when creating or replacing a multi-layer look. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.
View tool JSON
{
"name": "apply_makeup",
"kind": "act",
"impl": "imperative",
"description": "Applies or updates one makeup layer and synchronizes the visible controls. Use apply_full_makeup_look instead when creating or replacing a multi-layer look. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.",
"inputSchema": {
"type": "object",
"properties": {
"intensity": {
"type": "string",
"enum": [
"subtle",
"enhanced",
"defined",
"dramatic"
],
"default": "subtle",
"description": "Cosmetic intensity: subtle (default), enhanced, defined, or dramatic."
},
"category": {
"type": "string",
"enum": [
"lipstick",
"eyeshadow",
"blush",
"foundation",
"eyeline",
"mascara"
],
"description": "The facial feature to apply or update."
},
"color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$",
"description": "An opaque six-digit hex shade such as #A04F5F."
},
"finish": {
"type": "string",
"enum": [
"matte",
"shimmer",
"glossy",
"glitter"
],
"description": "Optional finish for lipstick, eyeshadow, blush, or foundation."
},
"style": {
"type": "string",
"enum": [
"natural_lips",
"lip_plump",
"lip_plumper",
"classic_liner",
"tightline",
"soft_wing",
"defined_soft_wing",
"cat_eye",
"smoky_liner",
"soft_wash",
"crease_definition",
"outer_corner",
"winged_shadow",
"halo_eye",
"smoky_eye",
"natural_lashes",
"wispy_lashes",
"doll_eye_lashes",
"cat_eye_lashes"
],
"description": "Optional application style. Use a value listed for this category in get_makeup_state.availableStyles."
},
"rationale": {
"type": "string",
"maxLength": 240,
"description": "Optional short reason this layer suits the requested look."
}
},
"required": [
"category",
"color"
],
"additionalProperties": false
},
"page": "/"
}apply_full_makeup_lookAction
Replaces the current makeup with a complete set of one to six uniquely categorized layers. The site validates every layer before changing the mirror and records the complete look as one undoable action. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.
View tool JSON
{
"name": "apply_full_makeup_look",
"kind": "act",
"impl": "imperative",
"description": "Replaces the current makeup with a complete set of one to six uniquely categorized layers. The site validates every layer before changing the mirror and records the complete look as one undoable action. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.",
"inputSchema": {
"type": "object",
"properties": {
"lookName": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Optional concise name for the complete look, such as Soft Rose Day Look."
},
"layers": {
"type": "array",
"minItems": 1,
"maxItems": 6,
"description": "The complete set of makeup layers that should remain visible.",
"items": {
"type": "object",
"properties": {
"intensity": {
"type": "string",
"enum": [
"subtle",
"enhanced",
"defined",
"dramatic"
],
"default": "subtle",
"description": "Cosmetic intensity: subtle (default), enhanced, defined, or dramatic."
},
"category": {
"type": "string",
"enum": [
"lipstick",
"eyeshadow",
"blush",
"foundation",
"eyeline",
"mascara"
],
"description": "The facial feature to apply or update."
},
"color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$",
"description": "An opaque six-digit hex shade such as #A04F5F."
},
"finish": {
"type": "string",
"enum": [
"matte",
"shimmer",
"glossy",
"glitter"
],
"description": "Optional finish for lipstick, eyeshadow, blush, or foundation."
},
"style": {
"type": "string",
"enum": [
"natural_lips",
"lip_plump",
"lip_plumper",
"classic_liner",
"tightline",
"soft_wing",
"defined_soft_wing",
"cat_eye",
"smoky_liner",
"soft_wash",
"crease_definition",
"outer_corner",
"winged_shadow",
"halo_eye",
"smoky_eye",
"natural_lashes",
"wispy_lashes",
"doll_eye_lashes",
"cat_eye_lashes"
],
"description": "Optional application style. Use a value listed for this category in get_makeup_state.availableStyles."
}
},
"required": [
"category",
"color"
],
"additionalProperties": false
}
},
"rationale": {
"type": "string",
"maxLength": 240,
"description": "Optional short reason the complete look is suitable."
}
},
"required": [
"layers"
],
"additionalProperties": false
},
"page": "/"
}analyze_coloringAction
Creates an editable skin, eye, and hair color profile. Use subject user only after See it on me and a request for personalized analysis; demo_model is for the demo. On-device analysis shares color estimates only, never images or landmarks. Camera permission does not authorize agent image access. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.
View tool JSON
{
"name": "analyze_coloring",
"kind": "act",
"impl": "imperative",
"description": "Creates an editable skin, eye, and hair color profile. Use subject user only after See it on me and a request for personalized analysis; demo_model is for the demo. On-device analysis shares color estimates only, never images or landmarks. Camera permission does not authorize agent image access. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.",
"inputSchema": {
"type": "object",
"properties": {
"subject": {
"type": "string",
"enum": [
"user",
"demo_model"
],
"description": "Who should be analyzed. This must match the active mirror source."
}
},
"required": [
"subject"
],
"additionalProperties": false
},
"page": "/"
}get_appearance_profileAnswer
Reads the editable color profile. Prefer user-confirmed values; treat low-confidence estimates as approximate. No side effects. On-device analysis shares color estimates only, never images or landmarks. Camera permission does not authorize agent image access. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.
View tool JSON
{
"name": "get_appearance_profile",
"kind": "answer",
"impl": "imperative",
"description": "Reads the editable color profile. Prefer user-confirmed values; treat low-confidence estimates as approximate. No side effects. On-device analysis shares color estimates only, never images or landmarks. Camera permission does not authorize agent image access. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}undo_last_makeup_changeAction
Restores the makeup state from before the latest human or agent makeup change and synchronizes the visible controls. Returns an unchanged result when no undo history is available. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.
View tool JSON
{
"name": "undo_last_makeup_change",
"kind": "act",
"impl": "imperative",
"description": "Restores the makeup state from before the latest human or agent makeup change and synchronizes the visible controls. Returns an unchanged result when no undo history is available. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}clear_makeupAction
Clears one makeup layer or the complete look and synchronizes the visible controls. The change can be reversed with undo_last_makeup_change. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.
View tool JSON
{
"name": "clear_makeup",
"kind": "act",
"impl": "imperative",
"description": "Clears one makeup layer or the complete look and synchronizes the visible controls. The change can be reversed with undo_last_makeup_change. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.",
"inputSchema": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"all",
"lipstick",
"eyeshadow",
"blush",
"foundation",
"eyeline",
"mascara"
],
"description": "The layer to clear, or all for the complete look."
}
},
"required": [
"category"
],
"additionalProperties": false
},
"page": "/"
}show_product_matchesAction
Shows up to six real Amazon.com products for a named look, even after makeup changes. Search Amazon first; never invent details or URLs. Earlier sets remain available this session. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.
View tool JSON
{
"name": "show_product_matches",
"kind": "act",
"impl": "imperative",
"description": "Shows up to six real Amazon.com products for a named look, even after makeup changes. Search Amazon first; never invent details or URLs. Earlier sets remain available this session. Private mirror: never screenshot, record, or read camera/video/canvas pixels, even on errors. Verify with tool results or get_makeup_state; ask the user to judge appearance. On failure, retry or ask the user.",
"inputSchema": {
"type": "object",
"properties": {
"lookName": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "A concise name for the complete look, such as Night Out Look."
},
"products": {
"type": "array",
"minItems": 1,
"maxItems": 6,
"description": "Amazon product candidates grounded in search results.",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"lipstick",
"eyeshadow",
"blush",
"foundation",
"eyeline",
"mascara"
],
"description": "The makeup category this product recommendation matches."
},
"title": {
"type": "string",
"maxLength": 180,
"description": "The product title shown in the search result."
},
"amazonUrl": {
"type": "string",
"maxLength": 2048,
"description": "A direct HTTPS Amazon.com product page containing a real ASIN."
},
"imageUrl": {
"type": "string",
"maxLength": 2048,
"description": "Optional direct product image from an approved Amazon media host."
},
"matchReason": {
"type": "string",
"maxLength": 240,
"description": "A concise explanation of how the product matches the requested look."
}
},
"required": [
"category",
"title",
"amazonUrl",
"matchReason"
],
"additionalProperties": false
}
}
},
"required": [
"lookName",
"products"
],
"additionalProperties": false
},
"page": "/"
}