{"serverId":"mcp-registry/com.makeupar/creators","tools":[{"name":"AI-Face-Swap","fixed":{"name":"AI-Face-Swap","description":"Using AI Face Swap for hyper-realistic effect with multiple faces supported. Our face swap artificial intelligence supports swapping one or multiple faces. Either for creating funny pictures of faces, or need a professional tool, we've got you covered.","inputSchema":{"type":"object","required":["request"],"properties":{"polling":{"type":"boolean","default":true,"description":"If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish."},"request":{"anyOf":[{"type":"object","required":["face_mapping","src_file_url","ref_file_urls"],"properties":{"face_mapping":{"type":"array","items":{"type":"object","properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The index of reference image"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The index of face on the target image. The index is from faces of detection result."}}},"description":"The designated ref image id and face position information to be swapped for each detected face on target image.\n\nLogic Rules\n  1.  Index Mapping: The `index` maps directly to the order of images provided in your reference list.\n  2.  Skipping Swaps: To skip swapping a specific face detected in the source, set both `index` and `position` to `-1`.\n  3.  Array Order: The order of objects in the array should match based on `position`.\n\n\nExample Use Case\n\nScenario:\n  Reference List: 2 images provided (Image A, Image B).\n  Source Image: Contains 3 faces detected (Face 0, Face 1, Face 2).\n\n\nGoal:\n  Swap Face 0 (Source) with Image 1 (Reference).\n  Skip swapping Face 1 (Source).\n  Swap Face 2 (Source) with Image 0 (Reference).\n\n\nConfiguration:\n  \"face_mapping\": [\n      {\n          \"index\": 1,  // Use the second reference image\n          \"position\": 0 // Apply to the first detected face in source\n      },\n      {\n          \"index\": -1, // Skip swapping\n          \"position\": -1 // Skip swapping\n      },\n      {\n          \"index\": 0,  // Use the first reference image\n          \"position\": 2 // Apply to the third detected face in source\n      }\n  ]\n"},"src_file_url":{"type":"string","examples":["https://example.com/selfie.jpg"],"description":"Url of the file to run task. The url should be publicly accessible."},"ref_file_urls":{"type":"array","items":{"type":"string"},"minItems":1}}},{"type":"object","required":["face_mapping","src_file_url","ref_file_ids"],"properties":{"face_mapping":{"type":"array","items":{"type":"object","properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The index of reference image"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The index of face on the target image. The index is from faces of detection result."}}},"description":"The designated ref image id and face position information to be swapped for each detected face on target image.\n\nLogic Rules\n  1.  Index Mapping: The `index` maps directly to the order of images provided in your reference list.\n  2.  Skipping Swaps: To skip swapping a specific face detected in the source, set both `index` and `position` to `-1`.\n  3.  Array Order: The order of objects in the array should match based on `position`.\n\n\nExample Use Case\n\nScenario:\n  Reference List: 2 images provided (Image A, Image B).\n  Source Image: Contains 3 faces detected (Face 0, Face 1, Face 2).\n\n\nGoal:\n  Swap Face 0 (Source) with Image 1 (Reference).\n  Skip swapping Face 1 (Source).\n  Swap Face 2 (Source) with Image 0 (Reference).\n\n\nConfiguration:\n  \"face_mapping\": [\n      {\n          \"index\": 1,  // Use the second reference image\n          \"position\": 0 // Apply to the first detected face in source\n      },\n      {\n          \"index\": -1, // Skip swapping\n          \"position\": -1 // Skip swapping\n      },\n      {\n          \"index\": 0,  // Use the first reference image\n          \"position\": 2 // Apply to the third detected face in source\n      }\n  ]\n"},"ref_file_ids":{"type":"array","items":{"type":"string"},"minItems":1},"src_file_url":{"type":"string","examples":["https://example.com/selfie.jpg"],"description":"Url of the file to run task. The url should be publicly accessible."}}},{"type":"object","required":["face_mapping","src_file_id","ref_file_urls"],"properties":{"src_file_id":{"type":"string","examples":["pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE="],"description":"ID of file to run task. File ID from upload file API."},"face_mapping":{"type":"array","items":{"type":"object","properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The index of reference image"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The index of face on the target image. The index is from faces of detection result."}}},"description":"The designated ref image id and face position information to be swapped for each detected face on target image.\n\nLogic Rules\n  1.  Index Mapping: The `index` maps directly to the order of images provided in your reference list.\n  2.  Skipping Swaps: To skip swapping a specific face detected in the source, set both `index` and `position` to `-1`.\n  3.  Array Order: The order of objects in the array should match based on `position`.\n\n\nExample Use Case\n\nScenario:\n  Reference List: 2 images provided (Image A, Image B).\n  Source Image: Contains 3 faces detected (Face 0, Face 1, Face 2).\n\n\nGoal:\n  Swap Face 0 (Source) with Image 1 (Reference).\n  Skip swapping Face 1 (Source).\n  Swap Face 2 (Source) with Image 0 (Reference).\n\n\nConfiguration:\n  \"face_mapping\": [\n      {\n          \"index\": 1,  // Use the second reference image\n          \"position\": 0 // Apply to the first detected face in source\n      },\n      {\n          \"index\": -1, // Skip swapping\n          \"position\": -1 // Skip swapping\n      },\n      {\n          \"index\": 0,  // Use the first reference image\n          \"position\": 2 // Apply to the third detected face in source\n      }\n  ]\n"},"ref_file_urls":{"type":"array","items":{"type":"string"},"minItems":1}}},{"type":"object","required":["face_mapping","src_file_id","ref_file_ids"],"properties":{"src_file_id":{"type":"string","examples":["pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE="],"description":"ID of file to run task. File ID from upload file API."},"face_mapping":{"type":"array","items":{"type":"object","properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The index of reference image"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The index of face on the target image. The index is from faces of detection result."}}},"description":"The designated ref image id and face position information to be swapped for each detected face on target image.\n\nLogic Rules\n  1.  Index Mapping: The `index` maps directly to the order of images provided in your reference list.\n  2.  Skipping Swaps: To skip swapping a specific face detected in the source, set both `index` and `position` to `-1`.\n  3.  Array Order: The order of objects in the array should match based on `position`.\n\n\nExample Use Case\n\nScenario:\n  Reference List: 2 images provided (Image A, Image B).\n  Source Image: Contains 3 faces detected (Face 0, Face 1, Face 2).\n\n\nGoal:\n  Swap Face 0 (Source) with Image 1 (Reference).\n  Skip swapping Face 1 (Source).\n  Swap Face 2 (Source) with Image 0 (Reference).\n\n\nConfiguration:\n  \"face_mapping\": [\n      {\n          \"index\": 1,  // Use the second reference image\n          \"position\": 0 // Apply to the first detected face in source\n      },\n      {\n          \"index\": -1, // Skip swapping\n          \"position\": -1 // Skip swapping\n      },\n      {\n          \"index\": 0,  // Use the first reference image\n          \"position\": 2 // Apply to the third detected face in source\n      }\n  ]\n"},"ref_file_ids":{"type":"array","items":{"type":"string"},"minItems":1}}}]}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"title":"Ai Face Swap"},"changes":[{"kind":"safety","detail":"Removed invisible/control characters from the description."}],"tokensBefore":2294,"tokensAfter":2294},{"name":"AI-Replace","fixed":{"name":"AI-Replace","description":"Replace unwanted elements with new objects using AI Replace. By using this API, you can instantly remove unwanted object from your photo and replace it with a new one just by using text. Eliminate anything from bags to cars and beyond.\nSample:\nFor content creators aiming to perfect their social media presence, AI Replace offers a hassle-free way to polish travel photos or promotional images. Remove and replace elements with ease, ensuring your content stands out.\nCreate stunning room mockups wi","inputSchema":{"type":"object","required":["request"],"properties":{"polling":{"type":"boolean","default":true,"description":"If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish."},"request":{"anyOf":[{"type":"object","required":["prompt","src_file_url","msk_file_url"],"properties":{"prompt":{"type":"string","examples":["a cute cat"],"description":"Prompt for generating objects in the masked area."},"msk_file_url":{"type":"string","examples":["https://example.com/mask.jpg"],"description":"URL of the mask file. This should be a grey scale mask image with the exact same width and height with the input source file where white pixels indicate foreground and black pixels represent background. The URL should be publicly accessible."},"src_file_url":{"type":"string","examples":["https://example.com/selfie.jpg"],"description":"Url of the file to run task. The url should be publicly accessible."}}},{"type":"object","required":["prompt","src_file_url","msk_file_id"],"properties":{"prompt":{"type":"string","examples":["a cute cat"],"description":"Prompt for generating objects in the masked area."},"msk_file_id":{"type":"string","examples":["eA1CCL3kG4w2s0kpbo2pkah59VfxzIjxahJD2wWm7zw="],"description":"ID of the mask file. This should be a grey scale mask image with the exact same width and height with the input source file where white pixels indicate foreground and black pixels represent background. File ID from upload file API."},"src_file_url":{"type":"string","examples":["https://example.com/selfie.jpg"],"description":"Url of the file to run task. The url should be publicly accessible."}}},{"type":"object","required":["prompt","src_file_id","msk_file_url"],"properties":{"prompt":{"type":"string","examples":["a cute cat"],"description":"Prompt for generating objects in the masked area."},"src_file_id":{"type":"string","examples":["pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE="],"description":"ID of file to run task. File ID from upload file API."},"msk_file_url":{"type":"string","examples":["https://example.com/mask.jpg"],"description":"URL of the mask file. This should be a grey scale mask image with the exact same width and height with the input source file where white pixels indicate foreground and black pixels represent background. The URL should be publicly accessible."}}},{"type":"object","required":["prompt","src_file_id","msk_file_id"],"properties":{"prompt":{"type":"string","examples":["a cute cat"],"description":"Prompt for generating objects in the masked area."},"msk_file_id":{"type":"string","examples":["eA1CCL3kG4w2s0kpbo2pkah59VfxzIjxahJD2wWm7zw="],"description":"ID of the mask file. This should be a grey scale mask image with the exact same width and height with the input source file where white pixels indicate foreground and black pixels represent background. File ID from upload file API."},"src_file_id":{"type":"string","examples":["pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE="],"description":"ID of file to run task. File ID from upload file API."}}}]}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"title":"Ai Replace"},"changes":[{"kind":"safety","detail":"Removed invisible/control characters from the description."}],"tokensBefore":1025,"tokensAfter":1025},{"name":"AI-Studio-Generator","fixed":{"name":"AI-Studio-Generator","description":"Embrace the excellence of studio kike AI Portrait Generator. Transform your selfie into a studio-quality portrait in a flash.\n* Studio-Free Convenience: No need for a photographer or studio visits—create studio-quality artistic photos anytime, anywhere\n* Quick Photo Transformation: Fast processing for instant high-quality artistic photo results, ideal for quick updates\n* High-Quality Artistic Output: Delivers professional-standard artistic photos with clear details, perfect lighting, just like","inputSchema":{"type":"object","required":["request"],"properties":{"polling":{"type":"boolean","default":true,"description":"If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish."},"request":{"anyOf":[{"type":"object","required":["template_id","output_count","src_file_url"],"properties":{"template_id":{"type":"string","examples":["good_template_001"],"description":"ID of the template. List predefined templates first, and use the id of a template."},"output_count":{"type":"integer","maximum":200,"minimum":1,"examples":[20],"description":"The number of generated images. It must be between 1 to 200."},"src_file_url":{"type":"string","examples":["https://example.com/selfie.jpg"],"description":"Url of the file to run task. The url should be publicly accessible."}}},{"type":"object","required":["template_id","output_count","src_file_id"],"properties":{"src_file_id":{"type":"string","examples":["pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE="],"description":"ID of file to run task. File ID from upload file API."},"template_id":{"type":"string","examples":["good_template_001"],"description":"ID of the template. List predefined templates first, and use the id of a template."},"output_count":{"type":"integer","maximum":200,"minimum":1,"examples":[20],"description":"The number of generated images. It must be between 1 to 200."}}}]}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"openWorldHint":true,"idempotentHint":false,"destructiveHint":false},"title":"Ai Studio Generator"},"changes":[{"kind":"safety","detail":"Removed invisible/control characters from the description."}],"tokensBefore":562,"tokensAfter":562},{"name":"File-Upload","fixed":{"name":"File-Upload","description":"Interactive drag-and-drop widget for uploading images (JPEG, PNG) or videos (MP4). Returns file IDs for YouCam AI tools (AI-Fabric, AI-Cloth, AI-Makeup-Vto, AI-Hairstyle-Generator, AI-Skin-Analysis, etc.). /n Use when the user wants to upload or select an image/video (e.g. upload, drag & drop, choose file, pick image/video), or before any AI-* tool requiring src_file_id or ref_file_id when no file ID or URL is available. /n Also use as the mandatory fallback whenever Get-Upload-API-Info cannot c","inputSchema":{"type":"object","properties":{"task_type":{"anyOf":[{"enum":["AI-Bracelet-Virtual-Try-On","AI-Earrings-Virtual-Try-On","AI-Necklace-Virtual-Try-On","AI-Ring-Virtual-Try-On","AI-Watch-Virtual-Try-On","AI-Abs-Filter","AI-Aging-Simulation","AI-Avatar-Generator","AI-Nail-Transfer","AI-Smile","AI-Studio-Generator","AI-Bag-Virtual-Try-On","AI-Beard-Style-Generator","AI-Photo-Background-Blur","AI-Photo-Background-Change","AI-Video-Background-Replace","AI-Body-Reshape","AI-Breast-Augmentation-Simulator","AI-Clothes-Virtual-Try-On","AI-Photo-Colorize","AI-Color-Correction","AI-Photo-Enhance","AI-Eye-Color-Lens-Virtual-Try-On","AI-Fabric-Virtual-Try-On","AI-Face-Attributes-and-Ratio-Analyzer","AI-Face-Lift","AI-Face-Reshape","AI-Face-Swap","AI-Video-Face-Swap","AI-Fitzpatrick-Skin-Type-Analysis","AI-Object-Removal-Pro","AI-Bangs-Filter-Virtual-Try-On","AI-Hair-Color-Virtual-Try-On","AI-Wavy-Hair-Virtual-Try-On","AI-Hair-Density-Detection","AI-Hair-Extension-Virtual-Try-On","AI-Hair-Frizziness-Detection","AI-Hair-Length-Detection","AI-Hair-Style-Virtual-Try-On","AI-Hair-Type-Detection","AI-Hair-Volume-Virtual-Try-On","AI-Hat-Virtual-Try-On","AI-Headshot-Generator","AI-Image-Generator-Image-to-Image","AI-Video-Generator-Image-to-Video","AI-Photo-Lighting","AI-Look-Virtual-Try-On","AI-Makeup-Virtual-Try-On","AI-Makeup-Transfer","AI-Nail-Virtual-Try-On","AI-Video-Object-Removal","AI-Replace","AI-Image-Extender","AI-Scarf-Virtual-Try-On","AI-Shoes-Virtual-Try-On","AI-Skin-Analysis","AI-Skin-simulation","AI-Facial-Color-Tones-Analyzer","AI-Photo-Background-Removal","AI-Teeth-Whitening","AI-Image-Generator-Text-to-Image","AI-Video-Generator-Text-to-Video","AI-Video-Enhancer","AI-Video-Style-Transfer","AI-Watermark-Removal"],"type":"string"},{"type":"null"}],"default":null,"description":"Pre-select a task type. If omitted, the user picks one from the dropdown."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"File upload"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":684,"tokensAfter":684},{"name":"upload_file","fixed":{"name":"upload_file","description":"Upload base64-encoded media files to the YouCam API and return file_id(s).\n\nIf task_type is omitted, files are uploaded via the generic file API\n(POST /s2s/v2.0/file) rather than a task-specific upload path.","inputSchema":{"type":"object","required":["files","task_type"],"properties":{"files":{"type":"array","items":{"type":"object","additionalProperties":true}},"task_type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138}],"toolsChanged":5,"tokensSaved":0,"todo":[{"tool":"AI-Avatar-Generator","params":["request"]},{"tool":"AI-Color-Correction","params":["request"]},{"tool":"AI-Face-Swap","params":["request"]},{"tool":"AI-Face-Swap-Face-Detection","params":["request"]},{"tool":"AI-Headshot-Generator","params":["request"]},{"tool":"AI-Image-Extender","params":["request"]},{"tool":"AI-Image-Generator-Image-to-Image","params":["request"]},{"tool":"AI-Image-Generator-Text-to-Image","params":["request"]},{"tool":"AI-Object-Removal-Pro","params":["request"]},{"tool":"AI-Photo-Background-Blur","params":["request"]},{"tool":"AI-Photo-Background-Change","params":["request"]},{"tool":"AI-Photo-Background-Removal","params":["request"]},{"tool":"AI-Photo-Colorize","params":["request"]},{"tool":"AI-Photo-Enhance","params":["request"]},{"tool":"AI-Photo-Lighting","params":["request"]},{"tool":"AI-Replace","params":["request"]},{"tool":"AI-Studio-Generator","params":["request"]},{"tool":"AI-Video-Background-Replace","params":["request"]},{"tool":"AI-Video-Enhancer","params":["request"]},{"tool":"AI-Video-Face-Swap","params":["request"]},{"tool":"AI-Video-Generator-Image-to-Video","params":["request"]},{"tool":"AI-Video-Generator-Text-to-Video","params":["request"]},{"tool":"AI-Video-Object-Removal","params":["request"]},{"tool":"AI-Video-Style-Transfer","params":["request"]},{"tool":"AI-Watermark-Removal","params":["request"]},{"tool":"Get-Feature-Cost","params":["request"]},{"tool":"Get-Unit-History","params":["request"]},{"tool":"upload_file","params":["files","task_type"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}