Modebase Wardrobe
Plan what to wear
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
Modebase connects your real wardrobe to ChatGPT so you can find pieces, preview outfits, plan what to wear, and build capsules from clothes you own. Add garments through a phone capture link or supplied photo, save outfits and style preferences, log wears, and review wardrobe usage. Create private edits or explicitly requested shareable lookbooks, and retrieve garment images for presentations.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account required
- First tracked
- 2026-09-23
- Tool count
- 25
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for Modebase Wardrobe
Get updates when Modebase Wardrobe’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competitive lineup
25 tools agents can invoke
Add ONE garment from a photo in this chat. Runs the same editorial photo pipeline as the in-app capture session: it isolates the single named garment into a clean cut-out (ghost-mannequin render), removing any person, hanger, or background, so the closet shows just the piece and NEVER the raw photo. Because it isolates by name, the photo may be a plain shot of the garment OR a selfie/worn shot: pass the whole photo plus a specific name (e.g. "cream ribbed knit") and it extracts that one piece. For a photo with SEVERAL pieces (a selfie or full outfit), do NOT call this once for the whole image — that makes a single item. Instead review the pieces with the user first (see detect_outfit_pieces), then call this ONCE PER confirmed new piece with that piece's name. The item is flagged as chat-added. REVIEW IN THE APP, NOT IN CHAT: after adding, do NOT list or confirm the piece in the chat — when the result includes a catalogueUrl, give it to the user as a clickable link and tell them their new piece is in their catalogue (it renders there in a moment), where they can rename or remove it, then come back to the chat. Use the name they gave if they gave one; you don't need to confirm the name in chat first, they can check it in the catalogue. (If the result has no catalogueUrl, just tell them the piece was added.) If the user is out of free catalogue space the piece is still SAVED but comes back with `awaitingRender:true` and a `message`: relay that message (it explains the piece is kept as a preview and gets added once they make room in their catalogue). Do NOT offer, mention, or link to any purchase, price, or upgrade in the chat. If the image is too large to pass through and the handoff fails, do NOT retry the same full-size image — offer a start_wardrobe_capture link so they can upload the photo from their phone instead (it handles any size server-side). Always use the photo the user is referring to RIGHT NOW (the one they just shared or most recently uploaded), never an older image from earlier in the conversation; if it's unclear which photo or which piece they mean, ask before adding rather than guessing.
add_wardrobe_item
Append pieces (or a saved outfit's pieces) to an existing edit/lookbook, matching it by name or id. If the name does not clearly match one, the result lists the user's edits — ask which one rather than guessing. Pass item_ids OR outfit_id. Reversible and safe: this only creates a record or changes a status — it never deletes anything. There is NO delete tool and never will be; deleting happens only in Modebase. If the user asks to delete or get rid of a piece, do NOT force it through this — offer resale or the waiting room and tell them deleting happens in the app. Act ONLY on the user's clear, explicit request; never modify pieces on your own initiative, and when a reference is ambiguous (e.g. "the black top" with two black tops) present the candidates and ask — do not guess. Relay the summary and undo note from the result so the user knows exactly what changed and how to reverse it in-app.
add_to_lookbook
Run a stylist's audit of the WHOLE catalogue and get back findings a stylist would actually voice, each with a plain-English summary AND the numbers behind it: redundancy ("you already own 14 in a similar style, pause before buying more gold earrings"), category and colour balance, gaps for dressy occasions, orphan pieces that aren't styled or paired with anything, and (only for users who track wears) never-worn pieces. Call this when the user asks to audit / review their wardrobe, what to buy or STOP buying next, what's missing or over-represented, what to declutter or resell, or 'do I have too much X'. ALWAYS relay the returned scopeNote: this audit is CATALOGUE-ONLY — it reads the pieces, colours, categories, formality and how they pair, and CANNOT judge condition, quality, wear-and-tear or how a piece fits on the body, so present it as the shape of the wardrobe, not a physical review, and never claim to assess a garment's state. Each finding carries a `tone` (watch = worth acting on, note = neutral, good = healthy); lead with the watch items. This returns findings and numbers, not pictures — to SHOW pieces, follow up with search_wardrobe.
get_wardrobe_audit
Check whether pieces from a capture link have finished processing. Returns per-item status (processing, rendered, failed, or awaiting_render for pieces still queued to render) and names once extracted, with the real photo for rendered pieces. Call this after giving a capture link, on the user's next message, and report honestly — including any failures ('one didn't come through') rather than omitting them. Omit batchId for the most recent capture. Side effects (why this is not marked read-only): it may idempotently resume a stalled batch server-side (self-healing of the user's OWN upload), and any link it returns can be a single-use, short-lived owner login link so a tapped link opens the user's app already signed in — never expose that link publicly. Outfit visuals: call show_outfit for one look or show_outfits once for 2+ options. These tools compose the user's REAL garment photos into a flat-lay, shown inline as a card/carousel, AND return a Modebase link — always surface that link too. Do NOT use an image generator to invent or substitute wardrobe pieces, and never claim an image is shown unless the tool returned one. Build each outfit by filling these slots FROM THE USER'S WARDROBE ONLY: a top + a bottom (OR one dress/jumpsuit instead of both), shoes, optionally a bag, up to two accessories, and optionally a jacket or layer. Every slot must be a real, owned piece these tools returned, referenced by its id and name. NEVER invent, assume, or add a piece that isn't in the results — no imagined shoes, bag, coat, belt, or jewellery, and nothing from your general fashion knowledge. If the wardrobe has nothing for a slot (e.g. no bag, no dressy shoes), leave that slot out and say plainly it's missing — do NOT fill it with a piece they don't own. Only real, owned pieces, every time. Match the occasion's dressiness using each piece's formality (Casual / Smart casual / Cocktail / Formal): for a formal, cocktail or wedding event use only Cocktail/Formal pieces — never a Casual or Smart-casual piece (a printed short-sleeve shirt, a tee, sneakers), even to "dress it down"; if there aren't enough dressy pieces, say so rather than padding with casual ones. When you offer several looks at once, VARY the hero pieces — do NOT reuse the same top or statement piece across multiple options; give a genuine range, and don't repeat a piece across outfits in one session. Spread across the WHOLE wardrobe and lean on REDISCOVERY: the wear signal marks pieces "NEVER WORN" or "rarely worn" — actively favour those so the user gets wear out of everything they own, not just their handful of go-tos. And honour each piece's "⚠ user note": never make a piece the user dislikes or is unsure about a default or repeated pick. Keep patterns under control: use at most ONE patterned/printed piece per outfit and pair it with solids or neutrals. NEVER combine two pieces of the same pattern family (gingham with gingham, floral with floral, stripe with stripe, check with check) or two competing busy prints — that clashes — unless the user explicitly asks to mix prints AND the scales and colours clearly harmonise. Each piece's pattern is given in its details; treat anything not "solid/plain" as a print for this rule.
get_capture_status
Package a set of the user's outfits or pieces into a saved artefact, and return its link. Pick the `format`: `shareable_page` makes ONE public, shareable Looks page (a scrolling mini-editorial, titled and branded) the user can send or open elsewhere — use ONLY when they explicitly ask for a shareable LINK; pass `looks` (up to 6), each with a name, item_ids, and an optional one-line note. `workspace` opens a set of looks (or a bare list of pieces) INSIDE the app behind their login as an interactive workspace they can tweak and save — use `mode` capsule for ANY "build a capsule", "capsule wardrobe", "pack me for N days" or trip request: it opens the flat, PDF-STYLE VISUAL CAPSULE page (every real piece shown, then the outfits made from them) — NOT the carousel/editor — and this IS the capsule/PDF view a user means by "capsule" or "pack me" that the user can save and share, so pass a `looks` array (one per day/occasion, each with a name + item ids) AND it derives the pieces from them; use `options` for a SET of outfit OPTIONS the user is choosing between — this is the DEFAULT for "make me N outfits" / "give me some options": it returns ONE /capsule?set= link that opens all the looks on a single page (so you never paste a per-look link each), or items for which-pieces-do-I-not-wear (a plain grid, no styling); pass `looks` for capsule/options or `itemIds` for items (up to 30). `saved_edit` creates a named private edit (a plain grouping) from chosen pieces — use for "start an edit", "group these together", "save these as a set" (NOT a capsule — use workspace capsule for that); pass `name` and `itemIds`. IMPORTANT: for a SINGLE outfit, or a day-by-day trip plan where each day is its own image, call show_outfit per look (one flat-lay each). But for a SET of OPTIONS the user chooses between ("make me 5 outfits"), use THIS tool with mode 'options' so they get ONE link to all of them, never a link per outfit. Also use this tool when the user explicitly asks for a shareable link, an interactive workspace, or a named saved edit/capsule. CRITICAL — RETURNED LINK: this tool returns a `url` (surfaced as `user_facing_url` in the result). You MUST present that EXACT url to the user, verbatim. NEVER replace, reconstruct, shorten, guess, or substitute it with modebase.co, /collection, the catalogue, or any other Modebase URL — the returned url is the ONLY canonical link for the artefact just created. For a `workspace` capsule the user-facing link MUST be the exact /capsule?set=... url returned here; if the link you are about to send does not contain "/capsule?set=", do NOT send it, re-read the tool result and use the url it returned. If no url is returned, tell the user a link was not returned rather than inventing one. Reversible and safe: this only creates a record or changes a status — it never deletes anything. There is NO delete tool and never will be; deleting happens only in Modebase. If the user asks to delete or get rid of a piece, do NOT force it through this — offer resale or the waiting room and tell them deleting happens in the app. Act ONLY on the user's clear, explicit request; never modify pieces on your own initiative, and when a reference is ambiguous (e.g. "the black top" with two black tops) present the candidates and ask — do not guess. Relay the summary and undo note from the result so the user knows exactly what changed and how to reverse it in-app.
create_lookbook
WHEN TO REACH FOR THIS — a wearable photo is in the chat: the user shared a photo of an outfit or a garment and wants your take (a fit-check, a selfie, 'does this look ok?', 'rate this', 'what do you think', 'is this too much'). FIRST give your honest styling verdict on what they're wearing, THEN offer in one warm line to save the pieces to their catalogue ('Want me to add this blouse, jeans and boots to your Modebase wardrobe?'). If they say yes, call this to catalogue them (or start_wardrobe_capture to let them upload from their phone if the chat photo is too large to hand off). Skip the offer only if the pieces are clearly already in their wardrobe or they've declined earlier in the chat. Send a photo of an outfit or selfie to DETECT each garment for review. By DEFAULT (confirm omitted or false) this does not alter the wardrobe: it returns `review:true` with `owned` (pieces already in the wardrobe, which committing would log as worn today) and `newPieces` (pieces not owned, which committing would add as clean cut-outs). LIGHT-TOUCH by default: when the user's intent is to catalogue their clothes (they shared a photo of what they're wearing, said 'add this', dumped photos to build their wardrobe, or similar), pass confirm:true — it adds every NEW detected piece as a clean cut-out and logs the OWNED ones as worn today in one shot. REVIEW IN THE APP, NOT IN CHAT: do NOT list the added pieces for confirmation in the chat — when the result includes a catalogueUrl, give it to the user as a clickable link and tell them their new pieces are in their catalogue (they render there in a moment), where they can rename or remove any, then come back to the chat. Adds are reversible (nothing is ever deleted here), so you do NOT need a heavy approval step in chat. REVIEW first instead (call with confirm omitted/false — this does not alter the wardrobe and returns `review:true` with `owned` and `newPieces`) ONLY when it is genuinely unclear which pieces they want (a busy photo, other people, or items they may not own) or when they ask to review before saving; then add the confirmed NEW pieces with add_wardrobe_item and log the OWNED ones with log_wear, skipping any they removed. IMPORTANT — if the image handoff fails (a large photo can exceed the tool-call size limit and not transfer), do NOT keep retrying the same full-size image: give the user a start_wardrobe_capture link instead so they can upload the photo from their phone, which handles any size server-side. Detect from the photo the user is referring to RIGHT NOW (the one they just shared or most recently uploaded), never an older image from earlier in the conversation.
detect_outfit_pieces
Get FULL-RESOLUTION cut-out images of the user's pieces to drop into a presentation, deck, lookbook or design tool (Canva, Keynote, slides). Returns a downloadable link per piece (links expire in an hour). Use this when a stylist or user wants presentation-ready or high-res assets of specific pieces — NOT for everyday styling (show_outfit is the in-chat flat-lay). Pass the item ids to export; a stylist can pass a client's workspaceId to export that client's pieces (studio access is checked). If this feature isn't enabled on the user's account, it returns a notice instead of links — relay it warmly and do NOT offer, mention, or link to any purchase, price, or upgrade in the chat. Some pieces may come back not-yet-available at full resolution (added before hi-res was stored, or still rendering); tell the user which, and that re-rendering or re-adding generates one.
export_presentation
Return the user's PLANNED outfit for a specific calendar date as text plus a Modebase link to its exact flat-lay. This tool shows the look inline as a composited flat-lay of the user's real garments AND returns a Modebase link — always surface the link too. Use whenever the user asks what they have planned, or what they're wearing, on a date ("what's planned for the 26th?", "what am I wearing Friday?"). The date is YYYY-MM-DD; resolve relative dates (today/tomorrow/Friday) to that format first. If nothing is planned that day, say so plainly and do NOT invent a look.
get_planned_outfit
Get the full record for ONE item, including the emotional layer, care needs, and photos. To find items by filter or fetch several by id, use search_wardrobe.
get_wardrobe_item
The user's Style Profile, consolidated: their Style Guide (their OWN words on their current style, where they want it to go, who inspires them, favourite brands, and moodboard notes), their stated wardrobe preferences, a summary of derived signals (most-worn pieces and colours, favourites, never-worn count), their last 10 saved outfits, PLUS their active goals and style direction (with alignment progress) and the style DNA extracted from their saved inspirations/moodboards. ALWAYS call this ONCE at the start of any styling conversation and let the Style Guide lead your answer, so you dress them as themselves and can resolve references like "something like last Friday's outfit". Contains no conversation history — only structured facts. NOTE on the two wear signals: a piece's WORN count is LOGGED wears (times actually worn), while 'used/styled in outfits' (mostUsedInOutfits) is how many SAVED outfits it appears in — different things. A piece can be styled into several saved looks yet still be NEVER WORN (never logged), so do NOT treat that as a contradiction or point it out as one. CORRECTIONS WIN: where a stated preference typed 'avoid' contradicts something in the Style Guide (e.g. the guide still lists an inspiration or direction the user has since said to drop), the AVOID preference is the newer correction and OVERRIDES the guide — honour the avoid and do not resurface what it rules out. NOT A SUBSTITUTE FOR TODAY'S BRIEF: this profile is background taste only. Reading it does NOT authorise you to skip the clarification gate — NEVER infer the occasion, destination, weather, trip length, activities or preferred packing format from it. When the day's context is missing, you must still ask the user and STOP before searching or styling, even though you have this profile.
get_style_profile
Get how MANY items the user owns plus a breakdown by category and colour, with category labels normalised into clean families (e.g. Top/Shirt/Jumper are counted together as Tops). Returns ONLY: totalActiveItems, needsPhotoItems, totalItems, categories, colours. Use it to answer "how many items do I have / what are my main categories" directly and concisely; report the totals and the main normalised categories, and do NOT bring in styling preferences, avoided pieces, saved outfits or individual garments unless the user asks. To SHOW or PREVIEW the actual pieces, call search_wardrobe (with no filters) instead.
get_wardrobe_overview
Get recent logged outfits, feelings, and how often items get worn.
get_wear_history
Log that the user wore these items, on a given date. ALWAYS capture the context the conversation already gives you — do NOT log a bare date + items when more was said. Pass `occasion` when they mention where/what it was for (a wedding, the office, a dinner, a casual day), `feeling` when they say how it felt or how they felt in it (comfortable, overdressed, great), and `weather_note` when the weather/climate is evident (hot, rainy, cold, humid). These fields power cost-per-wear and smarter future suggestions, so filling them when present is part of the job; leave a field out only when the conversation genuinely didn't reveal it (never invent).
log_wear
SEE the pieces before you choose between them. Pass 2-8 item ids you are weighing for the SAME slot in a look (six candidate trousers, three possible jackets) and this returns a numbered picture of their actual cut-outs, laid out side by side, so you can judge them on how they LOOK — cut, proportion, drape, the real shade — not only on their written attributes. WHEN TO USE IT: after search_wardrobe has narrowed the wardrobe to a shortlist and the choice between the finalists is a visual one. Narrow with search_wardrobe FIRST; this is the last step before deciding, never a way to browse. Each piece is numbered in the picture and the result maps every number to its item id, so say which number you chose and why it beat the others. Pieces need a clean cut-out to appear: any that could not be shown come back in `notShown`, and you must judge those on their written detail instead and say so rather than ignoring them.
compare_pieces
PREREQUISITE: only call this once prepare_styling_brief has returned ready:true for this request. If material occasion, destination, duration, activity, weather or dress-code information is missing, ask the user those questions FIRST (via prepare_styling_brief) and do NOT call this tool until it returns ready:true. Compose a SINGLE outfit from the user's real garments and return text plus a Modebase link that opens the exact flat-lay. This tool shows the look inline as a composited flat-lay of the user's real garments AND returns a Modebase link — always surface the link too. Use this whenever you suggest ONE thing to wear, and in a day-by-day plan call it once per day. To COMPARE 2 OR MORE outfit OPTIONS, use show_outfits instead (do NOT call show_outfit repeatedly for a comparison). Pass the item ids you have chosen; it validates them against the user's active wardrobe (rejecting invented/non-owned/inactive ones, reported as invalidIds). Do NOT package the look into a workspace (create_lookbook) for an ordinary 'show me an outfit' request, and never draw the outfit with your own image generator. This is a PREVIEW: it opens the outfit, it does NOT save it (use save_outfit for that). Get ids from search_wardrobe or get_style_profile first. Build each outfit by filling these slots FROM THE USER'S WARDROBE ONLY: a top + a bottom (OR one dress/jumpsuit instead of both), shoes, optionally a bag, up to two accessories, and optionally a jacket or layer. Every slot must be a real, owned piece these tools returned, referenced by its id and name. NEVER invent, assume, or add a piece that isn't in the results — no imagined shoes, bag, coat, belt, or jewellery, and nothing from your general fashion knowledge. If the wardrobe has nothing for a slot (e.g. no bag, no dressy shoes), leave that slot out and say plainly it's missing — do NOT fill it with a piece they don't own. Only real, owned pieces, every time. Match the occasion's dressiness using each piece's formality (Casual / Smart casual / Cocktail / Formal): for a formal, cocktail or wedding event use only Cocktail/Formal pieces — never a Casual or Smart-casual piece (a printed short-sleeve shirt, a tee, sneakers), even to "dress it down"; if there aren't enough dressy pieces, say so rather than padding with casual ones. When you offer several looks at once, VARY the hero pieces — do NOT reuse the same top or statement piece across multiple options; give a genuine range, and don't repeat a piece across outfits in one session. Spread across the WHOLE wardrobe and lean on REDISCOVERY: the wear signal marks pieces "NEVER WORN" or "rarely worn" — actively favour those so the user gets wear out of everything they own, not just their handful of go-tos. And honour each piece's "⚠ user note": never make a piece the user dislikes or is unsure about a default or repeated pick. Keep patterns under control: use at most ONE patterned/printed piece per outfit and pair it with solids or neutrals. NEVER combine two pieces of the same pattern family (gingham with gingham, floral with floral, stripe with stripe, check with check) or two competing busy prints — that clashes — unless the user explicitly asks to mix prints AND the scales and colours clearly harmonise. Each piece's pattern is given in its details; treat anything not "solid/plain" as a print for this rule.
show_outfit
PREREQUISITE: only call this once prepare_styling_brief has returned ready:true for this request. If material occasion, destination, duration, activity, weather or dress-code information is missing, ask the user those questions FIRST (via prepare_styling_brief) and do NOT call this tool until it returns ready:true. Compose 2 OR MORE outfit OPTIONS into the user's Modebase workspace and return text plus ONE link that opens EVERY option as its own flat-lay, where tapping one loads it into the builder to tweak and save. This tool shows the look inline as a composited flat-lay of the user's real garments AND returns a Modebase link — always surface the link too. Use this WHENEVER the user asks for several options/choices to COMPARE ("give me 3 outfits", "3 work options", "4 options for the wedding", "show me some looks"). You MUST surface the returned Modebase link; never present the options as a plain text list with no link. Pass `looks`: an array where each entry has that look's chosen item ids and a short name. For a SINGLE outfit, or a day-by-day sequence you show one per day, use show_outfit instead. Build each outfit by filling these slots FROM THE USER'S WARDROBE ONLY: a top + a bottom (OR one dress/jumpsuit instead of both), shoes, optionally a bag, up to two accessories, and optionally a jacket or layer. Every slot must be a real, owned piece these tools returned, referenced by its id and name. NEVER invent, assume, or add a piece that isn't in the results — no imagined shoes, bag, coat, belt, or jewellery, and nothing from your general fashion knowledge. If the wardrobe has nothing for a slot (e.g. no bag, no dressy shoes), leave that slot out and say plainly it's missing — do NOT fill it with a piece they don't own. Only real, owned pieces, every time. Match the occasion's dressiness using each piece's formality (Casual / Smart casual / Cocktail / Formal): for a formal, cocktail or wedding event use only Cocktail/Formal pieces — never a Casual or Smart-casual piece (a printed short-sleeve shirt, a tee, sneakers), even to "dress it down"; if there aren't enough dressy pieces, say so rather than padding with casual ones. When you offer several looks at once, VARY the hero pieces — do NOT reuse the same top or statement piece across multiple options; give a genuine range, and don't repeat a piece across outfits in one session. Spread across the WHOLE wardrobe and lean on REDISCOVERY: the wear signal marks pieces "NEVER WORN" or "rarely worn" — actively favour those so the user gets wear out of everything they own, not just their handful of go-tos. And honour each piece's "⚠ user note": never make a piece the user dislikes or is unsure about a default or repeated pick. Keep patterns under control: use at most ONE patterned/printed piece per outfit and pair it with solids or neutrals. NEVER combine two pieces of the same pattern family (gingham with gingham, floral with floral, stripe with stripe, check with check) or two competing busy prints — that clashes — unless the user explicitly asks to mix prints AND the scales and colours clearly harmonise. Each piece's pattern is given in its details; treat anything not "solid/plain" as a print for this rule.
show_outfits
Save a specific look onto the user's Modebase CALENDAR for a date, so it's planned for that day. Use when the user wants to plan / schedule / "save this for" a date ("plan this for Friday", "save it for the wedding on the 14th"). Pass the chosen item ids and the date as YYYY-MM-DD — resolve relative dates (today / tomorrow / Friday / "next Saturday") to that format first. It saves the outfit and pins it to that day (validating the pieces are the user's own). This is DISTINCT from save_outfit (saves a look with no date) and create_lookbook (a named edit/capsule). Build each outfit by filling these slots FROM THE USER'S WARDROBE ONLY: a top + a bottom (OR one dress/jumpsuit instead of both), shoes, optionally a bag, up to two accessories, and optionally a jacket or layer. Every slot must be a real, owned piece these tools returned, referenced by its id and name. NEVER invent, assume, or add a piece that isn't in the results — no imagined shoes, bag, coat, belt, or jewellery, and nothing from your general fashion knowledge. If the wardrobe has nothing for a slot (e.g. no bag, no dressy shoes), leave that slot out and say plainly it's missing — do NOT fill it with a piece they don't own. Only real, owned pieces, every time. Match the occasion's dressiness using each piece's formality (Casual / Smart casual / Cocktail / Formal): for a formal, cocktail or wedding event use only Cocktail/Formal pieces — never a Casual or Smart-casual piece (a printed short-sleeve shirt, a tee, sneakers), even to "dress it down"; if there aren't enough dressy pieces, say so rather than padding with casual ones. When you offer several looks at once, VARY the hero pieces — do NOT reuse the same top or statement piece across multiple options; give a genuine range, and don't repeat a piece across outfits in one session. Spread across the WHOLE wardrobe and lean on REDISCOVERY: the wear signal marks pieces "NEVER WORN" or "rarely worn" — actively favour those so the user gets wear out of everything they own, not just their handful of go-tos. And honour each piece's "⚠ user note": never make a piece the user dislikes or is unsure about a default or repeated pick. Keep patterns under control: use at most ONE patterned/printed piece per outfit and pair it with solids or neutrals. NEVER combine two pieces of the same pattern family (gingham with gingham, floral with floral, stripe with stripe, check with check) or two competing busy prints — that clashes — unless the user explicitly asks to mix prints AND the scales and colours clearly harmonise. Each piece's pattern is given in its details; treat anything not "solid/plain" as a print for this rule.
plan_outfit
CALL THIS FIRST for any styling / "what should I wear" / "style me" / packing / trip / event request — BEFORE search_wardrobe or any outfit tool. It runs the brief like a stylist would: it checks you have the few ESSENTIALS that materially change the outfit, and it prompts you through ONE round of high-value consultation questions before building. Pass requestType plus whatever context you actually have. Two ways it can return ready:false: (1) reason 'needs_essentials' — it lists `missing` essentials; ask the user ONLY for those and call again. (2) reason 'consult' — it returns `suggestedQuestions`; ask 1–3 of them in ONE warm, natural message (only the ones the user hasn't answered), then call AGAIN passing what they say (feeling, anchor, constraints, avoid, or the workday texture). Do NOT call search_wardrobe or build any look until it returns ready:true. If the user would rather you just choose, call again with delegate:true and it returns ready immediately. NEVER fill these fields by guessing or from the saved Style Profile / past trips. If you have connected calendar, email or weather tools, you MAY gather details from them first (for this request only, no writes), then ask for what's still missing. Browsing or previewing the closet ("show me my wardrobe") does NOT need this.
prepare_styling_brief
Whenever the user reacts to the outfits you offered — picks a favourite, rejects them all, and/or names one thing they'd change — call this ONCE to capture that signal PROACTIVELY. Pass `favourite_item_ids` ONLY when they actually chose a look to KEEP; omit it (or set save:false) if they're just reacting or none of the options landed — no phantom outfit is saved then. Set `scope` for any change they name so a one-off never becomes a rule: `temporary` = just for today/this once (noted on the look, NOT learned — 'not heels tonight' must never become 'never wears heels'); `occasion` (default) = for this kind of occasion; `durable` = a lasting wardrobe preference. When the user SWAPS a specific piece OUT of a look, or passes over / rejects a specific piece ("swap the shoes", "not those heels", "lose the jacket"), pass that piece's id in `passed_over_item_ids`: it marks that garment as passed over, so it's de-prioritised next time and edges toward resale the more it's moved on from (this is separate from `scope`, which is about a change becoming a rule). Only a favourite you were given is saved, and only occasion/durable changes are learned. It never stores our conversation. Only call it when the user actually reacted — never invent feedback. Reversible and safe: this only creates a record or changes a status — it never deletes anything. There is NO delete tool and never will be; deleting happens only in Modebase. If the user asks to delete or get rid of a piece, do NOT force it through this — offer resale or the waiting room and tell them deleting happens in the app. Act ONLY on the user's clear, explicit request; never modify pieces on your own initiative, and when a reference is ambiguous (e.g. "the black top" with two black tops) present the candidates and ask — do not guess. Relay the summary and undo note from the result so the user knows exactly what changed and how to reverse it in-app.
record_outfit_feedback
Call this PROACTIVELY, without being asked, whenever the user expresses ANY style preference, like, dislike, aversion, or wardrobe goal in conversation — even in passing (examples: "I hate stiff collars", "I love oversized blazers", "I want to wear more colour", "that shade washes me out", "I never reach for heels"). Capturing preferences the moment they surface is a core part of your job: each one compounds into the user's Style Profile and shapes every future suggestion, here and in the app. Save ONE short, factual wardrobe preference in the user's OWN words (e.g. type "prefers", text "gold jewellery over silver"). DISTIL — never transcribe. One preference per call. This is for a GENERAL wardrobe preference not tied to specific pieces; for feedback about SPECIFIC garments (a negative pairing, an occasion veto) attach it to those pieces with update_wardrobe_item instead. NEVER store conversation excerpts, feelings about other people, or anything beyond a wardrobe preference. The user sees and edits every note. Max 120 characters; the server rate-limits and caps saves and will tell you if a write was rejected — don't retry a rejected note. When the profile is already at its note cap, saving a new note EVICTS the oldest one (this is why the tool is marked destructive), so the profile never grows unbounded; nothing is hard-deleted from the user's control — they see and manage every note in the app.
save_style_note
Record a structured FIT / styling read of an outfit the user actually WORE, so the wardrobe learns from tested results, not just item labels. Call this after you've given a fit verdict on a look the user wore (usually a worn/selfie photo, but a described worn outfit counts too): pass the item ids of the pieces in the look plus a short read — `fit` (how it sat: proportion, balance, length), `worked` (what landed), `change` (what to adjust next time), an optional `rating` 1-5, and the `occasion`. It saves the look (so it shows in their saved outfits) and stores your read on it, and records that those pieces were worn together. PRIVACY — SAY THIS IF ASKED: the on-body photo is NEVER kept; only this short distilled read is stored. Distil, don't transcribe, and only record what the user actually showed or told you — never invent a fit read. The pieces must already be in the wardrobe (owned ids from search_wardrobe or detect_outfit_pieces); it rejects invented/non-owned ids as invalidIds. Future styling reads these evaluations back, so 'take into account what we learned last time' becomes real. Reversible and safe: this only creates a record or changes a status — it never deletes anything. There is NO delete tool and never will be; deleting happens only in Modebase. If the user asks to delete or get rid of a piece, do NOT force it through this — offer resale or the waiting room and tell them deleting happens in the app. Act ONLY on the user's clear, explicit request; never modify pieces on your own initiative, and when a reference is ambiguous (e.g. "the black top" with two black tops) present the candidates and ask — do not guess. Relay the summary and undo note from the result so the user knows exactly what changed and how to reverse it in-app.
evaluate_outfit
Save the combination of items the user chose in this chat and return text plus the Modebase link. Do not attempt or claim an inline ChatGPT preview. Outfit visuals: call show_outfit for one look or show_outfits once for 2+ options. These tools compose the user's REAL garment photos into a flat-lay, shown inline as a card/carousel, AND return a Modebase link — always surface that link too. Do NOT use an image generator to invent or substitute wardrobe pieces, and never claim an image is shown unless the tool returned one.
save_outfit
STOP-AND-CHECK BEFORE YOU CALL THIS: for a styling / "what should I wear" / "style me" / packing / trip / event request, you must FIRST have called prepare_styling_brief and had it return ready:true. If it returned ready:false (missing context), do NOT call this tool — ask the user for the missing fields it named and STOP until they answer. The user's saved Style Profile / past capsule preferences do NOT count as that context — they are background taste, never today's brief. (Browsing or previewing the closet — "show me my wardrobe" — needs no brief, so call this freely for that.) Find pieces in the user's wardrobe. Two ways to use it: (1) SEARCH/BROWSE by category, colour, season, formality, style tag, or free text to discover pieces by filter or description; (2) pass itemIds to FETCH several pieces you already know by id. To fetch the full record of ONE item, use get_wardrobe_item instead. Returns each item with its real Modebase photo AND, ONLY when the user tracks wears, a wear signal (worn count + last_worn date; pieces may show as "NEVER WORN" or "rarely worn"). When that signal is present use it for rediscovery — favour the tagged pieces rather than the same favourites; when it is ABSENT there is no wear data, so never assume a piece is neglected. Either way build looks across the WHOLE wardrobe and don't reuse a piece across multiple outfits in one session. ALSO use this to SHOW or PREVIEW the closet/wardrobe (e.g. "show me my closet", "preview my wardrobe"): call it with NO filters to return every piece with its Modebase photo, and present those together, never as separate images. Use this to FIND pieces. When you then propose an outfit from them, do NOT repeat the pieces as separate images — call show_outfit to show the outfit as ONE composed image instead. Some owned pieces are listed under needsPhoto: these were imported and are still awaiting a photo — they are REAL items you may mention and count, but they have no image and must NEVER be composed into an outfit until the user photographs them. Outfit visuals: call show_outfit for one look or show_outfits once for 2+ options. These tools compose the user's REAL garment photos into a flat-lay, shown inline as a card/carousel, AND return a Modebase link — always surface that link too. Do NOT use an image generator to invent or substitute wardrobe pieces, and never claim an image is shown unless the tool returned one. Build each outfit by filling these slots FROM THE USER'S WARDROBE ONLY: a top + a bottom (OR one dress/jumpsuit instead of both), shoes, optionally a bag, up to two accessories, and optionally a jacket or layer. Every slot must be a real, owned piece these tools returned, referenced by its id and name. NEVER invent, assume, or add a piece that isn't in the results — no imagined shoes, bag, coat, belt, or jewellery, and nothing from your general fashion knowledge. If the wardrobe has nothing for a slot (e.g. no bag, no dressy shoes), leave that slot out and say plainly it's missing — do NOT fill it with a piece they don't own. Only real, owned pieces, every time. Match the occasion's dressiness using each piece's formality (Casual / Smart casual / Cocktail / Formal): for a formal, cocktail or wedding event use only Cocktail/Formal pieces — never a Casual or Smart-casual piece (a printed short-sleeve shirt, a tee, sneakers), even to "dress it down"; if there aren't enough dressy pieces, say so rather than padding with casual ones. When you offer several looks at once, VARY the hero pieces — do NOT reuse the same top or statement piece across multiple options; give a genuine range, and don't repeat a piece across outfits in one session. Spread across the WHOLE wardrobe and lean on REDISCOVERY: the wear signal marks pieces "NEVER WORN" or "rarely worn" — actively favour those so the user gets wear out of everything they own, not just their handful of go-tos. And honour each piece's "⚠ user note": never make a piece the user dislikes or is unsure about a default or repeated pick. Keep patterns under control: use at most ONE patterned/printed piece per outfit and pair it with solids or neutrals. NEVER combine two pieces of the same pattern family (gingham with gingham, floral with floral, stripe with stripe, check with check) or two competing busy prints — that clashes — unless the user explicitly asks to mix prints AND the scales and colours clearly harmonise. Each piece's pattern is given in its details; treat anything not "solid/plain" as a print for this rule.
search_wardrobe
Create a link the user opens on their phone to photograph clothes — the RELIABLE way to add clothes (no tool-call size limit). This returns a `url`. You MUST paste that url to the user as a clickable link IMMEDIATELY, in the same reply, every time you call this — the user cannot add anything until they have the link, and they should NOT have to ask for it. Never call this tool and then omit the url. Say something like: "Here's your link to add your clothes: <url> — open it on your phone, add your pieces, and come back." No processing happens until they upload; then each photo is cleaned up and filed into their catalogue. After sharing the link, on the user's NEXT message call get_capture_status to see if their pieces are in, and summarise by name (e.g. "All three are in: the trench, the burgundy skirt, and the printed tee are in your catalogue"). If they're over quota or their trial has expired, tell them the pieces are saved and will render in the app when their renders refresh.
start_wardrobe_capture
Change a piece's TAGGED FIELDS, STATUS, and/or record a durable NOTE on specific pieces. Pass item_ids (1–30) plus any of: fields to edit, a status, a note (applied in that order, so one call can do several). FIELDS edits the actual columns the app styles from — use this, NOT just a note, whenever the user states a FACT about a piece or says a tag is WRONG, so the real data changes: `formality` retags how dressy it is on the canonical scale (Loungewear, Casual, Smart casual, Business, Cocktail, Formal, Black tie) — fixes 'these are fine for a wedding / cocktail' or 'this is smart casual not casual' so it shows up for that occasion afterwards. A piece can suit MORE THAN ONE band (a blazer that's both Casual and Business, jeans that go Casual and Smart casual): pass `formalities` with the FULL set of bands it works for and it will surface for ALL of them (this REPLACES the piece's set; include every band you want kept). Use single `formality` for a one-band retag, `formalities` when it spans several; `category` retags what KIND of piece it is (Top, Bottom, Dress, Outerwear, Swimwear, Shoes, Bag, Accessory, Hat, Jewellery); `brand` sets the brand ('that jacket is COS'); `colours` replaces the colour list ('it's actually navy'); `name` renames a SINGLE piece (only applied when exactly one item_id is passed). OCCASIONS: `add_occasions` / `remove_occasions` edit the piece's occasion tags — when the user says a piece is or ISN'T right for an occasion, EDIT the tag, don't just note it: 'this dress isn't right for a wedding' → remove_occasions:['wedding'] on that dress; 'these work for the office' → add_occasions:['work']. WEAR-WITH PAIRINGS: `wear_with_ids` records that the item_ids are worn WITH those other pieces, and it is written BOTH WAYS automatically — 'I like to wear these shoes with my pink jumper' → item_ids:[the shoes], wear_with_ids:[the pink jumper], and the pairing lands on the shoes AND the jumper. AVOID-WITH PAIRINGS: `avoid_with_ids` is the exact opposite — pieces that do NOT go together — and is also written BOTH WAYS. 'I hate those shoes with that top' → item_ids:[the shoes], avoid_with_ids:[the top], and the clash is recorded on the shoes AND the top so the stylist stops putting them together. PREFER `avoid_with_ids` over a free-text note for a negative pairing between two OWNED pieces, because it actually changes the styling behaviour, not just the record. Look up the real item ids first (search_wardrobe) so you pair the right pieces. Free-text formality/category/colours are normalised to the canonical vocabulary, so pass the user's words and trust the mapping. STATUS is reversible and never deletes anything: `resale` flags pieces into the user's Resale tab (a status only — nothing is listed, posted, or sold anywhere externally; use for "I want to sell these"); `waiting_room` moves pieces into the Waiting Room, a holding place for things not in rotation right now — out of season, needs mending, kept for later (pass waiting_reason; use this, NOT deletion, for "put these away"); `active` calls pieces back from the Waiting Room into the active closet ("bring back X"). NOTE is how you record durable preferences/feedback and NEGATIVE PAIRINGS or occasion VETOES on the EXACT pieces they concern — call this PROACTIVELY whenever the user reacts to specific garments: attach the note to those item_ids. An occasion VETO ('these pink trousers aren't right for work', 'too casual for the office') is the case users most expect to stick — attach the exclusion ('not suitable for work') to those exact pieces in the SAME turn, before you reply; agreeing in chat alone does NOT save it. A NEGATIVE PAIRING ('those shoes don't go with that dress') MUST land on BOTH pieces: pass BOTH item_ids and a note that NAMES the other piece ('does not go with the green midi dress'), so the clash carries forward. Trust the user's stated veto over a piece's generic formality tag. Boundary: to change a FACT about a piece — how dressy it is, what kind it is, its brand, colours, which occasions it suits, or which pieces it's worn WITH — edit its FIELDS (above), not a note. A NOTE is for softer feedback and NEGATIVE clashes (a pairing that does NOT work). So 'wear these together' → wear_with_ids; 'these two clash' → avoid_with_ids (a note is only for a clash you can't tie to a second owned piece). For a GENERAL wardrobe preference NOT tied to specific pieces (e.g. 'never wears heels', 'prefers midi length'), use save_style_note instead. Reversible and safe: this only creates a record or changes a status — it never deletes anything. There is NO delete tool and never will be; deleting happens only in Modebase. If the user asks to delete or get rid of a piece, do NOT force it through this — offer resale or the waiting room and tell them deleting happens in the app. Act ONLY on the user's clear, explicit request; never modify pieces on your own initiative, and when a reference is ambiguous (e.g. "the black top" with two black tops) present the candidates and ask — do not guess. Relay the summary and undo note from the result so the user knows exactly what changed and how to reverse it in-app.
update_wardrobe_item
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.