Trim an ad cutdown from an MCP client: dry run, wait, result
Cut a 15-second holiday ad version from an MCP client with Sume video_trim: dry_run shows the $0.02 estimate, then jobs_wait and jobs_result return the MP4.

From an MCP client connected to Sume's hosted MCP server, a cutdown is three tool calls: video_trim with your trim as payload, jobs_wait on the job id, and jobs_result to read the new video_url. The write needs an idempotency_key, and under OAuth the mcp:write scope. Add dry_run: true to the first call to see the $0.02 estimate without submitting.
The tool names and flow are in MCP tools and gates and the trim fields in Video trim (read 2026-10-06). The payload is the same body as POST /v1/video-trim.
What does the dry run return?
With dry_run: true, the tool returns a fixed-price estimate and would_submit: false, and no job is created. Send the same arguments without dry_run to submit. If you pass max_spend_usd, the tool checks it against the fixed estimate.
{
"idempotency_key": "bf-cutdown-15s-001",
"dry_run": true,
"payload": {
"video_url": "https://media.sume.com/artifacts/artf_demo/bf-master-45s.mp4",
"start": 0,
"duration": 15
}
}How do I wait for the cut?
Call jobs_wait with the job id from the submit. A slice is 50 seconds by default and 55 at most, so on wait_slice_expired call it again with the same id, and never submit the trim again.
| Step | Tool | Key input | Output |
|---|---|---|---|
| 1 | video_trim | idempotency_key, payload | A job id |
| 2 | jobs_wait | job_id | Terminal status |
| 3 | jobs_result | job_id | kind video_trim, new video_url |
What do I do with the result?
Use the new video_url as a video[] source in timeline_create with source_in 0, or caption it. The source is never changed, and video_trim returns a new artf_ file each time.
- The source must already be a
media.sume.comfile of your workspace. - A retry with the same
idempotency_keyand body should not bill a second job. - A cut of 15 seconds from a 45-second master is one trim, so three versions are three calls.
Sources
Related posts
More in Use cases
- Two-camera podcast clip for Shorts: alternate angles with source_in
Cut between two camera files against one audio spine in Timeline 1.0: equal on-spine starts and source_in keep both angles in sync. Python builder included.
- Two voices, one conversation: Sume TTS jobs joined by concat
Make a two-person dialogue file with Sume: one TTS job per line using two avatar voices, then one Timeline audio concat. Cost, code and the gap.
- UGC-style ad: test five hooks on one body with Timeline plans
Join five 3-second hooks to one 12-second body clip with Timeline 1.0. Plan each cut unbilled, then render the winners at $0.10 a minute.
- UGC-style ad: a music bed that ducks under the voice
Add a looped music bed to a UGC-style ad and lower it under the voice with soundtrack.duck_db in a Timeline 1.0 render. Needs a real voice spine.
Written by Sume