Ask a cloud playout vendor whether they support SCTE-35 and almost all of them say yes. Ask which commands they emit, and the answers separate quickly. A great many products write a single marker at the top of a break, give it a duration, and consider the job done. That is enough to cut to an ad and come back, and it is not enough to pass a distributor integration.
Two commands, because integrations ask for both
The older and simpler form is splice_insert(). It carries an event id, a flag saying the channel is leaving the network feed, a break duration in 90 kHz ticks, and an auto-return that brings programming back on its own. It is well understood and it is what most simple ad systems expect.
The form modern distributors tend to ask for is time_signal() paired with a segmentation descriptor. Rather than inferring what a break is from its duration and direction, the cue states its type outright, carries its own segmentation event id and duration, and can carry a UPID identifying the content or the opportunity. Both forms are emitted here, per break, so an integration that specifies one is not a development project.
Cue types carry the meaning
A break is not just a break. An advertisement the programmer sold is a different thing from an opportunity a distributor is entitled to fill, and both are different from a programme boundary. Provider Advertisement and Distributor Advertisement, Provider Placement Opportunity and Distributor Placement Opportunity are all signalled as matched start and end pairs, and programme starts and ends are marked on boundaries. Placement opportunities carry the sub-segment fields where a partner needs to split an avail.
The practical effect is that an ad decision system on the other side of a carriage deal knows which breaks belong to it without a spreadsheet describing your schedule.
Restrictions belong in the signal
Rights are rarely uniform. A programme may be cleared for broadcast but not for web delivery, a sports feed may be blacked out in one region, an episode may not be archived. Those conditions ride on the cue itself as delivery restrictions: web delivery permitted or not, regional blackout in force or not, archiving allowed or not, and any device restriction. When a break carries no restrictions at all the encoder marks it not restricted and leaves the rest off, which is what a downstream parser expects to see rather than a full set of defaults it has to interpret.
What the rest of the chain receives
Every break is written into the stream itself and mirrored into the manifest. Players and ad systems that want the simple version get EXT-X-CUE-OUT with the break duration, EXT-X-CUE-OUT-CONT on each segment inside the break so a player joining mid-break knows where it is, and EXT-X-CUE-IN at the return. Systems that want the original signal get EXT-X-DATERANGE carrying the complete binary cue. Everything is anchored to programme date time, so the wall-clock position of a break is unambiguous no matter which representation a downstream system reads.
That redundancy is deliberate. The simple tags mean a break works in a player written five years ago; the binary daterange means a broadcast-grade system can verify the cue byte for byte. You do not have to know which kind of partner you will sign before you build the channel.
Signalling is what makes the money countable
Cues are also the reason ad revenue can be audited. Server-side ad insertion fills breaks from these markers inside your stream, billing counts an impression only when the ad is genuinely delivered, and the as-run log that an advertiser or a distributor asks for is a record of cues and what filled them. Vague signalling produces vague numbers, and vague numbers lose arguments about money.
All of it is included from the entry plan. The published pricing covers ad markers and ad insertion on every tier, and what a TV channel costs sets the whole bill out if you are comparing against a platform that meters.