Manage Smart Campaign Draft Creative
dynamoi_manage_smart_campaign_creativeUse save_setup with setupSave={playLinkId, appleMusicUrl?} and a stable UUID-v4 setupRequestId per setup flow; reuse it on retries, and start a new flow for different content. It returns setupDraft. Use read_budget for budgetDraft and save_budget with budgetSave={campaignId, expectedUpdatedAt, budgetAmountCents, budgetAmountMinor?, currency?, budgetType:DAILY|TOTAL, endDate:YYYY-MM-DD|null}. Amounts are exact minor units in the artist currency; use the budget policy from read_budget. Setup and budget saves only edit drafts and never launch or charge. Use read_location to read native draft targeting and save_location with locationSave={campaignId, expectedUpdatedAt, targeting:{mode:WORLDWIDE}|{mode:INCLUDE,countryCodes:[US]}} to save it. Read locationDraft first for the current revision; both location actions return locationDraft. Read generation progress, generated creatives and current selection with action=read. To discover owned social posts, explicitly add catalog={source:facebook|instagram,limit:1..25,after?:nextCursor}. Only requested catalog reads fetch connected-account posts; use catalog.items[].id directly in selectedSocialPosts. Pass nextCursor as after for another page. Catalog reads never alter selections, token state, or campaigns; provider failure is an error, and selection revalidates ownership. Use start_generation, retry_generation or clear_generation with campaignId and expectedUpdatedAt from read. Generation runs asynchronously; poll with read. Use source_audio_upload_status or abort_source_audio_upload with campaignId, expectedUpdatedAt, uploadId and uploadSessionId to inspect uploaded parts or abort the direct upload. Agents never approve or submit. Use action=select with campaignId and expectedUpdatedAt from read, source=generate|posts|upload, and selectedCreativeIds, selectedSocialPosts (owned META:post IDs), or uploadedAssets=[{mediaAssetId}] from dynamoi_list_media_assets. Omit selectedCreativeIds for social or uploaded media. Uploaded metadata is resolved by the server; only owned, moderation-approved uploads can be selected. Selection never attests artist approval and never submits the campaign. Upload private JPEG/PNG/MP4 campaign media (1 GiB maximum) with start_media_upload, campaignId, expectedUpdatedAt and mediaUpload={assetId:UUID,fileName,fileSizeBytes,contentType}. Retain the returned key/uploadId and PUT each presigned part URL. Complete with complete_media_upload, a freshly inspected expectedUpdatedAt, and mediaUpload={assetId,fileName,fileSizeBytes,fileType,key,uploadId,parts:[{partNumber,etag}]}. Use media_upload_status or abort_media_upload with campaignId and mediaUpload={key,uploadId}; both remain usable after draft edits. A completed status means retry completion, not re-upload. Completion returns only a moderation receipt; poll dynamoi_list_media_assets and select only after APPROVED. Uploads do not edit the draft selection. Attach source MP3 audio to a draft with start_source_audio_upload, PUT each returned presigned part URL, then complete_source_audio_upload with the returned uploadId/uploadSessionId and part ETags. Both actions require campaignId, expectedUpdatedAt, fileSizeBytes, trackDurationSeconds and 0–2 hookSeconds. Read sourceAudio to confirm. Use import_source_audio with a public Dropbox share url, campaignId, expectedUpdatedAt, trackDurationSeconds and 0–2 hookSeconds (250 MiB maximum). Google Drive is unsupported because it requires a Google API key. On timeout or an ambiguous result, re-read sourceAudio before retrying.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>",
"artistId": "<artistId>"
},
"name": "dynamoi_manage_smart_campaign_creative"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| parts | No | ||
| action | Yes | ||
| source | No | ||
| catalog | No | ||
| artistId | Yes | ||
| uploadId | No | ||
| setupSave | No | ||
| budgetSave | No | ||
| campaignId | No | ||
| hookSeconds | No | ||
| mediaUpload | No | ||
| locationSave | No | ||
| fileSizeBytes | No | ||
| setupRequestId | No | ||
| uploadedAssets | No | ||
| uploadSessionId | No | ||
| expectedUpdatedAt | No | ||
| selectedCreativeIds | No | ||
| selectedSocialPosts | No | ||
| trackDurationSeconds | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| data | No | ||
| kind | No | ||
| field | No | ||
| status | Yes | ||
| draftId | No | ||
| message | No | ||
| retryable | No | ||
| nextAction | No | ||
| failureStage | No | ||
| prerequisite | No | ||
| screeningResult | No | ||
| retryAfterSeconds | No |