Open an inline Qencode video player in the chat for a playback URL.
Renders an interactive player (MCP Apps UI component) so the user can watch
a transcoded result without leaving the conversation. Use this after a job
completes — pass a playback URL from `get_job_status_detailed`: a
progressive file (`.mp4` / `.webm`) or an HLS/DASH manifest (`.m3u8` /
`.mpd`).
A manifest MUST be a PUBLIC URL. A presigned one is rejected, because the
signature covers only the playlist while its segments are relative and
would 403 (the player would spin forever). For a Media Storage object build
`https://<bucket>.media-storage.<region>.qencode.com/<key>` instead of
calling `get_download_url`, which always presigns. Progressive files are
fine either way — one object, one signature.
It resolves the per-user Qencode Player license key (a public client-side
site-key) via the portal bridge and hands it to the widget; the actual
playback happens client-side in a sandboxed iframe.
Args:
source_url: https:// URL to play — mp4, webm, or an HLS/DASH manifest.
A presigned manifest URL is rejected; pass a public one.
poster_url: optional https:// image shown before playback starts.
source_type: optional MIME hint, e.g. "video/mp4", "video/webm",
"application/x-mpegURL" or "application/dash+xml". The player
infers a sensible default when omitted.
title: optional display title for the player.
Allowed playback origins depend on the client's sandbox CSP. Videos hosted
in Qencode storage (`*.qencode.com`, Qencode CDN / `*.cloudfront.net`) play
on every client; an external origin plays on some hosts and is blocked on
others. This tool knows which policy applies, so ALWAYS CALL IT for a
playback URL — including an external mp4/webm. Never refuse up front or
guess from the client name: on a permissive host that refusal would be
wrong.
If the tool DOES reject the URL, do NOT try to fix it automatically (no
repack / transcode / upload behind the user's back).
- Presigned manifest: re-open the player on the public URL of the same
playlist (see above). Do not transcode to mp4 to dodge it.
- External origin on a strict client: tell the user only Qencode-storage
videos can be viewed in this client, and OFFER to create a Qencode Media
Storage bucket and upload the video into it (`create_bucket` then
`download_url_to_bucket` — server-side ingest, no re-encode); once they
agree, open the player on the resulting Qencode URL.
When the result carries a non-null `client_note`, pass its point on to the
user in the same reply. It describes how THIS client presents the player —
e.g. hosts that put the widget in a collapsed tool-call block, where the
user sees no video until they expand it.
Note: only public / temporary-storage outputs are supported for now.
Signed-cookie / DRM playback does not work inside the chat sandbox yet.