add_to_lookbook
ChatGPTAppend 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. Acts only on what the user asked for, offers candidates when a reference is ambiguous, and returns a short summary of what changed.
add_to_wishlist
ChatGPTUse this when the user asks to save a piece they want but do not own yet to their wishlist, for example shoes they found while styling. Pass a short title, and the link and a note if they gave them. It is not added to the wardrobe and takes no catalogue space.
add_wardrobe_item
ChatGPTUse this when the user shares a photo of a garment and wants it added: "add this jacket to my wardrobe", "add this to Modebase". Isolates the named garment into a clean cut-out (ghost-mannequin render) with any person, hanger and background removed, so a plain shot or a worn shot both work: pass the whole photo plus a specific name such as "cream ribbed knit". A photo with several pieces yields one item per call, so review them first with detect_outfit_pieces. Returns a catalogueUrl for the new piece, which renders shortly. When the user is out of free catalogue space the piece is kept as a preview (awaitingRender:true) with a message and a wardrobe link. The photo goes in the photo file param; photos too large to pass as a data URL go through start_wardrobe_capture, which returns a url the user opens on their phone.
browse_pieces
ChatGPTUse this when the user wants to look through their wardrobe: "show me my dresses", "let me look through my wardrobe", "what shoes do I have". Shows a grid of their own pieces they can filter (type, colour, not worn lately), select, then share or ask to style, 24 per page. Pass category, colour or query to narrow, offset to page, or item_ids from get_edits with the edit name as title to show an edit. Reads only. For a few pieces side by side, use show_pieces.
compare_pieces
ChatGPTUse this when the user wants to decide between garments they own: "which of these should I wear?", "compare these two", "which trousers work better for this?". Pass 2 to 8 item ids for the same slot, narrowed first with search_wardrobe. Returns a numbered side-by-side picture of their cut-outs plus a map from each number to its item id, so the choice can be judged on cut, proportion and shade. Pieces without a clean cut-out come back in notShown: judge those on their written detail and say so. It is the last step before deciding, not a way to browse.
create_lookbook
ChatGPTUse this when the user wants a capsule, a packing set or one shareable page of looks: "build a capsule from my clothes", "a work capsule", "pack me for 5 days", "make me some options on one page", "give me a link to share". Packages the user's real pieces or outfits into a saved artefact and returns its url (surfaced as user_facing_url); use that url as the link, and say so if none comes back. Choose format: shareable_page is a public Looks page (looks, up to 6, each with a name, item_ids and an optional note); workspace opens looks or pieces behind the user's login, with mode capsule (the PDF-style capsule page, which is what a capsule or "pack me for N days" means; pass looks, one per day or occasion), options (one /capsule?set= link of outfit options) or items (a plain grid; pass itemIds, up to 30); saved_edit is a named private edit (pass name and itemIds). For a single look, or a trip plan where each day is its own image, show_outfit or show_outfits is usually better.
detect_outfit_pieces
ChatGPTUse this when the user shares a photo of an outfit or selfie and wants the pieces in it identified or added. For "does this look ok?" answer from the photo first, offer once to add the pieces, and call this only after they say yes. By default (confirm omitted or false) nothing changes and the result has review:true with owned (already in the wardrobe; committing logs them as worn today) and newPieces (not yet owned; committing adds them as clean cut-outs). With confirm:true every new piece is added and owned pieces are logged as worn today, in one step; adds are reversible and nothing is deleted. Review mode suits busy photos, photos with other people and items the user may not own; new pieces are then added with add_wardrobe_item and owned ones logged with log_wear. Returns a catalogueUrl for added pieces. The photo goes in the photo file param; if it will not transfer, offer show_add_pieces and open it only after they say yes.
export_presentation
ChatGPTReturns full-resolution cut-out images of the user's pieces for a presentation, deck, lookbook or design tool such as Canva or Keynote, as a downloadable link per piece (links expire in an hour). Takes the item ids to export; a stylist can pass a client's workspaceId to export that client's pieces (studio access is checked). When the feature is not enabled on the account, the result is a notice instead of links. Some pieces can be unavailable at full resolution (added before hi-res was stored, or still rendering); the result lists them, and re-rendering or re-adding generates a full-resolution version. show_outfit is the everyday in-chat flat-lay.
get_builder_pieces
ChatGPTReturns the pieces of a look in the form the outfit builder needs, so the look card can become the builder in place. Reads only.
get_calendar_months
ChatGPTReturns the next few months of the user's calendar plans with small pictures of the planned looks. Reads only.
get_capture_status
ChatGPTUse this on the user's next message after giving a capture link, to see whether the photographed pieces are in: "are my clothes in yet?". Returns per-item status (processing, rendered, failed, awaiting_render) and names once extracted, with the real photo for rendered pieces; omit batchId for the most recent capture. Report failures honestly ("one did not come through"). It may resume a stalled batch of the user's own upload, which is why it is not marked read-only, and any link it returns can be a single-use sign-in link, so never expose it publicly.
get_edits
ChatGPTUse this when the user refers to one of their saved EDITS (named sets of their own pieces, such as "Italy Summer" or "Cosy Winter Weekend") or asks what edits they have: "use my Italy edit to make a capsule wardrobe", "what's in my work edit?", "pack me for the trip from my Italy edit". With no edit, lists every edit with its name and piece count. With edit (a name or id), returns that edit and the pieces in it as slim records; style from those pieces (for a capsule, pass them to create_lookbook) and use search_wardrobe with itemIds or get_wardrobe_item for photos and full detail. If the name matches no single edit, the result lists the user's edits: ask which one rather than guessing.
get_look_thumbs
ChatGPTReturns small pictures of some of the user's planned looks, by outfit id. Reads only.
get_picker_items
ChatGPTReturns the user's pieces for one outfit builder slot (dress, top, bottom, layer, shoes, bag, accessory), each checked against the rest of the look. Reads only.
get_piece_detail
ChatGPTReturns the facts and a picture of ONE of the user's pieces for the pieces card. Reads only.
get_piece_link
ChatGPTReturns a link that opens ONE of the user's pieces in the Modebase app, for the pieces card. Reads only.
get_piece_thumbs
ChatGPTReturns small pictures of some of the user's pieces, by id, for the pieces card. Reads only.
get_pieces_page
ChatGPTReturns the next page of the user's pieces for the same filters as browse_pieces. Reads only.
get_planned_outfit
ChatGPTReturns the outfit planned for a calendar date as text, an inline composited flat-lay of the user's real garments and a Modebase link to the exact flat-lay. The date is given as YYYY-MM-DD. When nothing is planned for that date the result says so.
get_resale_listing
ChatGPTReturns the title, description and suggested price for ONE of the user's pieces, ready to paste into Depop or Vinted, for the resale card. Reads only.
get_share_link
ChatGPTUsed by the pieces card, not called by the assistant on its own. Returns a link that opens the Modebase Share view for the given pieces. Only call it when the user asked to share specific pieces and the card could not. Reads and writes nothing.
get_started
ChatGPTUse this first for "what is Modebase", "what can you do", "how does this work", "how do I start", "where do I begin" and "help me get started". Returns the person's real state (how many pieces they have, whether wear tracking is on) and three prompts worth trying next, so the answer fits them instead of being generic. Reads only. Do not explain how Modebase works internally.
get_style_profile
ChatGPTUse this when the request depends on the user's own taste: "an outfit that feels like me", "what suits my usual style?". Returns their Style Profile in one result: Style Guide (their own words), stated preferences, wear signals (most worn pieces and colours, favourites, never-worn count), last 10 saved outfits, goals and style DNA. Facts only, no conversation history. A worn count is logged wears; mostUsedInOutfits counts saved outfits. Preferences typed 'avoid' are newer corrections and win over the Style Guide. It is background taste, not the details of a particular day, so use prepare_styling_brief for those.
get_styling_candidates
ChatGPTSecond step for what to wear and packing requests, after prepare_styling_brief returns ready:true. Returns a shortlist of the user's own Modebase pieces grouped by slot (top, bottom, dress, mid, outerwear, shoes, accessory), each with its photo, plus draft looks. Optional inputs: slots (to replace a single piece), days (a multi-day plan) and anchor (a piece to build around). Outfits are built from the user's own wardrobe: each slot (a top and bottom, or one dress or jumpsuit; shoes; an optional bag; up to two accessories; an optional jacket or layer) is filled by an owned piece these tools return, referenced by its id and name. Pieces carry formality, pattern and wear details for matching the occasion.
get_wardrobe_audit
ChatGPTUse this when the user asks for an audit or a buying decision: "audit my wardrobe", "what should I stop buying?", "what should I declutter?", "do I have too much black?". For a general "how is my wardrobe doing" question use show_wardrobe_insights instead. Returns findings, each with a plain summary, the numbers behind it and a tone (watch, note, good): redundancy, category and colour balance, gaps for dressy occasions, orphan pieces and, for users who log wears, never-worn pieces. Catalogue-only: it does not assess condition, quality or fit, and the result carries a scopeNote to relay. Findings and numbers, not pictures.
get_wardrobe_item
ChatGPTUse this when you need the FULL detail of ONE specific piece the user owns — its complete visual description, the emotional layer, care needs, and photos. Reach for it when zeroing in on a single garment ("tell me about this jacket", or to get a piece's exact look before styling or describing it). To find items by filter or fetch several by id, use search_wardrobe instead.
get_wardrobe_overview
ChatGPTReturns totals for the user's wardrobe, suited to questions such as "how big is my wardrobe?" or "give me an overview of my wardrobe". It contains totalActiveItems, needsPhotoItems, totalItems, categories and colours, with category labels normalised into families (for example Top, Shirt and Jumper are counted as Tops). Counts and categories only, with no pictures. To see the pieces themselves, search_wardrobe with no filters returns them as inline images plus a link.
get_wear_history
ChatGPTUse this when the user asks how they actually USE the clothes they own — "what haven't I worn?", "what do I wear most?", "which pieces have I neglected?", "what did I wear recently?", or wants to get more use out of their wardrobe. Returns their recent logged outfits, feelings, and how often each real piece gets worn.
log_wear
ChatGPTLogs that the user wore specific pieces on a given date. Suited to statements such as "I wore my navy dress to the dinner" or "this is what I wore today". Optional context fields feed cost-per-wear and later suggestions: occasion (where or what it was for), feeling (how it felt, for example comfortable or overdressed) and weather_note (for example hot, rainy, cold or humid).
move_calendar_entry
ChatGPTMoves one planned look to another day. The outfit is unchanged. WRITES to their real calendar.
move_calendar_plan
ChatGPTMoves one planned look to another day on the user's Modebase calendar. Use it when the user asks to move or reschedule a planned look, passing the plan_id from the calendar card (or from get_planned_outfit) and the new day. Only call it when they have asked. The outfit and every wardrobe piece are unchanged; only the day moves.
open_outfit_builder
ChatGPTUse this when the user wants to change a look by hand: "let me change the shoes", "build an outfit around this skirt", "I want to pick the pieces myself", "edit this look". Opens the outfit builder card, where they swap pieces one slot at a time from a grid of their own pieces, then save, plan or ask for your opinion. Pass the look so far as item_ids (or just the piece to build around), a short title, the occasion if known, and focus_slot to open a slot's picker straight away. With no item_ids it opens an empty builder. Reads only; their changes come back as a message naming the exact item ids.
plan_outfit
ChatGPTUse this when the user asks to put a look on a day: "plan this for Friday", "save it for the wedding on the 14th". WRITES to their real calendar, so call it only after they ask or say yes to an offer; "plan my week" means show a week, not write one. Pass the item ids and the date as YYYY-MM-DD (resolve relative dates first). It validates the pieces are the user's own, saves the outfit and pins it to that day. Differs from save_outfit (a look with no date) and create_lookbook (a named edit or capsule).
prepare_styling_brief
ChatGPTStart here when the user asks what to wear, what to pack, or for outfit ideas for any occasion, trip, event, workday or weather, for example "what should I wear to a wedding on Saturday?", "pack me for 5 days in Bali", "outfit for a job interview" or "something for dinner tonight". Modebase styles from the clothes the user actually owns, not generic suggestions. Checks whether the request has the details that change the outfit (occasion, destination, dates, weather, dress code). Returns ready:true, or the missing details with short questions to ask. Pass delegate:true when the user wants you to just choose. When ready, call get_styling_candidates. Reads only; nothing in the wardrobe changes.
prepare_try_on
ChatGPTUse this when the user asks to see a look ON them ("try this on", "show me wearing it", "how would this look on me?"). Takes the item ids of a reviewed look and returns the exact garment photos, names and a brief for your own image tool. Modebase does not render people: you do, using only these garments. If it reports the look is not reviewed, review it with review_outfit_candidates and call again. Read-only; nothing is saved. Ask the user for a photo of themselves if you do not have one.
record_outfit_feedback
ChatGPTRecords the user's reaction to offered outfits: a favourite to keep, a rejection of all options, and/or one change they want. Pass favourite_item_ids when they chose a look to keep; otherwise no outfit is saved. scope says how far a named change applies: temporary (this once), occasion (the default) or durable (a lasting preference). passed_over_item_ids lists pieces the user swapped out. The conversation itself is not stored. Acts only on what the user asked for, offers candidates when a reference is ambiguous, and returns a short summary of what changed.
refresh_capsule_look
ChatGPTKeeps the pieces the person chose for one look of their capsule and returns a fresh flat-lay for it and, for a multi-day plan, the redrawn week board, so the capsule card can show the change. Writes only the look's pieces in the saved set.
remove_calendar_entry
ChatGPTRemoves one planned look from the user's calendar. The outfit and its pieces stay saved. WRITES to their real calendar.
remove_calendar_plan
ChatGPTTakes one planned look off the user's Modebase calendar. Use it when the user asks to remove or clear a planned look, passing the plan_id from the calendar card (or from get_planned_outfit). Ask the user to confirm first. Only that day's entry is cleared: the outfit and every wardrobe piece stay saved.
remove_from_edit
ChatGPTTake pieces out of an existing edit/lookbook, matching it by name or id. Use when the user says "take the black boots out of my Italy edit". This only changes the edit: the pieces stay in the wardrobe, and add_to_lookbook puts them back. If the name does not clearly match one edit, the result lists the user's edits: ask which one. Acts only on what the user asked for, offers candidates when a reference is ambiguous, and returns a short summary of what changed.
remove_from_wishlist
ChatGPTTakes ONE piece off the user's wishlist for the wishlist card.
remove_piece
ChatGPTRemoves ONE of the user's pieces from the wardrobe for the pieces card, into Recently deleted where it stays for 30 days.
rename_edit
ChatGPTRename an existing edit/lookbook, or change its short note, matching it by name or id. Use when the user says "rename my Italy edit" or "call it Summer Italy". If the name does not clearly match one edit, the result lists the user's edits: ask which one rather than guessing. Acts only on what the user asked for, offers candidates when a reference is ambiguous, and returns a short summary of what changed.
reset_calendar_link
ChatGPTRetires the user's phone-calendar subscription link and returns a new one. Anyone holding the old link can no longer read the calendar.
review_outfit_candidates
ChatGPTUse this after get_styling_candidates and before showing looks. Composes up to 8 complete draft outfits into flat-lays of the user's real pieces and checks them. Accepts candidates from get_styling_candidates or assembled separately. To replace a single piece, call get_styling_candidates with slots. The next step is show_outfit or show_outfits.
save_calendar_day
ChatGPTSaves the chosen look onto a day of the user's calendar, the same as plan_outfit. WRITES to their real calendar.
save_daily_outfit_reminder_answer
ChatGPTSaves the user's answer to the optional daily outfit reminder that was offered to them. Use it only after the user has answered that offer: pass answer "accepted" once they agreed and their scheduled Task is confirmed, or "declined" if they said no. It stores that one choice on their Modebase profile so they are not asked again too soon. It does not create a reminder or schedule anything.
save_outfit
ChatGPTUse this when the user wants to KEEP or remember an outfit built from pieces they own: "save this outfit", "remember this look", "keep that combination". Saves the combination of their real items chosen in this chat and returns text plus the Modebase link. For a look tied to a date, use plan_outfit instead. Do not attempt or claim an inline ChatGPT preview.
save_outfit_fit_read
ChatGPTSaves a short fit-and-styling read of a look the user wore (a worn or selfie photo, or a described outfit). Takes the item ids of the pieces plus fit, worked, change, an optional rating 1 to 5 and the occasion. The look is saved to their saved outfits with the read attached. The on-body photo is not kept. Ids must be pieces the user owns (from search_wardrobe or detect_outfit_pieces); others are returned as invalidIds. Acts only on what the user asked for, offers candidates when a reference is ambiguous, and returns a short summary of what changed.
save_piece_form
ChatGPTSaves the item details form for ONE of the user's pieces for the pieces card, and returns the piece as saved.
save_style_note
ChatGPTSaves one short, factual wardrobe preference in the user's own words (for example type "prefers", text "gold jewellery over silver"). One preference per call, up to 120 characters. Intended for general wardrobe preferences not tied to specific pieces; feedback about specific garments attaches to those pieces through update_wardrobe_item. The user sees and edits every note in the app. The server rate-limits and caps saves and reports when a write is rejected. When the profile is at its note cap, a new note evicts the oldest one (the reason this tool is marked destructive); nothing is removed outside the user's control.
search_wardrobe
ChatGPTUse this when the user asks about clothes they own: "find my black trousers", "what jackets do I have", "what goes with my linen shirt", "do I own a cream blazer?". Searches the user's own Modebase wardrobe by category, colour, season, occasion, formality, brand, pattern, tag or free text; itemIds fetches known pieces, and queries checks up to 8 pieces in one call (grouped per piece, with "Not in the wardrobe" when the user does not own it). With no filters it returns every piece. Returns real pieces with photos, ids, a collectionUrl and wear counts; pieces under needsPhoto have no image and are not used in outfits. To show pieces as a picture card, use show_pieces (up to 8) or browse_pieces (more); for the full record of one piece, use get_wardrobe_item.
show_add_pieces
ChatGPTOpens the Modebase upload screen right inside the chat so the user can photograph or choose their clothes without leaving the conversation. Use it when the user wants to add several pieces from photos, as the first choice before start_wardrobe_capture. If the card does not open, the result carries a link, which is given to the user as written.
show_calendar
ChatGPTUse this when the user wants to put a look on their calendar without naming a day, or asks to see their calendar: "add to calendar", "what have I planned?". Shows a month grid with planned days marked. Pass item_ids (and a title) for the look to place, or looks (title and item_ids each) when they have several options; the card lets them tap a day, which asks for plan_outfit on that date. Add to Calendar always means calling this tool. Never call plan_outfit until they have picked a day. Reads only. If no card appears, list the next few free days in words and ask which one.
show_outfit
ChatGPTUse this when the user asks to see one look: "show me", "what would that look like", a swapped shoe or top, the final look. Takes the chosen item ids (from search_wardrobe, get_styling_candidates or get_style_profile) and validates them against the active wardrobe; non-owned or inactive ids come back as invalidIds. Returns an inline flat-lay of their real garments plus a Modebase link to the exact flat-lay, to surface alongside it. A preview only: save_outfit saves it. For several options or a multi-day plan, use show_outfits.
show_outfits
ChatGPTUse this when the user wants two or more looks at once: "show me both", "navy blazer or charcoal coat?", "3 outfits for the wedding", a week or a multi-day plan. Takes looks: an array with the item ids and a short name for each look (one entry per day for a plan). Returns text plus one link that opens every option as its own flat-lay, and the single result holds looks, pieces, itemIds, lookImageUrl, lookUrl, renderStatus, missingPieces and allUrl. The card offers Share with friends on each option and one Add to Calendar button; pass purpose 'capsule' for a capsule or packing list. For one look, use show_outfit.
show_pieces
ChatGPTUse this when the user wants to see a few of their own pieces: "show me my sneakers", "let me see my dresses", "what jackets do I have". Pass itemIds from search_wardrobe, or a category, colour or query. Returns an inline card with up to 8 pieces side by side and a Modebase link to the full set; pieces without a clean cut-out are named but not drawn. For a whole wardrobe, a category with more than 8 pieces, or filtering and sharing, use browse_pieces. Saves nothing.
show_resale
ChatGPTUse this when the user asks about reselling or selling their clothes, what is worth reselling, or what they have listed or sold. Shows one card with the pieces worth reselling, the ones set aside for resale, the ones listed and the ones sold, with what has been earned back. The user moves pieces along and prepares listing text on the card. To flag specific pieces from chat, use update_wardrobe_item with status resale. Reads only.
show_share
ChatGPTShows a Share button for a look page the user has just made with create_lookbook (format shareable_page), so they can send it with their phone's own share popup without copying a link. Use it right after create_lookbook returns the page link, passing that exact link as url, the look's name as title and its item_ids. Only a link on the Modebase site is accepted. Reads and writes nothing. Also give the link in one line of text, saying anyone with the link can open it, in case the card does not appear.
show_today
ChatGPTShows the look planned for today as one quick card, with Share with a friend, Change pieces and Ask Stylist buttons. Use it first, before any questions or new suggestions, whenever the user asks what to wear today, "what am I wearing" or "my outfit for today", instead of get_planned_outfit, and add nothing after the card. Pass today's date as YYYY-MM-DD in the user's own time zone. When nothing is planned the result says so: offer in one line to style something, and do not plan anything yourself.
show_wardrobe_insights
ChatGPTUse this first for "how is my wardrobe doing", "wardrobe overview", "wardrobe stats", "what do I wear most", "what am I not wearing", "what am I missing". Shows one insights card: piece count, what it is made of, main colours, most worn and unworn pieces (for users who log wears), cost per wear and the gaps worth acting on. Use it instead of get_wardrobe_audit and get_wardrobe_overview for those questions. Reads only.
show_wishlist
ChatGPTUse this when the user asks to see their wishlist, or the pieces they want but do not own yet. Shows one card where they can add a piece or take one off. Reads only.
start_wardrobe_capture
ChatGPTUse this when the user wants to add several of their own clothes from photos, or asks for outfit help before adding any pieces: "add my clothes", "build my wardrobe from photos", "I want to add lots of pieces". Returns a url the user opens on their phone to photograph clothes, with no size limit; share it as a clickable link in the same reply. Pass intent when the occasion is known. Try show_add_pieces first for an in-chat upload card; on the user's next message, call get_capture_status. If the user is over quota or their trial has ended, the pieces are saved and render later.
update_capsule
ChatGPTChanges a capsule the user already has, in place, when they swap a piece, cut a look or add a day. Pass the slug returned by the earlier create_lookbook call and the full set of looks as they should now be; the saved looks are replaced, and the same link keeps working. A new capsule is made with create_lookbook instead. Acts only on what the user asked for, offers candidates when a reference is ambiguous, and returns a short summary of what changed.
update_resale
ChatGPTMoves ONE of the user's pieces one step along the resale pipeline for the resale card (set aside, listed with a Depop or Vinted link, sold, or back), and returns the card as it now stands.
update_wardrobe_item
ChatGPTUse this when the user wants to correct or change pieces they own: "change the brand on this", "that dress is formal, not casual", "move these to resale", "these two never go together". Edits fields, status and notes on 1-30 pieces (item_ids). Applied in this order, so one call can do several: fields, status, note. FIELDS: formality, formalities (the full set, replacing the existing one), category, brand, colours (replaces the list) and name (only when exactly one item_id is passed). Allowed values are listed in the schema; free-text values are normalised. OCCASIONS: add_occasions and remove_occasions. PAIRINGS: wear_with_ids and avoid_with_ids record pieces that do or do not go together, written both ways. LAYERING: styling_role and can_be_worn_standalone correct how a layer is read; styling_role:'derive' clears an override. STATUS: resale, waiting_room (with an optional waiting_reason) or active. NOTE records durable feedback on specific pieces, such as an occasion veto or a clash. For a general preference not tied to pieces, see save_style_note. Acts only on what the user asked for, offers candidates when a reference is ambiguous, and returns a short summary of what changed.