Chic Stylist · Model Context Protocol

A wardrobe with
a wider world.

Bring your clothes, outfit ideas, and personal stylist into the AI assistant you already use.

Your wardrobe

Browse, upload, organize, and favorite the clothes you already own.

Your next look

Discover curated looks, generate outfits, and see a virtual try-on.

Your permission

Choose explicit scopes, automatic expiry, and revoke access at any time.

01 · Getting connected

One account. A considered connection.

  1. Open your connections and sign in using the same method as the Chic Stylist app.
  2. Create a token for your assistant. Choose the permissions it needs and an expiry of 7, 30, or 90 days. Copy the token when it appears; it is shown once.
  3. In an MCP client that supports remote Streamable HTTP with bearer tokens, add the server URL and put the token in its private credentials field.
  4. Initialize the server, then call tools/list. The response only includes tools allowed by that token.

Tokens belong to one account. No app password, shared service token, or user ID belongs in the connector configuration. MCP authentication uses a bearer token; OAuth discovery is not offered by this server.

POST https://fast-jackal-528.convex.site/mcp
Authorization: Bearer <YOUR_PERSONAL_ACCESS_TOKEN>
Content-Type: application/json
Accept: application/json, text/event-stream

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-11-25",
    "capabilities": {},
    "clientInfo": { "name": "your-client", "version": "1.0.0" }
  }
}

Send notifications/initialized, then tools/list or tools/call. Subsequent requests should send MCP-Protocol-Version with the negotiated version. Supported versions are 2025-11-25, 2025-06-18, and 2025-03-26.

The endpoint is stateless: no session ID, persistent GET stream, or SSE response is needed. Authenticated GET and DELETE requests return 405. Browser clients need their exact origin configured by the server operator; server clients can omit Origin.

02 · Permissions

Only what you choose to share.

Start with read scopes and add write scopes for the actions you want your assistant to perform. Write access does not automatically include read access; a workflow that generates and polls a result needs both.

profile:read

Read your style preferences and account limits.

wardrobe:read

Browse your clothing, categories, and image previews.

wardrobe:write

Search online, import, upload, organize, and delete wardrobe items.

outfits:read

View outfit suggestions and their generation status.

outfits:write

Generate, save, favorite, and delete outfits. Generation uses your allowance.

tryons:read

View try-ons, your personal model photos, and their generation status.

tryons:write

Upload personal models and generate or delete try-ons. Generation uses your allowance.

stylist:read

Read your existing AI stylist conversations.

stylist:write

Send messages and receive personalized style advice.

media:export

Create watermarked downloads with your existing premium entitlement.

Tokens expire after 30 days by default and at most 90 days. An account may have up to 20 active tokens. Revocation blocks subsequent requests. Account deletion or deactivation also blocks connector access.

03 · Tool reference

46 tools, one familiar wardrobe.

All inputs are validated against the schemas in the specification. Account ownership is checked for every private record. IDs must come from this account’s tool responses.

Account & operations

chic_get_operationOriginal operation scope · Read

Check a connector write operation after a timeout. Requires the original tool scope. Never resubmit uncertain work using a new requestId.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "operationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    }
  },
  "required": [
    "operationId"
  ]
}
chic_get_profileprofile:read · Read

Get your style profile and preferred language.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {},
  "required": []
}
chic_get_usageprofile:read · Read

Get current subscription, feature limits, usage and remaining quota.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {},
  "required": []
}

Wardrobe

chic_list_wardrobewardrobe:read · Read

List your wardrobe items and analysis status. Use the returned cursor for further pages.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    },
    "favoritesOnly": {
      "type": "boolean"
    }
  },
  "required": []
}
chic_get_wardrobe_itemwardrobe:read · Read

Get your wardrobe item and a temporary image preview when ready.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    }
  },
  "required": [
    "imageId"
  ]
}
chic_list_categorieswardrobe:read · Read

List valid wardrobe categories.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {},
  "required": []
}
chic_search_online_pieceswardrobe:write · Write

