Lint an ad cut (joins, captions, audio, ending, length)
ad_cut_lint[writes flayr data · write scope] Checks an ad's cut against the ad-cut rules: too many joins (warning), joins only at a rest point, no cut inside a caption or its fade, one caption layer, no audio dip at a join, exactly one ending, and the network's length / aspect / ad-text window (TikTok 9:16, 12-25 s, ad text up to 100 by default). Each finding names its fix. It reads the cut you describe (segments, captions, signals), not a rendered file; a rule with nothing to check is reported unchecked. With contentId the result is kept for that draft: a format:ad video draft is booked or filed as an ad only once its latest lint for the network passes.
(Wraps POST /api/v2/video-studio/ad-cut/lint.)
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"network": "<network>",
"segments": "<segments>"
},
"name": "ad_cut_lint"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| joins | No | Extra cut points inside segments, output ms. | |
| adText | No | Ignored with contentId (the draft text is used). | |
| aspect | No | For example "9:16", or `{ width, height }`. | |
| network | Yes | tiktok, x, pinterest, reddit, or a configured network. | |
| signals | No | Per source: `{ motion?: [{ atMs, energy }], envelope?: [{ atMs, db }] }`, in source ms. | |
| captions | No | `{ startMs, endMs, text?, layer?, fadeInMs?, fadeOutMs? }` in output ms. Omit when unknown; [] for none. | |
| segments | Yes | In order: takes `{ sourceId, inMs, outMs, includesEnding? }` or `{ kind: "end_card", durationMs }`. | |
| contentId | No | Keep the result for this draft (write scope). | |
| audioEnvelope | No | Output-time `[{ atMs, db }]`, per-source `{ sourceId: [{ atMs, db }] }`, or null for no audio. |