system:media turns files the agent cannot read into things it can. Every tool
takes an HTTPS URL — a path on the machine is refused with
url must use HTTPS protocol, so upload first
(compute_download gives you a URL for
a file that is already on disk).
That string is what the code gets back. The rendered pages go to the model as
images — the same way
compute_view works. So
call these tools for their effect on what the model can see, and do not try to
parse their return value into text.Documents
Renders a PDF’s pages as images.
pages is "1", a range "1-5", or
"all" — 10 pages at a time, defaulting to the first.The same, for DOCX, XLSX, PPTX, DOC, XLS, PPT, ODT, ODS, ODP and RTF. It
converts to PDF first, so a spreadsheet arrives laid out in pages rather than
as cells.
pages="2" is cheap.
Audio
language="Spanish" when you know it;
it is detected otherwise. Non-speech is described in brackets rather than
invented, which is how you tell an empty recording from a failed one.
Video
Two tools, and the difference is what you are asking.What happens in it, as text. YouTube links work here, as do MP4, MOV, AVI, MKV
and WebM files up to 100 MB.
prompt="What error does the terminal show?"
narrows the answer to the thing you care about.One frame, at
timestamp seconds, as an image. Direct video files only — not
YouTube. This is the tool for reading text on screen or checking a UI state
at an exact moment.Images
(0, 0) is the top-left, (1, 1) the bottom-right.
Cropping before looking is the cheapest thing in this package — a 2880×1800
screenshot costs a lot of tokens to see whole and very little to see the corner
you actually need.
media_generate_image makes one from a description, or edits ones you give it:
images=[…] — up to nine HTTPS URLs or data: strings — and the prompt
becomes an instruction about them rather than a description of something new.
seed with the same prompt reproduces the same image. The prompt carries the
whole intent: subject, composition, style, lighting, text to render. Describe the
result you want, not the settings of a camera you do not have.
3D, and the job shape
Meshes take minutes, so these two tools may answer before they are finished:job_id instead of a result means call media_job
with it. Nothing else in this package works that way.
A GLB from a description or from photographs. A photograph gives a far more
faithful result than a prompt, and
extra_views — more views of the same
object, as left, right, bottom, left_front and right_front URLs —
makes the hidden sides less of a guess. face_count is 40000–1500000, default
500000. pbr adds metallic/roughness/normal maps; geometry_only returns
untextured white.Fits a skeleton to a humanoid model so it can move, and returns the rigged GLB
plus one GLB per motion. Motions by name:
walk, run, idle, jump,
dance, wave, sit, bow, clap, cheer, talk, phone, punch,
kick, die, sneak, swim, climb — up to 10. The model has to be a
humanoid with separated limbs: a character from media_generate_3d works, a
chair does not.