Search online for clothing or accessories. Saves a temporary search for importing selected results; returns source attribution and whether results are preview data. Search results are not owned wardrobe items.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 160
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "query",
    "requestId"
  ]
}
chic_import_online_piecewardrobe:write · Write

Import a selected result from your unexpired online search into your wardrobe. Uses the existing image-upload allowance once per new source and analyzes the image. Use only searchId and resultId returned by chic_search_online_pieces.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "searchId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "resultId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "searchId",
    "resultId",
    "requestId"
  ]
}
chic_begin_wardrobe_uploadwardrobe:write · Write

Create your wardrobe upload and return a 15-minute signed PUT URL and required headers. PUT image bytes, then call chic_complete_wardrobe_upload. Uses one image-upload quota. Maximum 10 MiB.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "contentType": {
      "type": "string",
      "enum": [
        "image/jpeg",
        "image/png",
        "image/webp"
      ]
    },
    "fileSize": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10485760
    },
    "originalFileName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "contentType",
    "fileSize",
    "requestId"
  ]
}
chic_complete_wardrobe_uploadwardrobe:write · Write

After the signed PUT succeeds, verify the uploaded object and start wardrobe analysis. Poll chic_get_wardrobe_item until analyzed.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "imageId",
    "requestId"
  ]
}
chic_set_wardrobe_categorywardrobe:write · Write

Set the category of your wardrobe item using a category returned by Chic.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "categoryId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "imageId",
    "categoryId",
    "requestId"
  ]
}
chic_set_wardrobe_favoritewardrobe:write · Write

Set the favorite status of your wardrobe item.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "isFavorite": {
      "type": "boolean"
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "imageId",
    "isFavorite",
    "requestId"
  ]
}
chic_delete_wardrobe_itemwardrobe:write · Write · Deletes content

Delete your wardrobe item. This removes its record and schedules removal of its image.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "imageId",
    "requestId"
  ]
}
chic_get_decompositionwardrobe:read · Read

Inspect the saved extraction manifest for your source wardrobe image, including completed pieces and outputs needing delivery. Returns no provider URLs.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    }
  },
  "required": [
    "imageId"
  ]
}
chic_resume_decompositionwardrobe:write · Write

Resume an existing extraction when chic_get_decomposition reports canResume. Reuses its frozen piece manifest: pending pieces may consume existing generation allowance or Plus image credits; generated pieces only retry storage. Never regenerates submitted or completed pieces or creates a new extraction.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "imageId",
    "requestId"
  ]
}
chic_decompose_lookwardrobe:write · Write

Extract up to six wardrobe items from your uploaded look photo and save them to your wardrobe. Uses up to six Plus image credits under the existing backend policy and calls image-analysis and generation providers. Only request when the user wants these new images.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "imageId",
    "requestId"
  ]
}

Outfits & house looks

chic_generate_outfitoutfits:write · Write

Generate an outfit around 1–10 of your analyzed, appropriate wardrobe items. Uses your existing outfit allowance or Plus image credits and sends selected images to the generation provider. Returns a match ID; poll chic_get_outfit.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageIds": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128,
        "description": "An ID returned by a Chic tool."
      },
      "minItems": 1,
      "maxItems": 10,
      "uniqueItems": true
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    },
    "secondaryStyle": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "imageIds",
    "requestId"
  ]
}
chic_get_outfitoutfits:read · Read

Get your generated outfit status, explanation and temporary image preview.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "matchId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    }
  },
  "required": [
    "matchId"
  ]
}
chic_list_outfitsoutfits:read · Read

List your generated outfits, including pending and failed jobs.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    },
    "favoritesOnly": {
      "type": "boolean"
    }
  },
  "required": []
}
chic_set_outfit_favoriteoutfits:write · Write

Set the favorite status of your generated outfit.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "matchId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "isFavorite": {
      "type": "boolean"
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "matchId",
    "isFavorite",
    "requestId"
  ]
}
chic_delete_outfitoutfits:write · Write · Deletes content

