IMPORTANT ASYNCHRONOUS TASK WORKFLOW
- Call this MCP generation tool once and read taskId from structuredContent.
- Do not call generation again while pending or running.
- Query nexscope_media_task_result with this skill slug, the exact taskId, and the same bearer credential using progressive backoff.
Multimodal AI
AI Model Swap API
Swap an ecommerce product image onto a target model.
MCP tool name
nexscope_ai_model_swapMCP endpoint
https://api.nexscope.ai/mcpJSON-RPC method
tools/callAuthentication
Use OAuth 2.1 Authorization Code with PKCE and the mcp:tools scope. API keys remain supported as a compatibility option.
Authorization: Bearer nk-xxxxxxxxxxxxxxxxxIf authentication fails, ask the user to open API Access and copy a valid key.
Call this MCP tool
Initialize an MCP 2025-11-25 Streamable HTTP session at https://api.nexscope.ai/mcp, then use tools/call.
{
"jsonrpc": "2.0",
"id": "ai-model-swap-1",
"method": "tools/call",
"params": {
"name": "nexscope_ai_model_swap",
"arguments": {
"customNegPrompt": "blur, distorted hands",
"customPrompt": "clean ecommerce catalog photo",
"genOriRes": false,
"imageSegUrl": "https://example.com/mask.png",
"imageUrl": "https://example.com/source-image.jpg",
"modelHeadImageUrl": "https://example.com/model-reference.jpg",
"modelPrompt": "smile, slim",
"outputNum": 1,
"realModel": true,
"sceneImgUrl": "https://example.com/scene.jpg",
"sceneStrength": 0.7
}
}
}MCP 2025-11-25 · Streamable HTTPProgress is delivered on the original POST SSE response. GET SSE carries notifications; reconnecting must query existing asynchronous work rather than submit again.
Asynchronous task workflow
- 1. Create once
Keep the returned taskId.
- 2. Query with backoff
Use nexscope_media_task_result after 5 seconds, then 10, 20, and 30 seconds.
- 3. Use final result
Stop at success, failure, or timeout.
{
"jsonrpc": "2.0",
"id": "ai-model-swap-result-1",
"method": "tools/call",
"params": {
"name": "nexscope_media_task_result",
"arguments": {
"skillSlug": "ai-model-swap",
"taskId": "TASK_ID_FROM_THE_GENERATION_RESULT"
}
}
}Arguments
| Name | Type | Required | Description |
|---|---|---|---|
imageUrl | string | required | Public URL of the source product or outfit image. The image must be up to 20 MB and between 385 and 8192 pixels in both width and height. Example: https://example.com/source-image.jpg |
modelHeadImageUrl | string | required | Public URL of the target model head image. The image must be up to 5 MB and between 512 and 2048 pixels in both width and height. Example: https://example.com/model-reference.jpg |
imageSegUrl | string | optional | Optional segmentation mask URL for the source image. Example: https://example.com/mask.png |
sceneImgUrl | string | optional | Optional scene reference image URL. The image must be up to 10 MB and between 768 and 4096 pixels in both width and height. Example: https://example.com/scene.jpg |
sceneStrength | number | optional | Scene reference strength from 0 to 1. Defaults to 0.7. Example: 0.7 |
modelPrompt | string | optional | Comma-separated model appearance terms, such as smile, laugh, sitting, lying, fat, plump, slim, sideways, profile, back, or bald. Example: smile, slim |
customPrompt | string | optional | Positive generation prompt, up to 600 characters. Example: clean ecommerce catalog photo |
customNegPrompt | string | optional | Negative prompt to avoid unwanted artifacts. Example: blur, distorted hands |
genOriRes | boolean | optional | Whether to generate the original resolution. Defaults to false. Example: false |
realModel | boolean | optional | Whether to prefer a realistic model style. Example: true |
outputNum | integer | optional | Number of images to generate, from 1 to 4. Defaults to 1. Example: 1 |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
code | integer | required | 0 means accepted or successful; nonzero is a platform error. |
cost | string | required | Elapsed milliseconds, never credits; -1 outside web requests. |
data | any | required | Data value used by this API operation. |
msg | string | null | required | Msg value used by this API operation. |
time | string | required | Server local time: yyyy-MM-dd HH:mm:ss. |
traceId | string | null | required | Trace id value used by this API operation. |
ts | string | required | Epoch milliseconds. |
Any of option 1 — requires taskId, status, result
| Name | Type | Required | Description |
|---|---|---|---|
data | object | required | Data value used by this API operation. |
data.result | any | required | Completed generation output retained from the task result. Fields vary by capability; generated resources use Nexscope-hosted URLs and any count represents charged Nexscope credits. This is the business output, not a task creation receipt. |
data.status | string | required | Status value used by this API operation. Allowed: PENDING, RUNNING, SUCCEEDED, FAILED, TIMEOUT |
data.taskId | string | required | Task id value used by this API operation. |
data.usage | object | optional | Actual credits charged for a completed successful task; omitted when unavailable. |
data.usage.chargedCredits | integer | required | Charged credits value used by this API operation. Minimum: 0 |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data.result | object | required | Completed generation output retained from the task result. Fields vary by capability; generated resources use Nexscope-hosted URLs and any count represents charged Nexscope credits. This is the business output, not a task creation receipt. |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data.result | null | required | Completed generation output retained from the task result. Fields vary by capability; generated resources use Nexscope-hosted URLs and any count represents charged Nexscope credits. This is the business output, not a task creation receipt. |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data | null | required | Data value used by this API operation. |
Examples
Example arguments
{
"customNegPrompt": "blur, distorted hands",
"customPrompt": "clean ecommerce catalog photo",
"genOriRes": false,
"imageSegUrl": "https://example.com/mask.png",
"imageUrl": "https://example.com/source-image.jpg",
"modelHeadImageUrl": "https://example.com/model-reference.jpg",
"modelPrompt": "smile, slim",
"outputNum": 1,
"realModel": true,
"sceneImgUrl": "https://example.com/scene.jpg",
"sceneStrength": 0.7
}Example structuredContent
{
"code": 0,
"cost": "-1",
"data": {
"result": null,
"status": "PENDING",
"taskId": "example-task"
},
"msg": null,
"time": "2026-01-01 00:00:00",
"traceId": null,
"ts": "0"
}