IMPORTANT ASYNCHRONOUS TASK WORKFLOW
- Call this MCP generation tool once and read taskId from structuredContent.
- Do not call the generation tool again while the task is PENDING or RUNNING.
- Wait at least 5 seconds, then call nexscope_media_task_result with skillSlug set to ai-product-marketing-image-set-v4, the exact taskId, and the same bearer API key. While the task remains PENDING or RUNNING, use 5, 10, 20, and 30-second progressive backoff. Never query more often than once every 5 seconds.
- Stop querying when the task succeeds or fails. On success, return the final Nexscope resource URLs and the returned count as the actual charged credits.
- Never invent a taskId and never expose internal provider names or provider resource URLs.
Multimodal AI
AI Product Marketing Image Set API v4 MCP Tool
Create ecommerce product marketing materials such as selling-point images and A+ style visuals from product images and brief inputs.
MCP tool name
nexscope_ai_product_marketing_image_set_v4Equivalent REST API path
https://api.nexscope.ai/api/skill-api/v1/skills/ai-product-marketing-image-set-v4/runJSON-RPC method
tools/callAuthentication
Send the user API key as a bearer token on every MCP JSON-RPC request.
Authorization: Bearer nk_xxxxxxxxxxxxxxxxxIf authentication is missing or invalid, ask the user to open API Access and copy a valid key before calling this tool.
Call this MCP tool
Use tools/call with the MCP tool name below. The arguments object should match the table on this page.
{
"jsonrpc": "2.0",
"id": "ai-product-marketing-image-set-v4-1",
"method": "tools/call",
"params": {
"name": "nexscope_ai_product_marketing_image_set_v4",
"arguments": {
"imageList": [
"https://example.com/product.jpg"
],
"provider": "BANANA_2",
"sellerPoint": "Shockproof, slim, clear phone case",
"isExtractPrePoint": false,
"resolution": "2K",
"aspectRatio": "1:1",
"noText": false,
"brandKey": "{\"brandColor\":\"#0775FA\",\"fontStyle\":\"sans serif\",\"salesRegion\":\"North America\",\"language\":\"English\",\"platform\":\"Amazon\"}",
"quality": "medium",
"sensitiveLibraryId": 1001,
"replaceLibraryId": 1002,
"aPlusNum": 0,
"aPlusProNum": 0,
"aPlusHasPhone": false,
"aPlusAspectRatio": "1:1",
"sellerTypeNum": 0,
"sceneTypeNum": 0,
"closeUpTypeNum": 0,
"closeUpWhiteTypeNum": 0,
"whiteBgTypeNum": 0,
"aPlusStyles": [
{
"id": 1
},
{
"prompt": "clean premium layout"
}
],
"pointStyles": [
{
"id": 2
},
{
"prompt": "minimal feature callouts"
}
]
}
}
}REST API equivalent
POST https://api.nexscope.ai/api/skill-api/v1/skills/ai-product-marketing-image-set-v4/runCanonical detail URL
https://www.nexscope.ai/mcp-map/ai-product-marketing-image-set-v4Asynchronous task workflow
This capability uses a create-and-query flow. Creating the task and retrieving its final generated resources are two connected requests.
- 1. Create onceCall the MCP tool once and keep the returned
taskId. - 2. Query with backoffCall
nexscope_media_task_resultwith this skill slug and task ID. Wait at least 5 seconds first; while pending or running, back off at 5, 10, 20, then 30-second intervals. - 3. Use final resultStop at a terminal status. Successful results contain Nexscope resource URLs and the actual charged-credit count.
MCP task result call
{
"jsonrpc": "2.0",
"id": "ai-product-marketing-image-set-v4-result-1",
"method": "tools/call",
"params": {
"name": "nexscope_media_task_result",
"arguments": {
"skillSlug": "ai-product-marketing-image-set-v4",
"taskId": "TASK_ID_FROM_THE_GENERATION_RESULT"
}
}
}REST fallback
GET https://api.nexscope.ai/api/skill-api/v1/skills/ai-product-marketing-image-set-v4/tasks/{taskId}Arguments
| Name | Type | Required | Meaning |
|---|---|---|---|
imageList | array | required | Public product image URLs. Provide no more than 5 JPG, JPEG, PNG, or WEBP images; each image must be at most 10 MB and between 800 and 4096 pixels. Example: [
"https://example.com/product.jpg"
] |
provider | string | optional | Image model. Defaults to BANANA_2. Available options
Example: BANANA_2 |
sellerPoint | string | optional | Product selling points, up to 2500 characters. Required when isExtractPrePoint is false. Example: Shockproof, slim, clear phone case |
isExtractPrePoint | boolean | optional | Whether to automatically extract selling points. Defaults to false. When false, sellerPoint is required. Example: false |
resolution | string | optional | Target resolution supported by the selected provider. Example: 2K |
aspectRatio | string | optional | Target aspect ratio supported by the selected provider. Example: 1:1 |
noText | boolean | optional | Whether generated images should avoid text. Example: false |
brandKey | string | optional | Optional brand information serialized as a JSON string. Supported keys: brandColor, fontStyle, salesRegion, language, platform, customSettings. Example: {"brandColor":"#0775FA","fontStyle":"sans serif","salesRegion":"North America","language":"English","platform":"Amazon"} |
quality | string | optional | GPT Image quality only. Available options
Example: medium |
sensitiveLibraryId | integer | optional | Optional sensitive-word library ID used to screen generated copy. Example: 1001 |
replaceLibraryId | integer | optional | Optional replacement-word library ID used to rewrite generated copy. Example: 1002 |
aPlusNum | integer | optional | Number of standard A+ images, from 0 to 12. Defaults to 0. Example: 0 |
aPlusProNum | integer | optional | Number of premium A+ images, from 0 to 12. Defaults to 0. Example: 0 |
aPlusHasPhone | boolean | optional | Whether A+ output includes phone display layouts. Example: false |
aPlusAspectRatio | string | optional | Premium A+ aspect ratio. Available options
Example: 1:1 |
sellerTypeNum | integer | optional | Number of selling-point images, from 0 to 12. Defaults to 0. Example: 0 |
sceneTypeNum | integer | optional | Number of scene images, from 0 to 12. Defaults to 0. Example: 0 |
closeUpTypeNum | integer | optional | Number of close-up images, from 0 to 12. Defaults to 0. Example: 0 |
closeUpWhiteTypeNum | integer | optional | Number of white-background close-up images, from 0 to 12. Defaults to 0. Example: 0 |
whiteBgTypeNum | integer | optional | Number of white-background images, from 0 to 12. Defaults to 0. Example: 0 |
aPlusStyles | array | optional | Optional A+ style entries. Each item may contain a saved style id or a custom prompt. Example: [
{
"id": 1
},
{
"prompt": "clean premium layout"
}
] |
pointStyles | array | optional | Optional selling-point style entries. Each item may contain a saved style id or a custom prompt. Example: [
{
"id": 2
},
{
"prompt": "minimal feature callouts"
}
] |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Meaning |
|---|---|---|---|
taskId | string | required | Nexscope asynchronous task id used to query the generation result. Example: 6b3f1c61-1b7d-4a59-8a7d-3b23e4b0c9e2 |
status | string | required | Task status. Initial run returns PENDING; the query endpoint may return PENDING, RUNNING, SUCCESS, FAILED, or TIMEOUT. Example: PENDING |
message | string | optional | User-facing task state message. Example: The task has been created. Use taskId to query the result. |
errcode | integer | optional | Upstream status code returned by the provider. Example: {} |
errmsg | string | optional | Upstream status message returned by the provider. Example: {} |
code | string | optional | Provider-specific status code. Example: {} |
msg | string | optional | Provider-specific status message. Example: {} |
type | string | optional | Provider-specific render or payload type. Example: {} |
title | string | optional | Provider-specific response title. Example: {} |
sourceType | string | optional | Provider-specific source platform type. Example: {} |
sourceTool | string | optional | Provider-specific source tool name. Example: {} |
costToken | integer | optional | Token cost reported by the upstream provider. Example: {} |
costTime | integer | optional | Execution time reported by the upstream provider. Example: {} |
page | integer | optional | Current page returned by the upstream provider. Example: {} |
pageSize | integer | optional | Page size returned by the upstream provider. Example: {} |
pageItemCount | integer | optional | Item count on the current page returned by the upstream provider. Example: {} |
totalPage | integer | optional | Total page count returned by the upstream provider. Example: {} |
dataSnapshotMonth | string | optional | Data snapshot month returned by the upstream provider. Example: {} |
Examples
Example arguments
{
"imageList": [
"https://example.com/product.jpg"
],
"provider": "BANANA_2",
"sellerPoint": "Shockproof, slim, clear phone case",
"isExtractPrePoint": false,
"resolution": "2K",
"aspectRatio": "1:1",
"noText": false,
"brandKey": "{\"brandColor\":\"#0775FA\",\"fontStyle\":\"sans serif\",\"salesRegion\":\"North America\",\"language\":\"English\",\"platform\":\"Amazon\"}",
"quality": "medium",
"sensitiveLibraryId": 1001,
"replaceLibraryId": 1002,
"aPlusNum": 0,
"aPlusProNum": 0,
"aPlusHasPhone": false,
"aPlusAspectRatio": "1:1",
"sellerTypeNum": 0,
"sceneTypeNum": 0,
"closeUpTypeNum": 0,
"closeUpWhiteTypeNum": 0,
"whiteBgTypeNum": 0,
"aPlusStyles": [
{
"id": 1
},
{
"prompt": "clean premium layout"
}
],
"pointStyles": [
{
"id": 2
},
{
"prompt": "minimal feature callouts"
}
]
}Example structuredContent
{
"taskId": "6b3f1c61-1b7d-4a59-8a7d-3b23e4b0c9e2",
"status": "PENDING",
"message": "The task has been created. Use taskId to query the result."
}