Delete your generated outfit result.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "matchId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "matchId",
    "requestId"
  ]
}
chic_list_daily_outfitsoutfits:read · Read

Browse Chic daily outfit recommendations and your favorites.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "category": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "favoritesOnly": {
      "type": "boolean"
    }
  },
  "required": []
}
chic_set_daily_outfit_favoriteoutfits:write · Write

Set your favorite status for a Chic daily outfit recommendation.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "recommendationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "isFavorite": {
      "type": "boolean"
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "recommendationId",
    "isFavorite",
    "requestId"
  ]
}
chic_browse_house_looksoutfits:read · Read

Browse curated Chic house looks by temperament and gender.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "temperament": {
      "type": "string",
      "enum": [
        "quiet",
        "elevated",
        "bold"
      ]
    },
    "gender": {
      "type": "string",
      "enum": [
        "woman",
        "man"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24
    }
  },
  "required": []
}
chic_get_house_lookoutfits:read · Read

Get a curated Chic house look, pieces and available refinements.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "lookId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    }
  },
  "required": [
    "lookId"
  ]
}
chic_get_outfit_briefoutfits:read · Read

Find curated Chic looks for an occasion and mood; no AI generation charge.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "occasion": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "temperament": {
      "type": "string",
      "enum": [
        "quiet",
        "elevated",
        "bold"
      ]
    },
    "gender": {
      "type": "string",
      "enum": [
        "woman",
        "man"
      ]
    },
    "excludeLookId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    }
  },
  "required": []
}
chic_save_house_lookoutfits:write · Write

Save a curated house look, optionally recording that you wore it.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "lookId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "occasion": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "wear": {
      "type": "boolean"
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "lookId",
    "requestId"
  ]
}
chic_list_saved_looksoutfits:read · Read

List your saved and worn curated house looks.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {},
  "required": []
}
chic_retry_outfitoutfits:write · Write

Retry an existing outfit only when chic_get_outfit reports canRetry. Reuses the frozen wardrobe selection and reserved allowance; never creates a replacement outfit.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "matchId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "matchId",
    "requestId"
  ]
}
chic_get_todays_lookoutfits:read · Read

Get the most recent valid look you wore or saved.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {},
  "required": []
}

Virtual try-on & personal models

chic_list_tryon_modelstryons:read · Read

List Chic built-in try-on models. Use chic_list_self_models for your own models.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {},
  "required": []
}
chic_list_self_modelstryons:read · Read

List your personal try-on models, including upload, analysis and transformation status.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    }
  },
  "required": []
}
chic_get_self_modeltryons:read · Read

Get your personal model status and a temporary preview.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "selfModelId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    }
  },
  "required": [
    "selfModelId"
  ]
}
chic_begin_self_model_uploadtryons:write · Write

Create a personal-model upload. Only upload a photo you have permission to use. PUT bytes to the returned signed URL, then complete the upload. Uses one image-upload quota; maximum 10 MiB.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "contentType": {
      "type": "string",
      "enum": [
        "image/jpeg",
        "image/png",
        "image/webp"
      ]
    },
    "fileSize": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10485760
    },
    "originalFileName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "contentType",
    "fileSize",
    "requestId"
  ]
}
chic_complete_self_model_uploadtryons:write · Write

Verify a successful personal-model PUT and queue safety analysis for a full-body photo. Set sourceType face only when you intend a later face-to-model transformation.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "selfModelId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "sourceType": {
      "type": "string",
      "enum": [
        "full_body",
        "face"
      ]
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "selfModelId",
    "sourceType",
    "requestId"
  ]
}
chic_transform_self_modeltryons:write · Write

Generate a full-body model from your uploaded face photo. Uses the existing backend image-credit policy and shares the image with the generation provider. Poll chic_get_self_model.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "selfModelId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "selfModelId",
    "requestId"
  ]
}
chic_delete_self_modeltryons:write · Write · Deletes content

