get_download_url
Return a time-limited download URL for an existing object.
Args:
bucket: bucket name. An unknown bucket returns
`{url: "", method: "GET", error: "..."}` — not an MCP error.
Call `list_buckets` and retry with a listed name.
key: full object key (e.g. `out/result.mp4`). A missing key returns
the same envelope with recovery instructions; call `list_objects`
and retry with a listed key. Do not retry the same key.
expires: presigned-URL lifetime in seconds, clamped to [300, 600].
Values outside the range are silently clamped, not rejected.
Returns `{url, method: "GET", expires_at}`. The `url` is always a presigned
GET URL that stops working at `expires_at` (a timestamp within the clamped
[300, 600] s window) — this holds for every bucket, regardless of its
`public` flag. It is not a permanent link. A lasting link to watch or share
a public object is `cdn_url` from `list_objects` (`cdn_origin` + `/` + key).
A private progressive file (`.mp4` / `.webm`, no `cdn_url`) is played by
passing this `url` to `open_player`. Do not append anything — an extra
query parameter breaks the signature. Do not pass this `url` to
`open_player` for HLS/DASH, and do not use it as an HLS `source`.
Also use it to download a private object or to feed `fetch_job_result`.
Encode inputs use `cdn_url` (public) or `destination_url` (private), not
this presigned GET.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| bucket | Yes | ||
| expires | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| error | No | ||
| method | Yes | ||
| expires_at | No |