> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Operations: makers

> One-shot creative recipes: trailers, ads, NPC voices, sprite sheets and more. For each operation: what it does, whether it asks you first, its inputs and an example call.

One-shot creative recipes: trailers, ads, NPC voices, sprite sheets and more. 22 operations. How to call them, and what the answers mean: [Operations reference](/mcp/operations).

<Note>
  Generated from the `summer-engine` npm package `4.2.0`: its public operation catalog (`registry/operations/public-catalog.json`) and its engine and local operations. If something here is wrong, the operation's definition is wrong.
</Note>

| Operation | What it does | Asks you first |
| - | - | - |
| [`makers.bankai_motion`](#bankai_motion) | Any clip's moves, performed by your character. | Not by default |
| [`makers.bankai_swap`](#bankai_swap) | Swap the person, product, outfit or background. | Not by default |
| [`makers.bankai_ultra`](#bankai_ultra) | Rebuild any shot around your references on Seedance 2.5. | Not by default |
| [`makers.camera_moves`](#camera_moves) | Photo to a cinematic dolly, jib or focus pull. | Not by default |
| [`makers.capsule_kit`](#capsule_kit) | Store-ready capsule art from one screenshot. | Not by default |
| [`makers.character_turnaround`](#character_turnaround) | Front, side and back model sheet from one image. | Not by default |
| [`makers.cinematic_shot`](#cinematic_shot) | One image in, a cinematic shot with sound out, on Seedance 2.5. | Not by default |
| [`makers.game_ad_maker`](#game_ad_maker) | A 10 second vertical game ad from one screenshot. | Not by default |
| [`makers.game_score`](#game_score) | Game music from a mood, in seconds. | Not by default |
| [`makers.lipsync_anything`](#lipsync_anything) | New words in an existing clip, lips matched. | Not by default |
| [`makers.npc_voice`](#npc_voice) | Type a line, get a voiced NPC in seconds. | Not by default |
| [`makers.pixel_forge`](#pixel_forge) | Any character or image to clean, game-ready pixel art. | Not by default |
| [`makers.product_ad`](#product_ad) | Product photo in, an 8 second video ad with sound out. | Not by default |
| [`makers.sfx_maker`](#sfx_maker) | Any sound effect in seconds. | Not by default |
| [`makers.sprite_sheet_forge`](#sprite_sheet_forge) | One character image in, an animated sprite sheet out. | Not by default |
| [`makers.style_frame`](#style_frame) | Your screenshot redrawn in another game art style, for look-dev. | Not by default |
| [`makers.style_swap`](#style_swap) | Restyle gameplay or any clip into anime, claymation, PSX, comic or pixel art. | Not by default |
| [`makers.talking_character`](#talking_character) | Make any picture talk: NPCs, mascots, avatars. | Not by default |
| [`makers.texture_forge`](#texture_forge) | A photo into a seamless, tileable game texture. | Not by default |
| [`makers.thumbnail_maker`](#thumbnail_maker) | Click-worthy YouTube thumbnails from your frame. | Not by default |
| [`makers.trailer_forge`](#trailer_forge) | A game trailer with music from your screenshots. | Not by default |
| [`makers.transition_morph`](#transition_morph) | Two images, one smooth morph between them. | Not by default |

***

### bankai\_motion

`makers.bankai_motion`: **Bankai Motion**

Any clip's moves, performed by your character. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.bankai_motion"` |
| **CLI** | `summer makers bankai-motion` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_bankai_motion` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `characterImage` | string | Yes | Character image. The character and the scene both come from this image. Full or upper body visible, no occlusion, the character fills at least 5% of the frame Length 0 to 2048. |
| `motionVideo` | string | Yes | Motion clip. One realistic human performer works best Length 0 to 2048. |
| `orientation` | "video" \| "image" | No | Facing Default `"video"`. |
| `tier` | "standard" \| "pro" | No | Quality Default `"standard"`. |
| `keepAudio` | boolean | No | Keep the clip audio Default `true`. |
| `consent` | true | Yes | I own this image and clip or have permission to use them, and every real person shown has agreed. No public figures, no minors. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "characterImage": {
        "description": "Character image. The character and the scene both come from this image. Full or upper body visible, no occlusion, the character fills at least 5% of the frame",
        "type": "string",
        "maxLength": 2048
      },
      "motionVideo": {
        "description": "Motion clip. One realistic human performer works best",
        "type": "string",
        "maxLength": 2048
      },
      "orientation": {
        "description": "Facing",
        "default": "video",
        "type": "string",
        "enum": [
          "video",
          "image"
        ]
      },
      "tier": {
        "description": "Quality",
        "default": "standard",
        "type": "string",
        "enum": [
          "standard",
          "pro"
        ]
      },
      "keepAudio": {
        "description": "Keep the clip audio",
        "default": true,
        "type": "boolean"
      },
      "consent": {
        "description": "I own this image and clip or have permission to use them, and every real person shown has agreed. No public figures, no minors.",
        "type": "boolean",
        "const": true
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "characterImage",
      "motionVideo",
      "consent"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Bankai Motion with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.bankai_motion",
      "input": {
        "characterImage": "https://www.summerengine.com/examples/hero.png",
        "motionVideo": "https://www.summerengine.com/examples/clip.mp4",
        "consent": true
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers bankai-motion --character-image https://www.summerengine.com/examples/hero.png --motion-video https://www.summerengine.com/examples/clip.mp4 --consent
  ```
</CodeGroup>

***

### bankai\_swap

`makers.bankai_swap`: **Bankai Swap**

Swap the person, product, outfit or background. Keep the shot. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.bankai_swap"` |
| **CLI** | `summer makers bankai-swap` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_bankai_swap` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `sourceVideo` | string | Yes | Source clip. mp4 or mov, at least 720 px on each side Length 0 to 2048. |
| `subject` | "character" \| "product" \| "outfit" \| "object" \| "background" | No | What are you swapping in? Default `"character"`. |
| `target` | string | Yes | What to replace Length 1 to 200. |
| `referenceImage` | string | Yes | Reference image. A clean, front-facing view of what should appear in the shot Length 0 to 2048. |
| `referenceImage2` | string | No | Second reference image. Another angle of the same subject Length 0 to 2048. |
| `tier` | "pro" | No | Quality Default `"pro"`. |
| `keepAudio` | boolean | No | Keep the clip audio Default `true`. |
| `prompt` | string | No | Extra direction Length 0 to 600. |
| `consent` | true | Yes | I own this clip and these images or have permission to use them, and every real person shown has agreed. No public figures, no minors. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "sourceVideo": {
        "description": "Source clip. mp4 or mov, at least 720 px on each side",
        "type": "string",
        "maxLength": 2048
      },
      "subject": {
        "description": "What are you swapping in?",
        "default": "character",
        "type": "string",
        "enum": [
          "character",
          "product",
          "outfit",
          "object",
          "background"
        ]
      },
      "target": {
        "description": "What to replace",
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "referenceImage": {
        "description": "Reference image. A clean, front-facing view of what should appear in the shot",
        "type": "string",
        "maxLength": 2048
      },
      "referenceImage2": {
        "description": "Second reference image. Another angle of the same subject",
        "type": "string",
        "maxLength": 2048
      },
      "tier": {
        "description": "Quality",
        "default": "pro",
        "type": "string",
        "enum": [
          "pro"
        ]
      },
      "keepAudio": {
        "description": "Keep the clip audio",
        "default": true,
        "type": "boolean"
      },
      "prompt": {
        "description": "Extra direction",
        "type": "string",
        "maxLength": 600
      },
      "consent": {
        "description": "I own this clip and these images or have permission to use them, and every real person shown has agreed. No public figures, no minors.",
        "type": "boolean",
        "const": true
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "sourceVideo",
      "target",
      "referenceImage",
      "consent"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Bankai Swap with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.bankai_swap",
      "input": {
        "sourceVideo": "https://www.summerengine.com/examples/clip.mp4",
        "target": "a brave knight with a glowing sword",
        "referenceImage": "https://www.summerengine.com/examples/hero.png",
        "consent": true
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers bankai-swap --source-video https://www.summerengine.com/examples/clip.mp4 --target 'a brave knight with a glowing sword' --reference-image https://www.summerengine.com/examples/hero.png --consent
  ```
</CodeGroup>

***

### bankai\_ultra

`makers.bankai_ultra`: **Bankai Ultra**

Rebuild any shot around your references on Seedance 2.5. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.bankai_ultra"` |
| **CLI** | `summer makers bankai-ultra` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_bankai_ultra` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `sourceVideo` | string | Yes | Source clip. mp4 or mov Length 0 to 2048. |
| `instruction` | string | Yes | What should change Length 1 to 1500. |
| `referenceImage` | string | Yes | Reference image. Refer to it as @Image1 in your instruction Length 0 to 2048. |
| `referenceImage2` | string | No | Second reference image. Refer to it as @Image2 Length 0 to 2048. |
| `consent` | true | Yes | I own this media or have permission to use it, and every real person shown has agreed. No public figures, no minors. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "sourceVideo": {
        "description": "Source clip. mp4 or mov",
        "type": "string",
        "maxLength": 2048
      },
      "instruction": {
        "description": "What should change",
        "type": "string",
        "minLength": 1,
        "maxLength": 1500
      },
      "referenceImage": {
        "description": "Reference image. Refer to it as @Image1 in your instruction",
        "type": "string",
        "maxLength": 2048
      },
      "referenceImage2": {
        "description": "Second reference image. Refer to it as @Image2",
        "type": "string",
        "maxLength": 2048
      },
      "consent": {
        "description": "I own this media or have permission to use it, and every real person shown has agreed. No public figures, no minors.",
        "type": "boolean",
        "const": true
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "sourceVideo",
      "instruction",
      "referenceImage",
      "consent"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Bankai Ultra with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.bankai_ultra",
      "input": {
        "sourceVideo": "https://www.summerengine.com/examples/clip.mp4",
        "instruction": "a brave knight with a glowing sword",
        "referenceImage": "https://www.summerengine.com/examples/hero.png",
        "consent": true
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers bankai-ultra --source-video https://www.summerengine.com/examples/clip.mp4 --instruction 'a brave knight with a glowing sword' --reference-image https://www.summerengine.com/examples/hero.png --consent
  ```
</CodeGroup>

***

### camera\_moves

`makers.camera_moves`: **Camera Moves**

Photo to a cinematic dolly, jib or focus pull. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.camera_moves"` |
| **CLI** | `summer makers camera-moves` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_camera_moves` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `image` | string | Yes | Still image Length 0 to 2048. |
| `move` | "dolly\_in" \| "dolly\_out" \| "dolly\_left" \| "dolly\_right" \| "jib\_up" \| "jib\_down" \| "focus\_shift" \| "static" | No | Camera move Default `"dolly_in"`. |
| `prompt` | string | No | Scene notes Length 0 to 800. |
| `duration` | "6" \| "8" \| "10" | No | Length Default `"6"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "image": {
        "description": "Still image",
        "type": "string",
        "maxLength": 2048
      },
      "move": {
        "description": "Camera move",
        "default": "dolly_in",
        "type": "string",
        "enum": [
          "dolly_in",
          "dolly_out",
          "dolly_left",
          "dolly_right",
          "jib_up",
          "jib_down",
          "focus_shift",
          "static"
        ]
      },
      "prompt": {
        "description": "Scene notes",
        "type": "string",
        "maxLength": 800
      },
      "duration": {
        "description": "Length",
        "default": "6",
        "type": "string",
        "enum": [
          "6",
          "8",
          "10"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "image"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Camera Moves with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.camera_moves",
      "input": {
        "image": "https://www.summerengine.com/examples/hero.png"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers camera-moves --image https://www.summerengine.com/examples/hero.png
  ```
</CodeGroup>

***

### capsule\_kit

`makers.capsule_kit`: **Capsule Kit**

Store-ready capsule art from one screenshot. Makes an image asset. Spends the person's credits; dryRun shows the estimate. Next: assets.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.capsule_kit"` |
| **CLI** | `summer makers capsule-kit` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_tool_capsule_kit` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `screenshot` | string | Yes | Screenshot or key art. Shows your characters, world and art style Length 0 to 2048. |
| `title` | string | Yes | Game title Length 1 to 60. |
| `mood` | string | No | Genre and mood Length 0 to 120. |
| `style` | "match" \| "painterly" \| "graphic" | No | Look Default `"match"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "screenshot": {
        "description": "Screenshot or key art. Shows your characters, world and art style",
        "type": "string",
        "maxLength": 2048
      },
      "title": {
        "description": "Game title",
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "mood": {
        "description": "Genre and mood",
        "type": "string",
        "maxLength": 120
      },
      "style": {
        "description": "Look",
        "default": "match",
        "type": "string",
        "enum": [
          "match",
          "painterly",
          "graphic"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "screenshot",
      "title"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Capsule Kit with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.capsule_kit",
      "input": {
        "screenshot": "https://www.summerengine.com/examples/hero.png",
        "title": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers capsule-kit --screenshot https://www.summerengine.com/examples/hero.png --title 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### character\_turnaround

`makers.character_turnaround`: **Character Turnaround**

Front, side and back model sheet from one image. Makes an image asset. Spends the person's credits; dryRun shows the estimate. Next: assets.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.character_turnaround"` |
| **CLI** | `summer makers character-turnaround` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_tool_character_turnaround` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `character` | string | Yes | Character image. One clear view of the character Length 0 to 2048. |
| `style` | "color" \| "lineart" | No | Sheet style Default `"color"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "character": {
        "description": "Character image. One clear view of the character",
        "type": "string",
        "maxLength": 2048
      },
      "style": {
        "description": "Sheet style",
        "default": "color",
        "type": "string",
        "enum": [
          "color",
          "lineart"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "character"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Character Turnaround with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.character_turnaround",
      "input": {
        "character": "https://www.summerengine.com/examples/hero.png"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers character-turnaround --character https://www.summerengine.com/examples/hero.png
  ```
</CodeGroup>

***

### cinematic\_shot

`makers.cinematic_shot`: **Cinematic Shot**

One image in, a cinematic shot with sound out, on Seedance 2.5. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.cinematic_shot"` |
| **CLI** | `summer makers cinematic-shot` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_cinematic_shot` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `image` | string | Yes | Start image. The first frame of the shot Length 0 to 2048. |
| `prompt` | string | Yes | What happens Length 1 to 1500. |
| `duration` | "5" \| "8" \| "10" | No | Length Default `"5"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "image": {
        "description": "Start image. The first frame of the shot",
        "type": "string",
        "maxLength": 2048
      },
      "prompt": {
        "description": "What happens",
        "type": "string",
        "minLength": 1,
        "maxLength": 1500
      },
      "duration": {
        "description": "Length",
        "default": "5",
        "type": "string",
        "enum": [
          "5",
          "8",
          "10"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "image",
      "prompt"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Cinematic Shot with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.cinematic_shot",
      "input": {
        "image": "https://www.summerengine.com/examples/hero.png",
        "prompt": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers cinematic-shot --image https://www.summerengine.com/examples/hero.png --prompt 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### game\_ad\_maker

`makers.game_ad_maker`: **Game Ad Maker**

A 10 second vertical game ad from one screenshot. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.game_ad_maker"` |
| **CLI** | `summer makers game-ad-maker` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_game_ad_maker` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `screenshot` | string | Yes | Screenshot or key art. Shows your characters, world and art style Length 0 to 2048. |
| `title` | string | Yes | Game title Length 1 to 60. |
| `hook` | string | Yes | Hook Length 1 to 200. |
| `mood` | string | No | Genre and mood Length 0 to 120. |
| `aspect` | "9:16" \| "16:9" | No | Format Default `"9:16"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "screenshot": {
        "description": "Screenshot or key art. Shows your characters, world and art style",
        "type": "string",
        "maxLength": 2048
      },
      "title": {
        "description": "Game title",
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "hook": {
        "description": "Hook",
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "mood": {
        "description": "Genre and mood",
        "type": "string",
        "maxLength": 120
      },
      "aspect": {
        "description": "Format",
        "default": "9:16",
        "type": "string",
        "enum": [
          "9:16",
          "16:9"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "screenshot",
      "title",
      "hook"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Game Ad Maker with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.game_ad_maker",
      "input": {
        "screenshot": "https://www.summerengine.com/examples/hero.png",
        "title": "a brave knight with a glowing sword",
        "hook": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers game-ad-maker --screenshot https://www.summerengine.com/examples/hero.png --title 'a brave knight with a glowing sword' --hook 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### game\_score

`makers.game_score`: **Game Score**

Game music from a mood, in seconds. Makes audio asset. Spends the person's credits; dryRun shows the estimate. Next: assets.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.game_score"` |
| **CLI** | `summer makers game-score` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_tool_game_score` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `prompt` | string | Yes | Genre and mood Length 1 to 400. |
| `inspiration` | string | No | Screenshot for inspiration Length 0 to 2048. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "prompt": {
        "description": "Genre and mood",
        "type": "string",
        "minLength": 1,
        "maxLength": 400
      },
      "inspiration": {
        "description": "Screenshot for inspiration",
        "type": "string",
        "maxLength": 2048
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "prompt"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Game Score with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.game_score",
      "input": {
        "prompt": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers game-score --prompt 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### lipsync\_anything

`makers.lipsync_anything`: **Lipsync Anything**

New words in an existing clip, lips matched. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.lipsync_anything"` |
| **CLI** | `summer makers lipsync-anything` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_lipsync_anything` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `video` | string | Yes | Video. A face visible for most of the clip Length 0 to 2048. |
| `audio` | string | Yes | New audio Length 0 to 2048. |
| `consent` | true | Yes | I own this media or have permission to use it, and every real person shown has agreed. No public figures, no minors. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "video": {
        "description": "Video. A face visible for most of the clip",
        "type": "string",
        "maxLength": 2048
      },
      "audio": {
        "description": "New audio",
        "type": "string",
        "maxLength": 2048
      },
      "consent": {
        "description": "I own this media or have permission to use it, and every real person shown has agreed. No public figures, no minors.",
        "type": "boolean",
        "const": true
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "video",
      "audio",
      "consent"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Lipsync Anything with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.lipsync_anything",
      "input": {
        "video": "https://www.summerengine.com/examples/clip.mp4",
        "audio": "https://www.summerengine.com/examples/line.mp3",
        "consent": true
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers lipsync-anything --video https://www.summerengine.com/examples/clip.mp4 --audio https://www.summerengine.com/examples/line.mp3 --consent
  ```
</CodeGroup>

***

### npc\_voice

`makers.npc_voice`: **NPC Voice**

Type a line, get a voiced NPC in seconds. Makes audio asset. Spends the person's credits; dryRun shows the estimate. Next: assets.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.npc_voice"` |
| **CLI** | `summer makers npc-voice` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_tool_npc_voice` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `text` | string | Yes | Line. Audio tags such as \[whispers], \[laughs] or \[shouting] change the delivery Length 1 to 2000. |
| `voice` | "Rachel" \| "Aria" \| "Roger" \| "Sarah" \| "Laura" \| "Charlie" \| "George" \| "Callum" \| "River" \| "Liam" \| "Charlotte" \| "Alice" \| "Matilda" \| "Will" \| "Jessica" \| "Eric" \| "Chris" \| "Brian" \| "Daniel" \| "Lily" \| "Bill" | No | Voice Default `"George"`. |
| `delivery` | "creative" \| "natural" \| "robust" | No | Delivery Default `"natural"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "text": {
        "description": "Line. Audio tags such as [whispers], [laughs] or [shouting] change the delivery",
        "type": "string",
        "minLength": 1,
        "maxLength": 2000
      },
      "voice": {
        "description": "Voice",
        "default": "George",
        "type": "string",
        "enum": [
          "Rachel",
          "Aria",
          "Roger",
          "Sarah",
          "Laura",
          "Charlie",
          "George",
          "Callum",
          "River",
          "Liam",
          "Charlotte",
          "Alice",
          "Matilda",
          "Will",
          "Jessica",
          "Eric",
          "Chris",
          "Brian",
          "Daniel",
          "Lily",
          "Bill"
        ]
      },
      "delivery": {
        "description": "Delivery",
        "default": "natural",
        "type": "string",
        "enum": [
          "creative",
          "natural",
          "robust"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "text"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run NPC Voice with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.npc_voice",
      "input": {
        "text": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers npc-voice --text 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### pixel\_forge

`makers.pixel_forge`: **Pixel Forge**

Any character or image to clean, game-ready pixel art. Makes an image asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.pixel_forge"` |
| **CLI** | `summer makers pixel-forge` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_pixel_forge` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `image` | string | Yes | Character or object. One subject, clearly visible Length 0 to 2048. |
| `size` | "32" \| "64" \| "128" | No | Sprite size Default `"64"`. |
| `palette` | "16" \| "32" \| "64" | No | Colors Default `"32"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "image": {
        "description": "Character or object. One subject, clearly visible",
        "type": "string",
        "maxLength": 2048
      },
      "size": {
        "description": "Sprite size",
        "default": "64",
        "type": "string",
        "enum": [
          "32",
          "64",
          "128"
        ]
      },
      "palette": {
        "description": "Colors",
        "default": "32",
        "type": "string",
        "enum": [
          "16",
          "32",
          "64"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "image"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Pixel Forge with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.pixel_forge",
      "input": {
        "image": "https://www.summerengine.com/examples/hero.png"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers pixel-forge --image https://www.summerengine.com/examples/hero.png
  ```
</CodeGroup>

***

### product\_ad

`makers.product_ad`: **Product Ad Studio**

Product photo in, an 8 second video ad with sound out. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.product_ad"` |
| **CLI** | `summer makers product-ad` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_product_ad` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `product` | string | Yes | Product photo. The product clearly visible; any background Length 0 to 2048. |
| `productName` | string | Yes | Product name Length 1 to 60. |
| `hook` | string | No | Hook or scene Length 0 to 300. |
| `aspect` | "9:16" \| "16:9" \| "1:1" | No | Format Default `"9:16"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "product": {
        "description": "Product photo. The product clearly visible; any background",
        "type": "string",
        "maxLength": 2048
      },
      "productName": {
        "description": "Product name",
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "hook": {
        "description": "Hook or scene",
        "type": "string",
        "maxLength": 300
      },
      "aspect": {
        "description": "Format",
        "default": "9:16",
        "type": "string",
        "enum": [
          "9:16",
          "16:9",
          "1:1"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "product",
      "productName"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Product Ad Studio with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.product_ad",
      "input": {
        "product": "https://www.summerengine.com/examples/hero.png",
        "productName": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers product-ad --product https://www.summerengine.com/examples/hero.png --product-name 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### sfx\_maker

`makers.sfx_maker`: **SFX Maker**

Any sound effect in seconds. Makes audio asset. Spends the person's credits; dryRun shows the estimate. Next: assets.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.sfx_maker"` |
| **CLI** | `summer makers sfx-maker` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_tool_sfx_maker` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `prompt` | string | Yes | Sound Length 1 to 300. |
| `duration` | "2" \| "5" \| "10" \| "20" | No | Length Default `"2"`. |
| `loop` | boolean | No | Seamless loop Default `false`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "prompt": {
        "description": "Sound",
        "type": "string",
        "minLength": 1,
        "maxLength": 300
      },
      "duration": {
        "description": "Length",
        "default": "2",
        "type": "string",
        "enum": [
          "2",
          "5",
          "10",
          "20"
        ]
      },
      "loop": {
        "description": "Seamless loop",
        "default": false,
        "type": "boolean"
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "prompt"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run SFX Maker with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.sfx_maker",
      "input": {
        "prompt": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers sfx-maker --prompt 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### sprite\_sheet\_forge

`makers.sprite_sheet_forge`: **Sprite Sheet Forge**

One character image in, an animated sprite sheet out. Makes an image asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.sprite_sheet_forge"` |
| **CLI** | `summer makers sprite-sheet-forge` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_sprite_sheet_forge` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `characterImage` | string | Yes | Character image. One clear, full-body view of the character on a plain background Length 0 to 2048. |
| `action` | "idle" \| "walk" \| "run" \| "jump" \| "attack" \| "hurt" | No | Action Default `"walk"`. |
| `frames` | "4" \| "6" \| "8" \| "12" \| "16" | No | Frames Default `"8"`. |
| `view` | "side" \| "three-quarter" \| "front" | No | View Default `"side"`. |
| `pixel` | "32" \| "64" \| "128" \| "off" | No | Pixel art Default `"off"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "characterImage": {
        "description": "Character image. One clear, full-body view of the character on a plain background",
        "type": "string",
        "maxLength": 2048
      },
      "action": {
        "description": "Action",
        "default": "walk",
        "type": "string",
        "enum": [
          "idle",
          "walk",
          "run",
          "jump",
          "attack",
          "hurt"
        ]
      },
      "frames": {
        "description": "Frames",
        "default": "8",
        "type": "string",
        "enum": [
          "4",
          "6",
          "8",
          "12",
          "16"
        ]
      },
      "view": {
        "description": "View",
        "default": "side",
        "type": "string",
        "enum": [
          "side",
          "three-quarter",
          "front"
        ]
      },
      "pixel": {
        "description": "Pixel art",
        "default": "off",
        "type": "string",
        "enum": [
          "32",
          "64",
          "128",
          "off"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "characterImage"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Sprite Sheet Forge with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.sprite_sheet_forge",
      "input": {
        "characterImage": "https://www.summerengine.com/examples/hero.png"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers sprite-sheet-forge --character-image https://www.summerengine.com/examples/hero.png
  ```
</CodeGroup>

***

### style\_frame

`makers.style_frame`: **Style Frame**

Your screenshot redrawn in another game art style, for look-dev. Makes an image asset. Spends the person's credits; dryRun shows the estimate. Next: assets.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.style_frame"` |
| **CLI** | `summer makers style-frame` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_tool_style_frame` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `screenshot` | string | Yes | Screenshot or concept. A scene from your game or a piece of concept art Length 0 to 2048. |
| `style` | "pixel" \| "low-poly" \| "cel" \| "painterly" \| "psx" \| "voxel" | No | Art style Default `"cel"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "screenshot": {
        "description": "Screenshot or concept. A scene from your game or a piece of concept art",
        "type": "string",
        "maxLength": 2048
      },
      "style": {
        "description": "Art style",
        "default": "cel",
        "type": "string",
        "enum": [
          "pixel",
          "low-poly",
          "cel",
          "painterly",
          "psx",
          "voxel"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "screenshot"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Style Frame with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.style_frame",
      "input": {
        "screenshot": "https://www.summerengine.com/examples/hero.png"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers style-frame --screenshot https://www.summerengine.com/examples/hero.png
  ```
</CodeGroup>

***

### style\_swap

`makers.style_swap`: **Style Swap**

Restyle gameplay or any clip into anime, claymation, PSX, comic or pixel art. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.style_swap"` |
| **CLI** | `summer makers style-swap` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_style_swap` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `sourceVideo` | string | Yes | Source clip Length 0 to 2048. |
| `style` | "anime" \| "retro-anime" \| "clay" \| "psx" \| "comic" \| "pixel" \| "cel-shaded" | No | Style Default `"anime"`. |
| `prompt` | string | No | Extra direction Length 0 to 400. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "sourceVideo": {
        "description": "Source clip",
        "type": "string",
        "maxLength": 2048
      },
      "style": {
        "description": "Style",
        "default": "anime",
        "type": "string",
        "enum": [
          "anime",
          "retro-anime",
          "clay",
          "psx",
          "comic",
          "pixel",
          "cel-shaded"
        ]
      },
      "prompt": {
        "description": "Extra direction",
        "type": "string",
        "maxLength": 400
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "sourceVideo"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Style Swap with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.style_swap",
      "input": {
        "sourceVideo": "https://www.summerengine.com/examples/clip.mp4"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers style-swap --source-video https://www.summerengine.com/examples/clip.mp4
  ```
</CodeGroup>

***

### talking\_character

`makers.talking_character`: **Talking Character**

Make any picture talk: NPCs, mascots, avatars. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.talking_character"` |
| **CLI** | `summer makers talking-character` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_talking_character` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `image` | string | Yes | Character image. Face clearly visible, looking roughly at the camera Length 0 to 2048. |
| `audio` | string | Yes | Voice line. mp3, wav or m4a Length 0 to 2048. |
| `consent` | true | Yes | I own this media or have permission to use it, and every real person shown has agreed. No public figures, no minors. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "image": {
        "description": "Character image. Face clearly visible, looking roughly at the camera",
        "type": "string",
        "maxLength": 2048
      },
      "audio": {
        "description": "Voice line. mp3, wav or m4a",
        "type": "string",
        "maxLength": 2048
      },
      "consent": {
        "description": "I own this media or have permission to use it, and every real person shown has agreed. No public figures, no minors.",
        "type": "boolean",
        "const": true
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "image",
      "audio",
      "consent"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Talking Character with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.talking_character",
      "input": {
        "image": "https://www.summerengine.com/examples/hero.png",
        "audio": "https://www.summerengine.com/examples/line.mp3",
        "consent": true
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers talking-character --image https://www.summerengine.com/examples/hero.png --audio https://www.summerengine.com/examples/line.mp3 --consent
  ```
</CodeGroup>

***

### texture\_forge

`makers.texture_forge`: **Texture Forge**

A photo into a seamless, tileable game texture. Makes an image asset. Spends the person's credits; dryRun shows the estimate. Next: assets.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.texture_forge"` |
| **CLI** | `summer makers texture-forge` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_tool_texture_forge` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `photo` | string | Yes | Surface photo. Stone, wood, grass, metal, fabric, anything with a surface Length 0 to 2048. |
| `material` | "stone" \| "wood" \| "ground" \| "metal" \| "fabric" \| "scifi" | No | Material Default `"stone"`. |
| `look` | "realistic" \| "painted" \| "toon" \| "pixel" | No | Look Default `"painted"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "photo": {
        "description": "Surface photo. Stone, wood, grass, metal, fabric, anything with a surface",
        "type": "string",
        "maxLength": 2048
      },
      "material": {
        "description": "Material",
        "default": "stone",
        "type": "string",
        "enum": [
          "stone",
          "wood",
          "ground",
          "metal",
          "fabric",
          "scifi"
        ]
      },
      "look": {
        "description": "Look",
        "default": "painted",
        "type": "string",
        "enum": [
          "realistic",
          "painted",
          "toon",
          "pixel"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "photo"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Texture Forge with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.texture_forge",
      "input": {
        "photo": "https://www.summerengine.com/examples/hero.png"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers texture-forge --photo https://www.summerengine.com/examples/hero.png
  ```
</CodeGroup>

***

### thumbnail\_maker

`makers.thumbnail_maker`: **Thumbnail Maker**

Click-worthy YouTube thumbnails from your frame. Makes an image asset. Spends the person's credits; dryRun shows the estimate. Next: assets.get.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.thumbnail_maker"` |
| **CLI** | `summer makers thumbnail-maker` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **3.x names** | `summer_tool_thumbnail_maker` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `frame` | string | Yes | Frame or photo Length 0 to 2048. |
| `title` | string | Yes | Thumbnail text Length 1 to 40. |
| `style` | "gaming" \| "clean" \| "shocked" | No | Style Default `"gaming"`. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "frame": {
        "description": "Frame or photo",
        "type": "string",
        "maxLength": 2048
      },
      "title": {
        "description": "Thumbnail text",
        "type": "string",
        "minLength": 1,
        "maxLength": 40
      },
      "style": {
        "description": "Style",
        "default": "gaming",
        "type": "string",
        "enum": [
          "gaming",
          "clean",
          "shocked"
        ]
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "frame",
      "title"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Thumbnail Maker with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.thumbnail_maker",
      "input": {
        "frame": "https://www.summerengine.com/examples/hero.png",
        "title": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers thumbnail-maker --frame https://www.summerengine.com/examples/hero.png --title 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### trailer\_forge

`makers.trailer_forge`: **Trailer Forge**

A game trailer with music from your screenshots. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.trailer_forge"` |
| **CLI** | `summer makers trailer-forge` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_trailer_forge` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `shot1` | string | Yes | Screenshot 1 Length 0 to 2048. |
| `shot2` | string | Yes | Screenshot 2 Length 0 to 2048. |
| `shot3` | string | No | Screenshot 3 Length 0 to 2048. |
| `shot4` | string | No | Screenshot 4 Length 0 to 2048. |
| `title` | string | Yes | Game title Length 1 to 60. |
| `mood` | string | Yes | Genre and mood Length 1 to 160. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "shot1": {
        "description": "Screenshot 1",
        "type": "string",
        "maxLength": 2048
      },
      "shot2": {
        "description": "Screenshot 2",
        "type": "string",
        "maxLength": 2048
      },
      "shot3": {
        "description": "Screenshot 3",
        "type": "string",
        "maxLength": 2048
      },
      "shot4": {
        "description": "Screenshot 4",
        "type": "string",
        "maxLength": 2048
      },
      "title": {
        "description": "Game title",
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "mood": {
        "description": "Genre and mood",
        "type": "string",
        "minLength": 1,
        "maxLength": 160
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "shot1",
      "shot2",
      "title",
      "mood"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Trailer Forge with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.trailer_forge",
      "input": {
        "shot1": "https://www.summerengine.com/examples/hero.png",
        "shot2": "https://www.summerengine.com/examples/hero.png",
        "title": "a brave knight with a glowing sword",
        "mood": "a brave knight with a glowing sword"
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers trailer-forge --shot1 https://www.summerengine.com/examples/hero.png --shot2 https://www.summerengine.com/examples/hero.png --title 'a brave knight with a glowing sword' --mood 'a brave knight with a glowing sword'
  ```
</CodeGroup>

***

### transition\_morph

`makers.transition_morph`: **Transition Morph**

Two images, one smooth morph between them. Makes a video asset through a job. Spends the person's credits; dryRun shows the estimate. Next: jobs.wait.

| | |
| - | - |
| **MCP** | `summer_call` with `"op": "makers.transition_morph"` |
| **CLI** | `summer makers transition-morph` |
| **Runs** | On Summer's servers: the hosted MCP, or the npm MCP after `summer login`. Needs your Summer sign-in. |
| **Effect** | Spends your credits. |
| **Asks you first** | No: **Spend credits** is on by default in Agent permissions. When it is off, your agent asks you first. |
| **Long work** | Answers with a job at once. Wait with `jobs.wait`. |
| **3.x names** | `summer_tool_transition_morph` |

**Inputs:**

| Input | Type | Required | Description |
| - | - | - | - |
| `firstImage` | string | Yes | First frame Length 0 to 2048. |
| `lastImage` | string | Yes | Last frame Length 0 to 2048. |
| `prompt` | string | No | How it transforms Length 0 to 600. |
| `duration` | "5" \| "8" | No | Length Default `"5"`. |
| `consent` | true | Yes | This is my photo, or everyone in it has agreed. No public figures, no minors. |
| `dryRun` | boolean | No | Check and describe the call without doing it: nothing changes, nothing is spent. |
| `idempotencyKey` | string | No | Retry key. Reuse it only to retry the identical request, so it never happens twice. Length 1 to 128. |

<Accordion title="Input JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "firstImage": {
        "description": "First frame",
        "type": "string",
        "maxLength": 2048
      },
      "lastImage": {
        "description": "Last frame",
        "type": "string",
        "maxLength": 2048
      },
      "prompt": {
        "description": "How it transforms",
        "type": "string",
        "maxLength": 600
      },
      "duration": {
        "description": "Length",
        "default": "5",
        "type": "string",
        "enum": [
          "5",
          "8"
        ]
      },
      "consent": {
        "description": "This is my photo, or everyone in it has agreed. No public figures, no minors.",
        "type": "boolean",
        "const": true
      },
      "dryRun": {
        "description": "Check and describe the call without doing it: nothing changes, nothing is spent.",
        "type": "boolean"
      },
      "idempotencyKey": {
        "description": "Retry key. Reuse it only to retry the identical request, so it never happens twice.",
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    },
    "required": [
      "firstImage",
      "lastImage",
      "consent"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

<Accordion title="Result JSON schema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "fileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "thumbnailUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "width": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "backgroundRemoved": {
            "type": "boolean"
          }
        },
        "required": [
          "assetId",
          "title",
          "fileUrl",
          "thumbnailUrl"
        ],
        "additionalProperties": false
      },
      "variants": {
        "description": "Other sizes of the same image.",
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notes": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "creditsCharged": {
        "type": "number"
      }
    },
    "required": [
      "asset"
    ],
    "additionalProperties": false
  }
  ```
</Accordion>

**Example:** Run Transition Morph with its required fields.

<CodeGroup>
  ```json MCP theme={null}
  {
    "name": "summer_call",
    "arguments": {
      "op": "makers.transition_morph",
      "input": {
        "firstImage": "https://www.summerengine.com/examples/hero.png",
        "lastImage": "https://www.summerengine.com/examples/hero.png",
        "consent": true
      }
    }
  }
  ```

  ```bash CLI theme={null}
  summer makers transition-morph --first-image https://www.summerengine.com/examples/hero.png --last-image https://www.summerengine.com/examples/hero.png --consent
  ```
</CodeGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.