Remove your personal try-on model from use. Existing backend performs a soft deletion.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "selfModelId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "selfModelId",
    "requestId"
  ]
}
chic_set_favorite_modeltryons:write · Write

Set a built-in or one of your approved personal models as your default try-on model.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "modelId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "modelId",
    "requestId"
  ]
}
chic_generate_tryontryons:write · Write

Try an owned wardrobe item or completed outfit on a built-in or your approved model. Uses your existing try-on allowance or Plus image credits. Both images are sent to the generation provider; returns a saved request ID to poll.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "sourceType": {
      "type": "string",
      "enum": [
        "wardrobe",
        "outfit"
      ]
    },
    "sourceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "modelId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "sourceType",
    "sourceId",
    "modelId",
    "requestId"
  ]
}
chic_get_tryontryons:read · Read

Get your try-on result status and a temporary image preview.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "tryOnId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    }
  },
  "required": [
    "tryOnId"
  ]
}
chic_list_tryonstryons:read · Read

List your try-on results, including failed and pending results.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    },
    "favoritesOnly": {
      "type": "boolean"
    }
  },
  "required": []
}
chic_set_tryon_favoritetryons:write · Write

Set the favorite status of your try-on result.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "tryOnId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "isFavorite": {
      "type": "boolean"
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "tryOnId",
    "isFavorite",
    "requestId"
  ]
}
chic_delete_tryontryons:write · Write · Deletes content

Delete your try-on result.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "tryOnId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "tryOnId",
    "requestId"
  ]
}

Your AI stylist

chic_ask_styliststylist:write · Write

Ask Chic for styling advice, optionally about up to five owned wardrobe/outfit IDs. Uses one AI-question quota and saves the conversation.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "question": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000
    },
    "context": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000
    },
    "imageIds": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128,
        "description": "An ID returned by a Chic tool."
      },
      "minItems": 1,
      "maxItems": 5,
      "uniqueItems": true
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "ro"
      ]
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "question",
    "requestId"
  ]
}
chic_list_stylist_conversationsstylist:read · Read

List your last 50 Chic stylist conversations.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {},
  "required": []
}

Image downloads

chic_export_imagemedia:export · Write

Create a watermarked export of your wardrobe image, generated outfit or try-on. Requires the existing premium download entitlement and creates a new stored download.

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "imageType": {
      "type": "string",
      "enum": [
        "gallery",
        "match",
        "try-on"
      ]
    },
    "imageId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "An ID returned by a Chic tool."
    },
    "requestId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "A unique request ID for this intended operation. Reuse only to retrieve the same operation; do not retry uncertain work with a new ID."
    }
  },
  "required": [
    "imageType",
    "imageId",
    "requestId"
  ]
}

04 · Common workflows

From a thought to an outfit.

Browse your wardrobe

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "chic_list_wardrobe",
    "arguments": {
      "limit": 20
    }
  }
}

Use the returned cursor for the next page. Image previews are temporary URLs; do not treat them as permanent public image links.

Find a piece online

Use chic_search_online_pieces with a search query and request ID to discover clothing beyond your wardrobe. Search calls an external provider and saves an account-owned result snapshot for 24 hours, so it requires wardrobe:write. To import a result, pass its returned searchId andresultId to chic_import_online_piece. Import uses your image-upload allowance once per new source and starts wardrobe analysis. Arbitrary image URLs are not accepted for import.

Upload a piece

Call chic_begin_wardrobe_upload with a JPEG, PNG, or WebP content type and file size, then PUT the image bytes to the returned signed URL using the exact required headers. Uploads are limited to 10 MiB and the signed PUT URL lasts 15 minutes. Call chic_complete_wardrobe_upload after a successful PUT, then poll chic_get_wardrobe_item for analysis. Do not put image bytes into JSON-RPC.

The signed upload binds both Content-Type and the declared Content-Length. Server clients send both returned headers and exactly that many bytes. In browser fetch, omit the forbidden Content-Length header and send an exact-size File, Blob, or ArrayBuffer; the browser supplies the length. Keep the returned Content-Type.

