gradeNot graded
search_catalogAnswer
Search the virtual try-on catalog (dresses, kurtis, lehengas) by free-text query, occasion, colour, category, and/or maximum price in ₹. Returns matching garments with their id, name, price and occasions. Pass a returned id to `apply_tryon` to see it on the user.
View tool JSON
{
"name": "search_catalog",
"kind": "answer",
"impl": "imperative",
"description": "Search the virtual try-on catalog (dresses, kurtis, lehengas) by free-text query, occasion, colour, category, and/or maximum price in ₹. Returns matching garments with their id, name, price and occasions. Pass a returned id to `apply_tryon` to see it on the user.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text, e.g. \"flowy floral dress\" or \"red lehenga for a wedding\"."
},
"occasion": {
"type": "string",
"description": "Occasion to dress for, e.g. \"sangeet\", \"wedding\", \"reception\", \"brunch\", \"office\"."
},
"color": {
"type": "string",
"description": "Preferred colour, e.g. \"navy\", \"magenta\", \"pink\"."
},
"category": {
"type": "string",
"enum": [
"dress",
"kurti",
"lehenga-choli"
],
"description": "Restrict to one garment type."
},
"maxPrice": {
"type": "number",
"description": "Budget ceiling in Indian rupees (₹)."
}
}
},
"page": "/tobesttwitter-TryOn/"
}apply_tryonAction
Composite a catalog garment onto the loaded photo with the on-device try-on pipeline (segmentation + pose + warp, all in-browser). Pass a garmentId from `search_catalog`. If no photo is loaded, a default model photo is loaded first. After applying, ask the user how it looks before moving on — only they can judge fit and vibe.
View tool JSON
{
"name": "apply_tryon",
"kind": "act",
"impl": "imperative",
"description": "Composite a catalog garment onto the loaded photo with the on-device try-on pipeline (segmentation + pose + warp, all in-browser). Pass a garmentId from `search_catalog`. If no photo is loaded, a default model photo is loaded first. After applying, ask the user how it looks before moving on — only they can judge fit and vibe.",
"inputSchema": {
"type": "object",
"properties": {
"garmentId": {
"type": "string",
"description": "The `id` of a garment from `search_catalog` (e.g. \"dress-magenta-wrap-01\")."
}
},
"required": [
"garmentId"
]
},
"page": "/tobesttwitter-TryOn/"
}save_lookAction
Snapshot the current try-on — the composited photo plus which garments are on — into the saved-looks tray so it can be compared later. Optionally pass a short `label`. Call this after the user reacts positively to a try-on. Returns the new look id.
View tool JSON
{
"name": "save_look",
"kind": "act",
"impl": "imperative",
"description": "Snapshot the current try-on — the composited photo plus which garments are on — into the saved-looks tray so it can be compared later. Optionally pass a short `label`. Call this after the user reacts positively to a try-on. Returns the new look id.",
"inputSchema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Short human label for this look, e.g. \"the magenta wrap dress\". Optional."
}
}
},
"page": "/tobesttwitter-TryOn/"
}compare_looksAction
Show saved looks side by side in the app so the user can pick between them. Pass an array of look ids from `save_look`. Returns the looks being compared; then ask the user which they prefer.
View tool JSON
{
"name": "compare_looks",
"kind": "act",
"impl": "imperative",
"description": "Show saved looks side by side in the app so the user can pick between them. Pass an array of look ids from `save_look`. Returns the looks being compared; then ask the user which they prefer.",
"inputSchema": {
"type": "object",
"properties": {
"lookIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Saved look ids from `save_look`, e.g. [\"look-1\", \"look-2\"]. Two or three works best."
}
},
"required": [
"lookIds"
]
},
"page": "/tobesttwitter-TryOn/"
}await_reactionAction
Record or wait for the user's reaction to the current try-on — call it right after apply_tryon. Two ways: (a) if the user already told you how they feel in chat, pass `reaction` (love / like / try_another / reject) and optionally `note` — it logs to the app's reaction bar and returns guidance immediately; (b) omit `reaction` to block until the user taps a reaction chip in the app (or it times out). Returns { reaction, note, guidance }.
View tool JSON
{
"name": "await_reaction",
"kind": "act",
"impl": "imperative",
"description": "Record or wait for the user's reaction to the current try-on — call it right after apply_tryon. Two ways: (a) if the user already told you how they feel in chat, pass `reaction` (love / like / try_another / reject) and optionally `note` — it logs to the app's reaction bar and returns guidance immediately; (b) omit `reaction` to block until the user taps a reaction chip in the app (or it times out). Returns { reaction, note, guidance }.",
"inputSchema": {
"type": "object",
"properties": {
"reaction": {
"type": "string",
"enum": [
"love",
"like",
"try_another",
"reject"
],
"description": "If the user ALREADY told you how they feel (in chat), pass it here — this logs it to the app and returns next-step guidance immediately, no waiting."
},
"note": {
"type": "string",
"description": "What the user wants changed, in their words (e.g. \"too long\", \"more colour\"). Optional."
},
"timeoutSeconds": {
"type": "number",
"description": "Only used when `reaction` is omitted: how long to wait for the user to tap a reaction chip in the app before giving up (default 120, max 600)."
}
}
},
"page": "/tobesttwitter-TryOn/"
}