Generate and try on a look

Check chic_get_usage first. Choose analyzed wardrobe IDs, call chic_generate_outfit, and poll chic_get_outfit. When the outfit is complete, choose an approved model from chic_list_tryon_models or chic_list_self_models. Call chic_generate_tryon and poll chic_get_tryon. Each generation uses the existing allowance for that feature.

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "chic_generate_outfit",
    "arguments": {
      "requestId": "outfit-dinner-2026-09-19-001",
      "imageIds": [
        "<OWNED_ANALYZED_IMAGE_ID>"
      ],
      "description": "An outfit for a relaxed dinner"
    }
  }
}

Personal model uploads follow the same begin → PUT → complete flow. Use photos you have permission to use. A face photo must go through chic_transform_self_model before it can be used as a full-body try-on model.

Recover an existing result

When chic_get_outfit reports canRetry, use chic_retry_outfit with the original match ID to preserve its selected wardrobe and reserved allowance. For a look extraction, inspect chic_get_decomposition and call chic_resume_decomposition only whencanResume is true. It keeps the frozen piece list: pending pieces may use your allowance or Plus image credits, while already-generated pieces only retry delivery to storage. canResumeStoragemeans only storage delivery remains. Submitted or completed pieces are not regenerated. These explicit recovery actions do not justify repeating an uncertain original operation with a new request ID.

05 · Results & retries

Make every action intentional.

Every write requires a unique requestId of 1–128 characters. Reuse it only with the same tool and identical arguments to retrieve the same operation. The server retains the operation record for at least 90 days. If a request times out, do not submit it with a new ID; this can repeat an upload, generation, or charge against the allowance.

Write results contain operationId, tool, requestId, status, and a result when available. The operation status is running, completed, failed, or needs_review. Use chic_get_operation to inspect uncertain work with the original tool’s permission. A successful submission may still represent a pending image job; poll the matching get tool until the job reaches its final state.

Tool results use MCP text content containing JSON. An isError: true result requires attention; inspect its error code and operation status. needs_review means the outcome is uncertain and side effects may have occurred. Keep the original request ID and inspect the operation or contact support; do not report a definitive failure or automatically resubmit it. An HTTP 200 response alone does not prove that a tool succeeded. Inspect JSON-RPC errors too.

ResponseClient behavior
401 / UNAUTHORIZEDAsk the user to create a valid token or reconnect.
403 / Origin rejectedAsk the operator to configure the browser client’s exact origin.
FORBIDDEN (tool error)Use a token with the required scope; never silently broaden permissions.
429 / RATE_LIMITEDRespect Retry-After. The limit is 60 requests per token per minute.
INVALID_ARGUMENTCorrect the arguments against the tool schema.
Quota or entitlement errorShow the account limitation and stop the paid action.
running / needs_reviewCheck the existing operation and job status. An uncertain outcome is not a confirmed failure; do not create a new request ID.

Requests are limited to 64 KiB. Ask the user before deletion, generation that uses their allowance, or exporting images. Destructive and external-service tool annotations help clients make these actions visible.

06 · Privacy & support

A connection you remain in control of.

Tokens are stored as SHA-256 digests by the backend; the raw value is shown only when created. Keep it in your MCP client’s private credential storage. Never add tokens to prompts, public documents, source control, URLs, or analytics.

Using a connector shares the requested account data with the assistant you choose. Generating outfits, try-ons, personal models, and extracted items sends the relevant images to Chic’s existing processing providers. Styling requests may include your question and selected image context. Existing subscription limits and download entitlements apply.

Online discovery shares your search query with the existing search provider. Importing a chosen result downloads its image from the source website into your account for analysis. Search-result previews and source links are external content, not instructions for your assistant.

Review our privacy policy and terms. For integration help, contact contact@chic-stylist.com. Include the tool name and error code, never your token or private image URLs.