Skip to main content
Glama

Separate voice and music

create.stems
Idempotent

The sound of a video or audio file pulled apart into stems, each new audio media for clip.add: vocals (voices, spoken or sung), drums, bass, other (everything else: guitars, keys, effects, room noise) and no_vocals (all but the voice, in one file). Laid together at the same time, the four stems make the original sound again. Use it to keep only the voice (lose the music under an interview: vocals), keep only the music (take the voice out of a clip: no_vocals), turn the music down under speech (vocals and no_vocals on their own tracks, with their own gain), or take a beat or a bass line on its own. Demucs v4 (htdemucs), local, on the CPU: about a fifth of the media's length on 8 cores (a minute of sound in about 15 s). Built for music; on speech with background noise, vocals keeps the voice and other takes most of the noise. Media up to 3 hours. Each stem is a 32-bit float WAV, 44.1 kHz stereo, as long as the original; the same media and stems give the same media again while they last. Long-running: a task, or a job_id for job.get.

Input Schema

NameRequiredDescriptionDefault
nameNo
stemsNovocals: voices, spoken or sung; drums, bass, other: the rest, by kind (other holds everything else: guitars, keys, effects, room noise); no_vocals: all but the voice in one file. Each becomes its own media
media_idYesVideo or audio with sound
idempotency_keyNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "media_id": {
      -        "description": "The media the stems came from",
      -        "pattern": "^m_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "model": {
      -        "type": "string"
      -      },
      -      "stems": {
      -        "additionalProperties": {
      -          "properties": {
      -            "analyses": {
      -              "description": "Summaries of media.analyze results (counts, not data); include puts each in full at the top level",
      -              "properties": {
      -                "beats": {
      -                  "properties": {
      -                    "beats": {
      -                      "type": "number"
      -                    },
      -                    "bpm": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "bpm",
      -                    "beats"
      -                  ],
      -                  "type": "object"
      -                },
      -                "colour": {
      -                  "properties": {
      -                    "frames": {
      -                      "type": "number"
      -                    },
      -                    "regions": {
      -                      "items": {
      -                        "type": "string"
      -                      },
      -                      "type": "array"
      -                    }
      -                  },
      -                  "required": [
      -                    "frames",
      -                    "regions"
      -                  ],
      -                  "type": "object"
      -                },
      -                "faces": {
      -                  "properties": {
      -                    "frames_with_faces": {
      -                      "type": "number"
      -                    },
      -                    "rate": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "rate",
      -                    "frames_with_faces"
      -                  ],
      -                  "type": "object"
      -                },
      -                "look": {
      -                  "description": "frames and questions: the latest run",
      -                  "properties": {
      -                    "frames": {
      -                      "type": "number"
      -                    },
      -                    "questions": {
      -                      "items": {
      -                        "type": "string"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "runs": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "runs",
      -                    "frames",
      -                    "questions"
      -                  ],
      -                  "type": "object"
      -                },
      -                "picture": {
      -                  "properties": {
      -                    "frames": {
      -                      "type": "number"
      -                    },
      -                    "from": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "frames",
      -                    "from"
      -                  ],
      -                  "type": "object"
      -                },
      -                "sounds": {
      -                  "description": "heard: the sounds the latest run found at or above its min_probability",
      -                  "properties": {
      -                    "heard": {
      -                      "items": {
      -                        "type": "string"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "min_probability": {
      -                      "type": "number"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "min_probability",
      -                    "heard"
      -                  ],
      -                  "type": "object"
      -                },
      -                "speakers": {
      -                  "properties": {
      -                    "model": {
      -                      "type": "string"
      -                    },
      -                    "speakers": {
      -                      "type": "number"
      -                    },
      -                    "turns": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "speakers",
      -                    "turns"
      -                  ],
      -                  "type": "object"
      -                },
      -                "speech": {
      -                  "properties": {
      -                    "frame_seconds": {
      -                      "type": "number"
      -                    },
      -                    "frames": {
      -                      "type": "number"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "frames",
      -                    "frame_seconds"
      -                  ],
      -                  "type": "object"
      -                },
      -                "transcript": {
      -                  "properties": {
      -                    "language": {
      -                      "type": "string"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    },
      -                    "words": {
      -                      "description": "How many words; the words themselves are in transcript.words",
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "language",
      -                    "words"
      -                  ],
      -                  "type": "object"
      -                },
      -                "voice": {
      -                  "additionalProperties": {},
      -                  "description": "frames, and the summary media.analyze voice gives",
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "analysis": {
      -              "anyOf": [
      -                {
      -                  "properties": {
      -                    "channels": {
      -                      "description": "Each channel at import",
      -                      "items": {
      -                        "properties": {
      -                          "channel": {
      -                            "exclusiveMinimum": 0,
      -                            "type": "integer"
      -                          },
      -                          "noise_floor_dbfs": {
      -                            "type": [
      -                              "number",
      -                              "null"
      -                            ]
      -                          },
      -                          "peak_dbfs": {
      -                            "type": [
      -                              "number",
      -                              "null"
      -                            ]
      -                          },
      -                          "rms_dbfs": {
      -                            "type": [
      -                              "number",
      -                              "null"
      -                            ]
      -                          }
      -                        },
      -                        "required": [
      -                          "channel",
      -                          "rms_dbfs",
      -                          "peak_dbfs",
      -                          "noise_floor_dbfs"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "loudness_lufs": {
      -                      "description": "Integrated loudness at import",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "loudness_lufs"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "beats": {
      -              "properties": {
      -                "beats": {
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                },
      -                "bpm": {
      -                  "type": "number"
      -                },
      -                "downbeats": {
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                },
      -                "strengths": {
      -                  "description": "Per beat: its onset strength, 0–1 of the strongest in the sound",
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "bpm",
      -                "beats",
      -                "downbeats"
      -              ],
      -              "type": "object"
      -            },
      -            "codecs": {
      -              "properties": {
      -                "audio": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "video": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "video",
      -                "audio"
      -              ],
      -              "type": "object"
      -            },
      -            "conform": {
      -              "description": "Why a mezzanine was made (vfr, rotation, hdr, codec); empty when not needed",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "created_at": {
      -              "description": "When it was imported or made",
      -              "type": "string"
      -            },
      -            "duration_seconds": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "error": {
      -              "properties": {
      -                "code": {
      -                  "enum": [
      -                    "bad_request",
      -                    "no_audio",
      -                    "not_found",
      -                    "expired",
      -                    "media_not_ready",
      -                    "media_offline",
      -                    "engine_error",
      -                    "render_failed",
      -                    "interrupted",
      -                    "stalled",
      -                    "cancelled",
      -                    "credential_required",
      -                    "credential_invalid",
      -                    "output_exists",
      -                    "path_not_allowed",
      -                    "limit_exceeded",
      -                    "quota_exceeded",
      -                    "subscription_required",
      -                    "email_unverified",
      -                    "service_unavailable",
      -                    "server_busy"
      -                  ],
      -                  "type": "string"
      -                },
      -                "detail": {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "hint": {
      -                  "type": "string"
      -                },
      -                "message": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "code",
      -                "message"
      -              ],
      -              "type": "object"
      -            },
      -            "expires_at": {
      -              "description": "When url and page_url stop working",
      -              "type": "string"
      -            },
      -            "extension": {
      -              "description": "The extension its format takes (.png, .mp4), from the file itself, not its name",
      -              "type": "string"
      -            },
      -            "faces": {
      -              "properties": {
      -                "frames": {
      -                  "items": {
      -                    "properties": {
      -                      "faces": {
      -                        "items": {
      -                          "description": "Top-left corner x, y and size w, h, fractions of the picture (centre: x + w/2, y + h/2); score 0–1",
      -                          "properties": {
      -                            "h": {
      -                              "type": "number"
      -                            },
      -                            "score": {
      -                              "type": "number"
      -                            },
      -                            "w": {
      -                              "type": "number"
      -                            },
      -                            "x": {
      -                              "type": "number"
      -                            },
      -                            "y": {
      -                              "type": "number"
      -                            }
      -                          },
      -                          "required": [
      -                            "x",
      -                            "y",
      -                            "w",
      -                            "h",
      -                            "score"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "time": {
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "time",
      -                      "faces"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "rate": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "rate",
      -                "frames"
      -              ],
      -              "type": "object"
      -            },
      -            "fingerprint": {
      -              "description": "Identity of the file (BLAKE3 of its size and first, middle and last 4 MB), as export.video gives",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "font_family": {
      -              "description": "Fonts: the family; use font_media_id in a text style to set text in it",
      -              "type": "string"
      -            },
      -            "fps": {
      -              "anyOf": [
      -                {
      -                  "properties": {
      -                    "den": {
      -                      "type": "number"
      -                    },
      -                    "num": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "num",
      -                    "den"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "has_audio": {
      -              "type": "boolean"
      -            },
      -            "has_video": {
      -              "type": "boolean"
      -            },
      -            "height": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "job": {
      -              "description": "media.get, while importing or being made: the job doing it",
      -              "properties": {
      -                "job_id": {
      -                  "description": "Job handle; the same value is the MCP task id",
      -                  "pattern": "^j_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "progress": {
      -                  "type": "number"
      -                },
      -                "seconds_left": {
      -                  "type": "number"
      -                },
      -                "status": {
      -                  "enum": [
      -                    "working",
      -                    "completed",
      -                    "failed",
      -                    "cancelled"
      -                  ],
      -                  "type": "string"
      -                },
      -                "status_message": {
      -                  "type": "string"
      -                },
      -                "tool": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "job_id",
      -                "tool",
      -                "status"
      -              ],
      -              "type": "object"
      -            },
      -            "kind": {
      -              "anyOf": [
      -                {
      -                  "enum": [
      -                    "video",
      -                    "audio",
      -                    "image",
      -                    "font",
      -                    "lut"
      -                  ],
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "look": {
      -              "properties": {
      -                "runs": {
      -                  "items": {
      -                    "properties": {
      -                      "frames": {
      -                        "items": {
      -                          "properties": {
      -                            "answers": {
      -                              "additionalProperties": {
      -                                "additionalProperties": {},
      -                                "propertyNames": {
      -                                  "type": "string"
      -                                },
      -                                "type": "object"
      -                              },
      -                              "propertyNames": {
      -                                "type": "string"
      -                              },
      -                              "type": "object"
      -                            },
      -                            "time": {
      -                              "type": "number"
      -                            }
      -                          },
      -                          "required": [
      -                            "time",
      -                            "answers"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "model": {
      -                        "type": "string"
      -                      },
      -                      "questions": {
      -                        "additionalProperties": {},
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "state": {
      -                        "additionalProperties": {},
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "with_previous": {
      -                        "type": "boolean"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "model",
      -                      "questions",
      -                      "with_previous",
      -                      "frames"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "runs"
      -              ],
      -              "type": "object"
      -            },
      -            "media_id": {
      -              "description": "Media handle from media.import or a create.* tool",
      -              "pattern": "^m_[0-9a-z]{26}$",
      -              "type": "string"
      -            },
      -            "mime_type": {
      -              "description": "Its MIME type, likewise",
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "origin": {
      -              "description": "Where it came from, to tell one version from another: the import source, the export of which timeline, or the create.* tool and the media it was made from",
      -              "properties": {
      -                "attached": {
      -                  "description": "url: the file the user attached in the chat, passed as media.import file",
      -                  "type": "boolean"
      -                },
      -                "file_name": {
      -                  "description": "upload: the name the file was sent with",
      -                  "type": "string"
      -                },
      -                "frame": {
      -                  "description": "still: the frame",
      -                  "type": "number"
      -                },
      -                "from": {
      -                  "description": "upload: a file the user sent; url: downloaded; path: a media root; render: an export.video; created: a create.* tool; still: a frame of a video or an edit",
      -                  "enum": [
      -                    "upload",
      -                    "url",
      -                    "path",
      -                    "render",
      -                    "created",
      -                    "still"
      -                  ],
      -                  "type": "string"
      -                },
      -                "job_id": {
      -                  "description": "render: the export.video job; created: the create.* job",
      -                  "pattern": "^j_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "media_id": {
      -                  "description": "still: the video the frame is from",
      -                  "pattern": "^m_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "media_ids": {
      -                  "description": "created: the media it was made from (a cutout's source, a page's assets)",
      -                  "items": {
      -                    "description": "Media handle from media.import or a create.* tool",
      -                    "pattern": "^m_[0-9a-z]{26}$",
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                "path": {
      -                  "description": "path: the file it was imported from",
      -                  "type": "string"
      -                },
      -                "preset": {
      -                  "description": "render: the export preset",
      -                  "type": "string"
      -                },
      -                "range": {
      -                  "description": "render: the frames exported, when not the whole timeline",
      -                  "properties": {
      -                    "end": {
      -                      "type": "number"
      -                    },
      -                    "start": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "start",
      -                    "end"
      -                  ],
      -                  "type": "object"
      -                },
      -                "recipe": {
      -                  "description": "created: a hash of what it was made from; the same recipe makes the same media",
      -                  "type": "string"
      -                },
      -                "sources": {
      -                  "description": "render: where each stretch of this file comes from, per track, read from the timeline when it was exported (kept after the timeline expires). With a speed curve, source_in and source_out are the clip's whole source range",
      -                  "items": {
      -                    "properties": {
      -                      "end": {
      -                        "type": "number"
      -                      },
      -                      "kind": {
      -                        "enum": [
      -                          "video",
      -                          "audio"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "media_id": {
      -                        "description": "The media this stretch plays",
      -                        "pattern": "^m_[0-9a-z]{26}$",
      -                        "type": "string"
      -                      },
      -                      "source_in": {
      -                        "description": "Seconds into that media",
      -                        "type": "number"
      -                      },
      -                      "source_out": {
      -                        "type": "number"
      -                      },
      -                      "speed": {
      -                        "additionalProperties": {},
      -                        "description": "The clip's speed change, as clip.set_speed set it",
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "start": {
      -                        "description": "Seconds into this file",
      -                        "type": "number"
      -                      },
      -                      "track_id": {
      -                        "description": "Track of the timeline; outer/inner inside a nested one",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "track_id",
      -                      "kind",
      -                      "start",
      -                      "end",
      -                      "media_id",
      -                      "source_in",
      -                      "source_out"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "timeline_id": {
      -                  "description": "render: the timeline that was exported; still: the edit the frame is from",
      -                  "pattern": "^tl_[0-9a-f]{32}$",
      -                  "type": "string"
      -                },
      -                "tool": {
      -                  "description": "created: the create.* tool that made it",
      -                  "type": "string"
      -                },
      -                "upload_id": {
      -                  "description": "Upload handle from media.upload",
      -                  "pattern": "^u_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "url": {
      -                  "description": "url: the address it was downloaded from, without its query string",
      -                  "type": "string"
      -                },
      -                "via": {
      -                  "description": "upload: sent through a media.upload link, dropped on the account page, or a data: URI",
      -                  "enum": [
      -                    "media.upload",
      -                    "account_page",
      -                    "data_uri"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "from"
      -              ],
      -              "type": "object"
      -            },
      -            "page_url": {
      -              "description": "media.get: a page that plays or shows the file in any browser, with no sign-in, to give a person; works until expires_at",
      -              "type": "string"
      -            },
      -            "pages": {
      -              "additionalProperties": {
      -                "properties": {
      -                  "first": {
      -                    "description": "Index in the whole list of the first item returned (transcript: the word index clip.add source {words} takes)",
      -                    "type": "integer"
      -                  },
      -                  "list": {
      -                    "description": "The list paged: transcript.words, beats.beats, faces.frames, speech.probabilities (one per frame_seconds from `from`), speakers.turns, voice.frames, colour.frames, picture.columns (every column alike), or look runs[].frames (each run is cut the same way; first and the counts are the latest run's)",
      -                    "type": "string"
      -                  },
      -                  "matching": {
      -                    "description": "Items in the time range (the whole list without one)",
      -                    "type": "integer"
      -                  },
      -                  "next_offset": {
      -                    "anyOf": [
      -                      {
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "The offset that gives the next page of this range, or null at its end"
      -                  },
      -                  "returned": {
      -                    "type": "integer"
      -                  },
      -                  "total": {
      -                    "description": "Items in the whole list",
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "list",
      -                  "first",
      -                  "returned",
      -                  "matching",
      -                  "total",
      -                  "next_offset"
      -                ],
      -                "type": "object"
      -              },
      -              "description": "media.get with a range, offset or limit: per included analysis, which piece of its list came back",
      -              "propertyNames": {
      -                "enum": [
      -                  "transcript",
      -                  "beats",
      -                  "faces",
      -                  "look",
      -                  "speech",
      -                  "sounds",
      -                  "speakers",
      -                  "voice",
      -                  "colour",
      -                  "picture"
      -                ],
      -                "type": "string"
      -              },
      -              "type": "object"
      -            },
      -            "probe": {
      -              "description": "media.get: everything FFprobe read from the file, as it gives it: the format and every stream (codec, pix_fmt, color_space, color_primaries, color_transfer, color_range, bit depth, sample rate, channel layout, tags, side data). Not for fonts and LUTs",
      -              "properties": {
      -                "format": {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "streams": {
      -                  "items": {
      -                    "additionalProperties": {},
      -                    "propertyNames": {
      -                      "type": "string"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "format",
      -                "streams"
      -              ],
      -              "type": "object"
      -            },
      -            "sound_seconds": {
      -              "description": "How long the sound runs; under duration_seconds, the end is soundless",
      -              "type": "number"
      -            },
      -            "sounds": {
      -              "description": "With include [\"sounds\"]: the latest media.analyze sounds run, every probability included",
      -              "properties": {
      -                "min_probability": {
      -                  "type": "number"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "peaks": {
      -                  "additionalProperties": {
      -                    "type": "number"
      -                  },
      -                  "description": "Per sound reported: the highest probability it reaches anywhere",
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "scores": {
      -                  "description": "Every probability, for your own cut-off or arithmetic",
      -                  "properties": {
      -                    "start_seconds": {
      -                      "description": "Where the first value starts: media seconds, or timeline seconds for a timeline",
      -                      "type": "number"
      -                    },
      -                    "step_seconds": {
      -                      "description": "Seconds each value covers: 0.04 (every frame) unless asked or too long",
      -                      "type": "number"
      -                    },
      -                    "values": {
      -                      "additionalProperties": {
      -                        "items": {
      -                          "type": "number"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "description": "Per sound, the highest probability in each step, 0 to 1",
      -                      "propertyNames": {
      -                        "type": "string"
      -                      },
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "start_seconds",
      -                    "step_seconds",
      -                    "values"
      -                  ],
      -                  "type": "object"
      -                },
      -                "spans": {
      -                  "additionalProperties": {
      -                    "items": {
      -                      "properties": {
      -                        "end": {
      -                          "description": "Where it ends, on the same clock",
      -                          "type": "number"
      -                        },
      -                        "peak_probability": {
      -                          "type": "number"
      -                        },
      -                        "peak_seconds": {
      -                          "description": "The middle of the most likely frame",
      -                          "type": "number"
      -                        },
      -                        "start": {
      -                          "description": "Where the run of matching 40 ms frames starts: media seconds, or timeline seconds for a timeline",
      -                          "type": "number"
      -                        }
      -                      },
      -                      "required": [
      -                        "start",
      -                        "end",
      -                        "peak_seconds",
      -                        "peak_probability"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "description": "Per sound: the runs of 40 ms frames at or above min_probability, in time order; empty when it never is",
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "min_probability",
      -                "spans",
      -                "peaks"
      -              ],
      -              "type": "object"
      -            },
      -            "speech": {
      -              "description": "With include [\"speech\"]: the speech probability of every 32 ms frame",
      -              "properties": {
      -                "frame_seconds": {
      -                  "description": "Each probability covers this long",
      -                  "type": "number"
      -                },
      -                "from": {
      -                  "description": "Seconds where the first probability starts",
      -                  "type": "number"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "probabilities": {
      -                  "description": "Speech probability 0–1, one per frame, in order",
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "frame_seconds",
      -                "from",
      -                "probabilities"
      -              ],
      -              "type": "object"
      -            },
      -            "status": {
      -              "description": "importing: not probed yet; processing: usable in edits, proxy still rendering; ready; failed",
      -              "enum": [
      -                "importing",
      -                "processing",
      -                "ready",
      -                "failed"
      -              ],
      -              "type": "string"
      -            },
      -            "transcript": {
      -              "description": "With include [\"transcript\"]: every word as {text, start, end, confidence}",
      -              "properties": {
      -                "aligned_by": {
      -                  "description": "The model that moved word edges to where the letters sound (English); null: the times are whisper's own, up to about a second off",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "from": {
      -                  "description": "The stretch transcribed, if not all",
      -                  "type": "number"
      -                },
      -                "language": {
      -                  "type": "string"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "text": {
      -                  "type": "string"
      -                },
      -                "until": {
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "words": {
      -                  "description": "Media seconds. Aligned words start and end within about 0.05 s of where their letters sound; an end on a soft consonant (s, t, k, f) or a breath can ring on up to about 0.1 s more. Short ums are often missing from the words; kind speech finds them as speech. A word \"-\" (or one starting with it) is whisper marking a new speaker, as subtitles do: a hint only; kind speakers measures who speaks when",
      -                  "items": {
      -                    "properties": {
      -                      "confidence": {
      -                        "description": "0–1: how sure whisper is of the word itself",
      -                        "type": "number"
      -                      },
      -                      "end": {
      -                        "type": "number"
      -                      },
      -                      "speaker": {
      -                        "description": "Who says it, from the latest speakers run",
      -                        "type": [
      -                          "number",
      -                          "null"
      -                        ]
      -                      },
      -                      "start": {
      -                        "type": "number"
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      },
      -                      "timing_confidence": {
      -                        "description": "0–1: how clearly the letters were heard between start and end; null: not aligned (digits, symbols, other languages), times fitted between neighbours",
      -                        "type": [
      -                          "number",
      -                          "null"
      -                        ]
      -                      }
      -                    },
      -                    "required": [
      -                      "text",
      -                      "start",
      -                      "end",
      -                      "confidence"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "language",
      -                "text",
      -                "words"
      -              ],
      -              "type": "object"
      -            },
      -            "upload": {
      -              "description": "media.import {source: {upload}}: where to send the file. It imports once the last byte arrives (the PUT answers with the job_id); media.get says where it stands",
      -              "properties": {
      -                "expires_at": {
      -                  "type": "string"
      -                },
      -                "max_bytes": {
      -                  "type": "number"
      -                },
      -                "upload_id": {
      -                  "description": "Upload handle from media.upload",
      -                  "pattern": "^u_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "url": {
      -                  "description": "Signed: PUT the file here; no other credentials needed",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "upload_id",
      -                "url",
      -                "expires_at",
      -                "max_bytes"
      -              ],
      -              "type": "object"
      -            },
      -            "url": {
      -              "description": "media.get: a signed download of the file itself, once it has one",
      -              "type": "string"
      -            },
      -            "warnings": {
      -              "description": "create.motion and create.still: what went wrong in the page as it rendered (uncaught errors, console errors, files blocked or not found, tags never closed). It rendered anyway",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "width": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "media_id",
      -            "name",
      -            "status",
      -            "kind",
      -            "duration_seconds",
      -            "fps",
      -            "width",
      -            "height",
      -            "has_video",
      -            "has_audio",
      -            "codecs",
      -            "conform",
      -            "analysis"
      -          ],
      -          "type": "object"
      -        },
      -        "description": "Per stem asked for: the new audio media (32-bit float WAV, 44.1 kHz stereo)",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "media_id",
      -      "model",
      -      "stems"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "hint": {
      -        "type": "string"
      -      },
      -      "job_id": {
      -        "description": "Job handle; the same value is the MCP task id",
      -        "pattern": "^j_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "media_id": {
      -        "description": "The media it is making; usable in edits once processing",
      -        "pattern": "^m_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "working",
      -          "completed",
      -          "failed",
      -          "cancelled"
      -        ],
      -        "type": "string"
      -      },
      -      "status_uri": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "job_id",
      -      "status",
      -      "status_uri",
      -      "hint"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "media_id": {
      +        "description": "The media the stems came from",
      +        "pattern": "^m_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "model": {
      +        "type": "string"
      +      },
      +      "stems": {
      +        "additionalProperties": {
      +          "properties": {
      +            "analyses": {
      +              "description": "Summaries of media.analyze results (counts, not data); include puts each in full at the top level",
      +              "properties": {
      +                "beats": {
      +                  "properties": {
      +                    "beats": {
      +                      "type": "number"
      +                    },
      +                    "bpm": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "bpm",
      +                    "beats"
      +                  ],
      +                  "type": "object"
      +                },
      +                "colour": {
      +                  "properties": {
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "regions": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    }
      +                  },
      +                  "required": [
      +                    "frames",
      +                    "regions"
      +                  ],
      +                  "type": "object"
      +                },
      +                "faces": {
      +                  "properties": {
      +                    "frames_with_faces": {
      +                      "type": "number"
      +                    },
      +                    "rate": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "rate",
      +                    "frames_with_faces"
      +                  ],
      +                  "type": "object"
      +                },
      +                "look": {
      +                  "description": "frames and questions: the latest run",
      +                  "properties": {
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "questions": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "runs": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "runs",
      +                    "frames",
      +                    "questions"
      +                  ],
      +                  "type": "object"
      +                },
      +                "picture": {
      +                  "properties": {
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "from": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "frames",
      +                    "from"
      +                  ],
      +                  "type": "object"
      +                },
      +                "sounds": {
      +                  "description": "heard: the sounds the latest run found at or above its min_probability",
      +                  "properties": {
      +                    "heard": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "min_probability": {
      +                      "type": "number"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "min_probability",
      +                    "heard"
      +                  ],
      +                  "type": "object"
      +                },
      +                "speakers": {
      +                  "properties": {
      +                    "model": {
      +                      "type": "string"
      +                    },
      +                    "speakers": {
      +                      "type": "number"
      +                    },
      +                    "turns": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "speakers",
      +                    "turns"
      +                  ],
      +                  "type": "object"
      +                },
      +                "speech": {
      +                  "properties": {
      +                    "frame_seconds": {
      +                      "type": "number"
      +                    },
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "frames",
      +                    "frame_seconds"
      +                  ],
      +                  "type": "object"
      +                },
      +                "transcript": {
      +                  "properties": {
      +                    "language": {
      +                      "type": "string"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    },
      +                    "words": {
      +                      "description": "How many words; the words themselves are in transcript.words",
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "language",
      +                    "words"
      +                  ],
      +                  "type": "object"
      +                },
      +                "voice": {
      +                  "additionalProperties": {},
      +                  "description": "frames, and the summary media.analyze voice gives",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "analysis": {
      +              "anyOf": [
      +                {
      +                  "properties": {
      +                    "channels": {
      +                      "description": "Each channel at import",
      +                      "items": {
      +                        "properties": {
      +                          "channel": {
      +                            "exclusiveMinimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "noise_floor_dbfs": {
      +                            "type": [
      +                              "number",
      +                              "null"
      +                            ]
      +                          },
      +                          "peak_dbfs": {
      +                            "type": [
      +                              "number",
      +                              "null"
      +                            ]
      +                          },
      +                          "rms_dbfs": {
      +                            "type": [
      +                              "number",
      +                              "null"
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "channel",
      +                          "rms_dbfs",
      +                          "peak_dbfs",
      +                          "noise_floor_dbfs"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "loudness_lufs": {
      +                      "description": "Integrated loudness at import",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "loudness_lufs"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "beats": {
      +              "properties": {
      +                "beats": {
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                },
      +                "bpm": {
      +                  "type": "number"
      +                },
      +                "downbeats": {
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                },
      +                "strengths": {
      +                  "description": "Per beat: its onset strength, 0–1 of the strongest in the sound",
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "bpm",
      +                "beats",
      +                "downbeats"
      +              ],
      +              "type": "object"
      +            },
      +            "codecs": {
      +              "properties": {
      +                "audio": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "video": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "video",
      +                "audio"
      +              ],
      +              "type": "object"
      +            },
      +            "conform": {
      +              "description": "Why a mezzanine was made (vfr, rotation, hdr, codec); empty when not needed",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "created_at": {
      +              "description": "When it was imported or made",
      +              "type": "string"
      +            },
      +            "duration_seconds": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "error": {
      +              "properties": {
      +                "code": {
      +                  "enum": [
      +                    "bad_request",
      +                    "no_audio",
      +                    "not_found",
      +                    "expired",
      +                    "media_not_ready",
      +                    "media_offline",
      +                    "engine_error",
      +                    "render_failed",
      +                    "interrupted",
      +                    "stalled",
      +                    "cancelled",
      +                    "credential_required",
      +                    "credential_invalid",
      +                    "output_exists",
      +                    "path_not_allowed",
      +                    "limit_exceeded",
      +                    "quota_exceeded",
      +                    "subscription_required",
      +                    "email_unverified",
      +                    "service_unavailable",
      +                    "server_busy"
      +                  ],
      +                  "type": "string"
      +                },
      +                "detail": {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "hint": {
      +                  "type": "string"
      +                },
      +                "message": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "code",
      +                "message"
      +              ],
      +              "type": "object"
      +            },
      +            "expires_at": {
      +              "description": "When url and page_url stop working",
      +              "type": "string"
      +            },
      +            "extension": {
      +              "description": "The extension its format takes (.png, .mp4), from the file itself, not its name",
      +              "type": "string"
      +            },
      +            "faces": {
      +              "properties": {
      +                "frames": {
      +                  "items": {
      +                    "properties": {
      +                      "faces": {
      +                        "items": {
      +                          "description": "Top-left corner x, y and size w, h, fractions of the picture (centre: x + w/2, y + h/2); score 0–1",
      +                          "properties": {
      +                            "h": {
      +                              "type": "number"
      +                            },
      +                            "score": {
      +                              "type": "number"
      +                            },
      +                            "w": {
      +                              "type": "number"
      +                            },
      +                            "x": {
      +                              "type": "number"
      +                            },
      +                            "y": {
      +                              "type": "number"
      +                            }
      +                          },
      +                          "required": [
      +                            "x",
      +                            "y",
      +                            "w",
      +                            "h",
      +                            "score"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "time": {
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "time",
      +                      "faces"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "rate": {
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "rate",
      +                "frames"
      +              ],
      +              "type": "object"
      +            },
      +            "fingerprint": {
      +              "description": "Identity of the file (BLAKE3 of its size and first, middle and last 4 MB), as export.video gives",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "font_family": {
      +              "description": "Fonts: the family; use font_media_id in a text style to set text in it",
      +              "type": "string"
      +            },
      +            "fps": {
      +              "anyOf": [
      +                {
      +                  "properties": {
      +                    "den": {
      +                      "type": "number"
      +                    },
      +                    "num": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "num",
      +                    "den"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "has_audio": {
      +              "type": "boolean"
      +            },
      +            "has_video": {
      +              "type": "boolean"
      +            },
      +            "height": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "job": {
      +              "description": "media.get, while importing or being made: the job doing it",
      +              "properties": {
      +                "job_id": {
      +                  "description": "Job handle; the same value is the MCP task id",
      +                  "pattern": "^j_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "progress": {
      +                  "type": "number"
      +                },
      +                "seconds_left": {
      +                  "type": "number"
      +                },
      +                "status": {
      +                  "enum": [
      +                    "working",
      +                    "completed",
      +                    "failed",
      +                    "cancelled"
      +                  ],
      +                  "type": "string"
      +                },
      +                "status_message": {
      +                  "type": "string"
      +                },
      +                "tool": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "job_id",
      +                "tool",
      +                "status"
      +              ],
      +              "type": "object"
      +            },
      +            "kind": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "video",
      +                    "audio",
      +                    "image",
      +                    "font",
      +                    "lut"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "look": {
      +              "properties": {
      +                "runs": {
      +                  "items": {
      +                    "properties": {
      +                      "frames": {
      +                        "items": {
      +                          "properties": {
      +                            "answers": {
      +                              "additionalProperties": {
      +                                "additionalProperties": {},
      +                                "propertyNames": {
      +                                  "type": "string"
      +                                },
      +                                "type": "object"
      +                              },
      +                              "propertyNames": {
      +                                "type": "string"
      +                              },
      +                              "type": "object"
      +                            },
      +                            "time": {
      +                              "type": "number"
      +                            }
      +                          },
      +                          "required": [
      +                            "time",
      +                            "answers"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "model": {
      +                        "type": "string"
      +                      },
      +                      "questions": {
      +                        "additionalProperties": {},
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "state": {
      +                        "additionalProperties": {},
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "with_previous": {
      +                        "type": "boolean"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "model",
      +                      "questions",
      +                      "with_previous",
      +                      "frames"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "runs"
      +              ],
      +              "type": "object"
      +            },
      +            "media_id": {
      +              "description": "Media handle from media.import or a create.* tool",
      +              "pattern": "^m_[0-9a-z]{26}$",
      +              "type": "string"
      +            },
      +            "mime_type": {
      +              "description": "Its MIME type, likewise",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "origin": {
      +              "description": "Where it came from, to tell one version from another: the import source, the export of which timeline, or the create.* tool and the media it was made from",
      +              "properties": {
      +                "attached": {
      +                  "description": "url: the file the user attached in the chat, passed as media.import file",
      +                  "type": "boolean"
      +                },
      +                "file_name": {
      +                  "description": "upload: the name the file was sent with",
      +                  "type": "string"
      +                },
      +                "frame": {
      +                  "description": "still: the frame",
      +                  "type": "number"
      +                },
      +                "from": {
      +                  "description": "upload: a file the user sent; url: downloaded; path: a media root; render: an export.video; created: a create.* tool; still: a frame of a video or an edit",
      +                  "enum": [
      +                    "upload",
      +                    "url",
      +                    "path",
      +                    "render",
      +                    "created",
      +                    "still"
      +                  ],
      +                  "type": "string"
      +                },
      +                "job_id": {
      +                  "description": "render: the export.video job; created: the create.* job",
      +                  "pattern": "^j_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "media_id": {
      +                  "description": "still: the video the frame is from",
      +                  "pattern": "^m_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "media_ids": {
      +                  "description": "created: the media it was made from (a cutout's source, a page's assets)",
      +                  "items": {
      +                    "description": "Media handle from media.import or a create.* tool",
      +                    "pattern": "^m_[0-9a-z]{26}$",
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "path": {
      +                  "description": "path: the file it was imported from",
      +                  "type": "string"
      +                },
      +                "preset": {
      +                  "description": "render: the export preset",
      +                  "type": "string"
      +                },
      +                "range": {
      +                  "description": "render: the frames exported, when not the whole timeline",
      +                  "properties": {
      +                    "end": {
      +                      "type": "number"
      +                    },
      +                    "start": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "start",
      +                    "end"
      +                  ],
      +                  "type": "object"
      +                },
      +                "recipe": {
      +                  "description": "created: a hash of what it was made from; the same recipe makes the same media",
      +                  "type": "string"
      +                },
      +                "sources": {
      +                  "description": "render: where each stretch of this file comes from, per track, read from the timeline when it was exported (kept after the timeline expires). With a speed curve, source_in and source_out are the clip's whole source range",
      +                  "items": {
      +                    "properties": {
      +                      "end": {
      +                        "type": "number"
      +                      },
      +                      "kind": {
      +                        "enum": [
      +                          "video",
      +                          "audio"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "media_id": {
      +                        "description": "The media this stretch plays",
      +                        "pattern": "^m_[0-9a-z]{26}$",
      +                        "type": "string"
      +                      },
      +                      "source_in": {
      +                        "description": "Seconds into that media",
      +                        "type": "number"
      +                      },
      +                      "source_out": {
      +                        "type": "number"
      +                      },
      +                      "speed": {
      +                        "additionalProperties": {},
      +                        "description": "The clip's speed change, as clip.set_speed set it",
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "start": {
      +                        "description": "Seconds into this file",
      +                        "type": "number"
      +                      },
      +                      "track_id": {
      +                        "description": "Track of the timeline; outer/inner inside a nested one",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "track_id",
      +                      "kind",
      +                      "start",
      +                      "end",
      +                      "media_id",
      +                      "source_in",
      +                      "source_out"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "timeline_id": {
      +                  "description": "render: the timeline that was exported; still: the edit the frame is from",
      +                  "pattern": "^tl_[0-9a-f]{32}$",
      +                  "type": "string"
      +                },
      +                "tool": {
      +                  "description": "created: the create.* tool that made it",
      +                  "type": "string"
      +                },
      +                "upload_id": {
      +                  "description": "Upload handle from media.upload",
      +                  "pattern": "^u_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "description": "url: the address it was downloaded from, without its query string",
      +                  "type": "string"
      +                },
      +                "via": {
      +                  "description": "upload: sent through a media.upload link, dropped on the cuttingfloor site, or a data: URI",
      +                  "enum": [
      +                    "media.upload",
      +                    "account_page",
      +                    "data_uri"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "from"
      +              ],
      +              "type": "object"
      +            },
      +            "page_url": {
      +              "description": "media.get: a page that plays or shows the file in any browser, with no sign-in, to give a person; works until expires_at",
      +              "type": "string"
      +            },
      +            "pages": {
      +              "additionalProperties": {
      +                "properties": {
      +                  "first": {
      +                    "description": "Index in the whole list of the first item returned (transcript: the word index clip.add source {words} takes)",
      +                    "type": "integer"
      +                  },
      +                  "list": {
      +                    "description": "The list paged: transcript.words, beats.beats, faces.frames, speech.probabilities (one per frame_seconds from `from`), speakers.turns, voice.frames, colour.frames, picture.columns (every column alike), or look runs[].frames (each run is cut the same way; first and the counts are the latest run's)",
      +                    "type": "string"
      +                  },
      +                  "matching": {
      +                    "description": "Items in the time range (the whole list without one)",
      +                    "type": "integer"
      +                  },
      +                  "next_offset": {
      +                    "anyOf": [
      +                      {
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ],
      +                    "description": "The offset that gives the next page of this range, or null at its end"
      +                  },
      +                  "returned": {
      +                    "type": "integer"
      +                  },
      +                  "total": {
      +                    "description": "Items in the whole list",
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "list",
      +                  "first",
      +                  "returned",
      +                  "matching",
      +                  "total",
      +                  "next_offset"
      +                ],
      +                "type": "object"
      +              },
      +              "description": "media.get with a range, offset or limit: per included analysis, which piece of its list came back",
      +              "propertyNames": {
      +                "enum": [
      +                  "transcript",
      +                  "beats",
      +                  "faces",
      +                  "look",
      +                  "speech",
      +                  "sounds",
      +                  "speakers",
      +                  "voice",
      +                  "colour",
      +                  "picture"
      +                ],
      +                "type": "string"
      +              },
      +              "type": "object"
      +            },
      +            "probe": {
      +              "description": "media.get: everything FFprobe read from the file, as it gives it: the format and every stream (codec, pix_fmt, color_space, color_primaries, color_transfer, color_range, bit depth, sample rate, channel layout, tags, side data). Not for fonts and LUTs",
      +              "properties": {
      +                "format": {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "streams": {
      +                  "items": {
      +                    "additionalProperties": {},
      +                    "propertyNames": {
      +                      "type": "string"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "format",
      +                "streams"
      +              ],
      +              "type": "object"
      +            },
      +            "sound_seconds": {
      +              "description": "How long the sound runs; under duration_seconds, the end is soundless",
      +              "type": "number"
      +            },
      +            "sounds": {
      +              "description": "With include [\"sounds\"]: the latest media.analyze sounds run, every probability included",
      +              "properties": {
      +                "min_probability": {
      +                  "type": "number"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "peaks": {
      +                  "additionalProperties": {
      +                    "type": "number"
      +                  },
      +                  "description": "Per sound reported: the highest probability it reaches anywhere",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "scores": {
      +                  "description": "Every probability, for your own cut-off or arithmetic",
      +                  "properties": {
      +                    "start_seconds": {
      +                      "description": "Where the first value starts: media seconds, or timeline seconds for a timeline",
      +                      "type": "number"
      +                    },
      +                    "step_seconds": {
      +                      "description": "Seconds each value covers: 0.04 (every frame) unless asked or too long",
      +                      "type": "number"
      +                    },
      +                    "values": {
      +                      "additionalProperties": {
      +                        "items": {
      +                          "type": "number"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "description": "Per sound, the highest probability in each step, 0 to 1",
      +                      "propertyNames": {
      +                        "type": "string"
      +                      },
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "start_seconds",
      +                    "step_seconds",
      +                    "values"
      +                  ],
      +                  "type": "object"
      +                },
      +                "spans": {
      +                  "additionalProperties": {
      +                    "items": {
      +                      "properties": {
      +                        "end": {
      +                          "description": "Where it ends, on the same clock",
      +                          "type": "number"
      +                        },
      +                        "peak_probability": {
      +                          "type": "number"
      +                        },
      +                        "peak_seconds": {
      +                          "description": "The middle of the most likely frame",
      +                          "type": "number"
      +                        },
      +                        "start": {
      +                          "description": "Where the run of matching 40 ms frames starts: media seconds, or timeline seconds for a timeline",
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "start",
      +                        "end",
      +                        "peak_seconds",
      +                        "peak_probability"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "description": "Per sound: the runs of 40 ms frames at or above min_probability, in time order; empty when it never is",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "min_probability",
      +                "spans",
      +                "peaks"
      +              ],
      +              "type": "object"
      +            },
      +            "speech": {
      +              "description": "With include [\"speech\"]: the speech probability of every 32 ms frame",
      +              "properties": {
      +                "frame_seconds": {
      +                  "description": "Each probability covers this long",
      +                  "type": "number"
      +                },
      +                "from": {
      +                  "description": "Seconds where the first probability starts",
      +                  "type": "number"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "probabilities": {
      +                  "description": "Speech probability 0–1, one per frame, in order",
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "frame_seconds",
      +                "from",
      +                "probabilities"
      +              ],
      +              "type": "object"
      +            },
      +            "status": {
      +              "description": "importing: not probed yet; processing: usable in edits, proxy still rendering; ready; failed",
      +              "enum": [
      +                "importing",
      +                "processing",
      +                "ready",
      +                "failed"
      +              ],
      +              "type": "string"
      +            },
      +            "transcript": {
      +              "description": "With include [\"transcript\"]: every word as {text, start, end, confidence}",
      +              "properties": {
      +                "aligned_by": {
      +                  "description": "The model that moved word edges to where the letters sound (English); null: the times are whisper's own, up to about a second off",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "from": {
      +                  "description": "The stretch transcribed, if not all",
      +                  "type": "number"
      +                },
      +                "language": {
      +                  "type": "string"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "text": {
      +                  "type": "string"
      +                },
      +                "until": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "words": {
      +                  "description": "Media seconds. Aligned words start and end within about 0.05 s of where their letters sound; an end on a soft consonant (s, t, k, f) or a breath can ring on up to about 0.1 s more. Short ums are often missing from the words; kind speech finds them as speech. A word \"-\" (or one starting with it) is whisper marking a new speaker, as subtitles do: a hint only; kind speakers measures who speaks when",
      +                  "items": {
      +                    "properties": {
      +                      "confidence": {
      +                        "description": "0–1: how sure whisper is of the word itself",
      +                        "type": "number"
      +                      },
      +                      "end": {
      +                        "type": "number"
      +                      },
      +                      "speaker": {
      +                        "description": "Who says it, from the latest speakers run",
      +                        "type": [
      +                          "number",
      +                          "null"
      +                        ]
      +                      },
      +                      "start": {
      +                        "type": "number"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      },
      +                      "timing_confidence": {
      +                        "description": "0–1: how clearly the letters were heard between start and end; null: not aligned (digits, symbols, other languages), times fitted between neighbours",
      +                        "type": [
      +                          "number",
      +                          "null"
      +                        ]
      +                      }
      +                    },
      +                    "required": [
      +                      "text",
      +                      "start",
      +                      "end",
      +                      "confidence"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "language",
      +                "text",
      +                "words"
      +              ],
      +              "type": "object"
      +            },
      +            "upload": {
      +              "description": "media.import {source: {upload}}: where to send the file. It imports once the last byte arrives (the PUT answers with the job_id); media.get says where it stands",
      +              "properties": {
      +                "expires_at": {
      +                  "type": "string"
      +                },
      +                "max_bytes": {
      +                  "type": "number"
      +                },
      +                "upload_id": {
      +                  "description": "Upload handle from media.upload",
      +                  "pattern": "^u_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "description": "Signed: PUT the file here; no other credentials needed",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "upload_id",
      +                "url",
      +                "expires_at",
      +                "max_bytes"
      +              ],
      +              "type": "object"
      +            },
      +            "url": {
      +              "description": "media.get: a signed download of the file itself, once it has one",
      +              "type": "string"
      +            },
      +            "warnings": {
      +              "description": "create.motion and create.still: what went wrong in the page as it rendered (uncaught errors, console errors, files blocked or not found, tags never closed). It rendered anyway",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "width": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "media_id",
      +            "name",
      +            "status",
      +            "kind",
      +            "duration_seconds",
      +            "fps",
      +            "width",
      +            "height",
      +            "has_video",
      +            "has_audio",
      +            "codecs",
      +            "conform",
      +            "analysis"
      +          ],
      +          "type": "object"
      +        },
      +        "description": "Per stem asked for: the new audio media (32-bit float WAV, 44.1 kHz stereo)",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "media_id",
      +      "model",
      +      "stems"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "hint": {
      +        "type": "string"
      +      },
      +      "job_id": {
      +        "description": "Job handle; the same value is the MCP task id",
      +        "pattern": "^j_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "media_id": {
      +        "description": "The media it is making; usable in edits once processing",
      +        "pattern": "^m_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "working",
      +          "completed",
      +          "failed",
      +          "cancelled"
      +        ],
      +        "type": "string"
      +      },
      +      "status_uri": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "job_id",
      +      "status",
      +      "status_uri",
      +      "hint"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "media_id": {
      -        "description": "The media the stems came from",
      -        "pattern": "^m_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "model": {
      -        "type": "string"
      -      },
      -      "stems": {
      -        "additionalProperties": {
      -          "properties": {
      -            "analyses": {
      -              "description": "Summaries of media.analyze results (counts, not data); include puts each in full at the top level",
      -              "properties": {
      -                "beats": {
      -                  "properties": {
      -                    "beats": {
      -                      "type": "number"
      -                    },
      -                    "bpm": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "bpm",
      -                    "beats"
      -                  ],
      -                  "type": "object"
      -                },
      -                "faces": {
      -                  "properties": {
      -                    "frames_with_faces": {
      -                      "type": "number"
      -                    },
      -                    "rate": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "rate",
      -                    "frames_with_faces"
      -                  ],
      -                  "type": "object"
      -                },
      -                "look": {
      -                  "description": "frames and questions: the latest run",
      -                  "properties": {
      -                    "frames": {
      -                      "type": "number"
      -                    },
      -                    "questions": {
      -                      "items": {
      -                        "type": "string"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "runs": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "runs",
      -                    "frames",
      -                    "questions"
      -                  ],
      -                  "type": "object"
      -                },
      -                "sounds": {
      -                  "description": "heard: the sounds the latest run found at or above its min_probability",
      -                  "properties": {
      -                    "heard": {
      -                      "items": {
      -                        "type": "string"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "min_probability": {
      -                      "type": "number"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "min_probability",
      -                    "heard"
      -                  ],
      -                  "type": "object"
      -                },
      -                "speech": {
      -                  "properties": {
      -                    "frame_seconds": {
      -                      "type": "number"
      -                    },
      -                    "frames": {
      -                      "type": "number"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "frames",
      -                    "frame_seconds"
      -                  ],
      -                  "type": "object"
      -                },
      -                "transcript": {
      -                  "properties": {
      -                    "language": {
      -                      "type": "string"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    },
      -                    "words": {
      -                      "description": "How many words; the words themselves are in transcript.words",
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "language",
      -                    "words"
      -                  ],
      -                  "type": "object"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "analysis": {
      -              "anyOf": [
      -                {
      -                  "properties": {
      -                    "loudness_lufs": {
      -                      "description": "Integrated loudness at import",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "loudness_lufs"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "beats": {
      -              "properties": {
      -                "beats": {
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                },
      -                "bpm": {
      -                  "type": "number"
      -                },
      -                "downbeats": {
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "bpm",
      -                "beats",
      -                "downbeats"
      -              ],
      -              "type": "object"
      -            },
      -            "codecs": {
      -              "properties": {
      -                "audio": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "video": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "video",
      -                "audio"
      -              ],
      -              "type": "object"
      -            },
      -            "conform": {
      -              "description": "Why a mezzanine was made (vfr, rotation, hdr, codec); empty when not needed",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "created_at": {
      -              "description": "When it was imported or made",
      -              "type": "string"
      -            },
      -            "duration_seconds": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "error": {
      -              "properties": {
      -                "code": {
      -                  "enum": [
      -                    "bad_request",
      -                    "no_audio",
      -                    "not_found",
      -                    "expired",
      -                    "media_not_ready",
      -                    "media_offline",
      -                    "engine_error",
      -                    "render_failed",
      -                    "interrupted",
      -                    "cancelled",
      -                    "credential_required",
      -                    "credential_invalid",
      -                    "output_exists",
      -                    "path_not_allowed",
      -                    "limit_exceeded",
      -                    "quota_exceeded",
      -                    "subscription_required",
      -                    "email_unverified",
      -                    "service_unavailable",
      -                    "server_busy"
      -                  ],
      -                  "type": "string"
      -                },
      -                "detail": {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "hint": {
      -                  "type": "string"
      -                },
      -                "message": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "code",
      -                "message"
      -              ],
      -              "type": "object"
      -            },
      -            "expires_at": {
      -              "description": "When url and page_url stop working",
      -              "type": "string"
      -            },
      -            "extension": {
      -              "description": "The extension its format takes (.png, .mp4), from the file itself, not its name",
      -              "type": "string"
      -            },
      -            "faces": {
      -              "properties": {
      -                "frames": {
      -                  "items": {
      -                    "properties": {
      -                      "faces": {
      -                        "items": {
      -                          "properties": {
      -                            "h": {
      -                              "type": "number"
      -                            },
      -                            "score": {
      -                              "type": "number"
      -                            },
      -                            "w": {
      -                              "type": "number"
      -                            },
      -                            "x": {
      -                              "type": "number"
      -                            },
      -                            "y": {
      -                              "type": "number"
      -                            }
      -                          },
      -                          "required": [
      -                            "x",
      -                            "y",
      -                            "w",
      -                            "h",
      -                            "score"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "time": {
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "time",
      -                      "faces"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "rate": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "rate",
      -                "frames"
      -              ],
      -              "type": "object"
      -            },
      -            "font_family": {
      -              "description": "Fonts: the family; use font_media_id in a text style to set text in it",
      -              "type": "string"
      -            },
      -            "fps": {
      -              "anyOf": [
      -                {
      -                  "properties": {
      -                    "den": {
      -                      "type": "number"
      -                    },
      -                    "num": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "num",
      -                    "den"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "has_audio": {
      -              "type": "boolean"
      -            },
      -            "has_video": {
      -              "type": "boolean"
      -            },
      -            "height": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "kind": {
      -              "anyOf": [
      -                {
      -                  "enum": [
      -                    "video",
      -                    "audio",
      -                    "image",
      -                    "font",
      -                    "lut"
      -                  ],
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "look": {
      -              "properties": {
      -                "runs": {
      -                  "items": {
      -                    "properties": {
      -                      "frames": {
      -                        "items": {
      -                          "properties": {
      -                            "answers": {
      -                              "additionalProperties": {
      -                                "additionalProperties": {},
      -                                "propertyNames": {
      -                                  "type": "string"
      -                                },
      -                                "type": "object"
      -                              },
      -                              "propertyNames": {
      -                                "type": "string"
      -                              },
      -                              "type": "object"
      -                            },
      -                            "time": {
      -                              "type": "number"
      -                            }
      -                          },
      -                          "required": [
      -                            "time",
      -                            "answers"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "model": {
      -                        "type": "string"
      -                      },
      -                      "questions": {
      -                        "additionalProperties": {},
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "state": {
      -                        "additionalProperties": {},
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "with_previous": {
      -                        "type": "boolean"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "model",
      -                      "questions",
      -                      "with_previous",
      -                      "frames"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "runs"
      -              ],
      -              "type": "object"
      -            },
      -            "media_id": {
      -              "description": "Media handle from media.import or a create.* tool",
      -              "pattern": "^m_[0-9a-z]{26}$",
      -              "type": "string"
      -            },
      -            "mime_type": {
      -              "description": "Its MIME type, likewise",
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "origin": {
      -              "description": "Where it came from, to tell one version from another: the import source, the export of which timeline, or the create.* tool and the media it was made from",
      -              "properties": {
      -                "attached": {
      -                  "description": "url: the file the user attached in the chat, passed as media.import file",
      -                  "type": "boolean"
      -                },
      -                "file_name": {
      -                  "description": "upload: the name the file was sent with",
      -                  "type": "string"
      -                },
      -                "from": {
      -                  "description": "upload: a file the user sent; url: downloaded; path: a media root; render: an export.video; created: a create.* tool",
      -                  "enum": [
      -                    "upload",
      -                    "url",
      -                    "path",
      -                    "render",
      -                    "created"
      -                  ],
      -                  "type": "string"
      -                },
      -                "job_id": {
      -                  "description": "render: the export.video job; created: the create.* job",
      -                  "pattern": "^j_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "media_ids": {
      -                  "description": "created: the media it was made from (a cutout's source, a page's assets)",
      -                  "items": {
      -                    "description": "Media handle from media.import or a create.* tool",
      -                    "pattern": "^m_[0-9a-z]{26}$",
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                "path": {
      -                  "description": "path: the file it was imported from",
      -                  "type": "string"
      -                },
      -                "preset": {
      -                  "description": "render: the export preset",
      -                  "type": "string"
      -                },
      -                "range": {
      -                  "description": "render: the frames exported, when not the whole timeline",
      -                  "properties": {
      -                    "end": {
      -                      "type": "number"
      -                    },
      -                    "start": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "start",
      -                    "end"
      -                  ],
      -                  "type": "object"
      -                },
      -                "recipe": {
      -                  "description": "created: a hash of what it was made from; the same recipe makes the same media",
      -                  "type": "string"
      -                },
      -                "sources": {
      -                  "description": "render: where each stretch of this file comes from, per track, read from the timeline when it was exported (kept after the timeline expires). With a speed curve, source_in and source_out are the clip's whole source range",
      -                  "items": {
      -                    "properties": {
      -                      "end": {
      -                        "type": "number"
      -                      },
      -                      "kind": {
      -                        "enum": [
      -                          "video",
      -                          "audio"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "media_id": {
      -                        "description": "The media this stretch plays",
      -                        "pattern": "^m_[0-9a-z]{26}$",
      -                        "type": "string"
      -                      },
      -                      "source_in": {
      -                        "description": "Seconds into that media",
      -                        "type": "number"
      -                      },
      -                      "source_out": {
      -                        "type": "number"
      -                      },
      -                      "speed": {
      -                        "additionalProperties": {},
      -                        "description": "The clip's speed change, as clip.set_speed set it",
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "start": {
      -                        "description": "Seconds into this file",
      -                        "type": "number"
      -                      },
      -                      "track_id": {
      -                        "description": "Track of the timeline; outer/inner inside a nested one",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "track_id",
      -                      "kind",
      -                      "start",
      -                      "end",
      -                      "media_id",
      -                      "source_in",
      -                      "source_out"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "timeline_id": {
      -                  "description": "render: the timeline that was exported",
      -                  "pattern": "^tl_[0-9a-f]{32}$",
      -                  "type": "string"
      -                },
      -                "tool": {
      -                  "description": "created: the create.* tool that made it",
      -                  "type": "string"
      -                },
      -                "upload_id": {
      -                  "description": "Upload handle from media.upload",
      -                  "pattern": "^u_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "url": {
      -                  "description": "url: the address it was downloaded from, without its query string",
      -                  "type": "string"
      -                },
      -                "via": {
      -                  "description": "upload: sent through a media.upload link, dropped on the account page, or a data: URI",
      -                  "enum": [
      -                    "media.upload",
      -                    "account_page",
      -                    "data_uri"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "from"
      -              ],
      -              "type": "object"
      -            },
      -            "page_url": {
      -              "description": "media.get: a page that plays or shows the file in any browser, with no sign-in, to give a person; works until expires_at",
      -              "type": "string"
      -            },
      -            "pages": {
      -              "additionalProperties": {
      -                "properties": {
      -                  "first": {
      -                    "description": "Index in the whole list of the first item returned (transcript: the word index clip.add source {words} takes)",
      -                    "type": "integer"
      -                  },
      -                  "list": {
      -                    "description": "The list paged: transcript.words, beats.beats, faces.frames, speech.probabilities (one per frame_seconds from `from`), or look runs[].frames (each run is cut the same way; first and the counts are the latest run's)",
      -                    "type": "string"
      -                  },
      -                  "matching": {
      -                    "description": "Items in the time range (the whole list without one)",
      -                    "type": "integer"
      -                  },
      -                  "next_offset": {
      -                    "anyOf": [
      -                      {
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "The offset that gives the next page of this range, or null at its end"
      -                  },
      -                  "returned": {
      -                    "type": "integer"
      -                  },
      -                  "total": {
      -                    "description": "Items in the whole list",
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "list",
      -                  "first",
      -                  "returned",
      -                  "matching",
      -                  "total",
      -                  "next_offset"
      -                ],
      -                "type": "object"
      -              },
      -              "description": "media.get with a range, offset or limit: per included analysis, which piece of its list came back",
      -              "propertyNames": {
      -                "enum": [
      -                  "transcript",
      -                  "beats",
      -                  "faces",
      -                  "look",
      -                  "speech",
      -                  "sounds"
      -                ],
      -                "type": "string"
      -              },
      -              "type": "object"
      -            },
      -            "probe": {
      -              "description": "media.get: everything FFprobe read from the file, as it gives it: the format and every stream (codec, pix_fmt, color_space, color_primaries, color_transfer, color_range, bit depth, sample rate, channel layout, tags, side data). Not for fonts and LUTs",
      -              "properties": {
      -                "format": {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "streams": {
      -                  "items": {
      -                    "additionalProperties": {},
      -                    "propertyNames": {
      -                      "type": "string"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "format",
      -                "streams"
      -              ],
      -              "type": "object"
      -            },
      -            "sounds": {
      -              "description": "With include [\"sounds\"]: the latest media.analyze sounds run, every probability included",
      -              "properties": {
      -                "min_probability": {
      -                  "type": "number"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "peaks": {
      -                  "additionalProperties": {
      -                    "type": "number"
      -                  },
      -                  "description": "Per sound reported: the highest probability it reaches anywhere",
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "scores": {
      -                  "description": "Every probability, for your own cut-off or arithmetic",
      -                  "properties": {
      -                    "start_seconds": {
      -                      "description": "Where the first value starts: media seconds, or timeline seconds for a timeline",
      -                      "type": "number"
      -                    },
      -                    "step_seconds": {
      -                      "description": "Seconds each value covers: 0.04 (every frame) unless asked or too long",
      -                      "type": "number"
      -                    },
      -                    "values": {
      -                      "additionalProperties": {
      -                        "items": {
      -                          "type": "number"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "description": "Per sound, the highest probability in each step, 0 to 1",
      -                      "propertyNames": {
      -                        "type": "string"
      -                      },
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "start_seconds",
      -                    "step_seconds",
      -                    "values"
      -                  ],
      -                  "type": "object"
      -                },
      -                "spans": {
      -                  "additionalProperties": {
      -                    "items": {
      -                      "properties": {
      -                        "end": {
      -                          "description": "Where it ends, on the same clock",
      -                          "type": "number"
      -                        },
      -                        "peak_probability": {
      -                          "type": "number"
      -                        },
      -                        "peak_seconds": {
      -                          "description": "The middle of the most likely frame",
      -                          "type": "number"
      -                        },
      -                        "start": {
      -                          "description": "Where the run of matching 40 ms frames starts: media seconds, or timeline seconds for a timeline",
      -                          "type": "number"
      -                        }
      -                      },
      -                      "required": [
      -                        "start",
      -                        "end",
      -                        "peak_seconds",
      -                        "peak_probability"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "description": "Per sound: the runs of 40 ms frames at or above min_probability, in time order; empty when it never is",
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "min_probability",
      -                "spans",
      -                "peaks"
      -              ],
      -              "type": "object"
      -            },
      -            "speech": {
      -              "description": "With include [\"speech\"]: the speech probability of every 32 ms frame",
      -              "properties": {
      -                "frame_seconds": {
      -                  "description": "Each probability covers this long",
      -                  "type": "number"
      -                },
      -                "from": {
      -                  "description": "Seconds where the first probability starts",
      -                  "type": "number"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "probabilities": {
      -                  "description": "Speech probability 0–1, one per frame, in order",
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "frame_seconds",
      -                "from",
      -                "probabilities"
      -              ],
      -              "type": "object"
      -            },
      -            "status": {
      -              "description": "importing: not probed yet; processing: usable in edits, proxy still rendering; ready; failed",
      -              "enum": [
      -                "importing",
      -                "processing",
      -                "ready",
      -                "failed"
      -              ],
      -              "type": "string"
      -            },
      -            "transcript": {
      -              "description": "With include [\"transcript\"]: every word as {text, start, end, confidence}",
      -              "properties": {
      -                "aligned_by": {
      -                  "description": "The model that moved word edges to where the letters sound (English); null: the times are whisper's own, up to about a second off",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "language": {
      -                  "type": "string"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "text": {
      -                  "type": "string"
      -                },
      -                "words": {
      -                  "description": "Media seconds. Aligned words start and end within about 0.05 s of where their letters sound; an end on a soft consonant (s, t, k, f) or a breath can ring on up to about 0.1 s more. Short ums are often missing from the words; kind speech finds them as speech",
      -                  "items": {
      -                    "properties": {
      -                      "confidence": {
      -                        "description": "0–1: how sure whisper is of the word itself",
      -                        "type": "number"
      -                      },
      -                      "end": {
      -                        "type": "number"
      -                      },
      -                      "start": {
      -                        "type": "number"
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      },
      -                      "timing_confidence": {
      -                        "description": "0–1: how clearly the letters were heard between start and end; null: not aligned (digits, symbols, other languages), times fitted between neighbours",
      -                        "type": [
      -                          "number",
      -                          "null"
      -                        ]
      -                      }
      -                    },
      -                    "required": [
      -                      "text",
      -                      "start",
      -                      "end",
      -                      "confidence"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "language",
      -                "text",
      -                "words"
      -              ],
      -              "type": "object"
      -            },
      -            "upload": {
      -              "description": "media.import {source: {upload}}: where to send the file. It imports once the last byte arrives (the PUT answers with the job_id); media.get says where it stands",
      -              "properties": {
      -                "expires_at": {
      -                  "type": "string"
      -                },
      -                "max_bytes": {
      -                  "type": "number"
      -                },
      -                "upload_id": {
      -                  "description": "Upload handle from media.upload",
      -                  "pattern": "^u_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "url": {
      -                  "description": "Signed: PUT the file here; no other credentials needed",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "upload_id",
      -                "url",
      -                "expires_at",
      -                "max_bytes"
      -              ],
      -              "type": "object"
      -            },
      -            "url": {
      -              "description": "media.get: a signed download of the file itself, once it has one",
      -              "type": "string"
      -            },
      -            "warnings": {
      -              "description": "create.motion and create.still: what went wrong in the page as it rendered (uncaught errors, console errors, files blocked or not found, tags never closed). It rendered anyway",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "width": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "media_id",
      -            "name",
      -            "status",
      -            "kind",
      -            "duration_seconds",
      -            "fps",
      -            "width",
      -            "height",
      -            "has_video",
      -            "has_audio",
      -            "codecs",
      -            "conform",
      -            "analysis"
      -          ],
      -          "type": "object"
      -        },
      -        "description": "Per stem asked for: the new audio media (32-bit float WAV, 44.1 kHz stereo)",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "media_id",
      -      "model",
      -      "stems"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "hint": {
      -        "type": "string"
      -      },
      -      "job_id": {
      -        "description": "Job handle; the same value is the MCP task id",
      -        "pattern": "^j_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "media_id": {
      -        "description": "The media it is making; usable in edits once processing",
      -        "pattern": "^m_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "working",
      -          "completed",
      -          "failed",
      -          "cancelled"
      -        ],
      -        "type": "string"
      -      },
      -      "status_uri": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "job_id",
      -      "status",
      -      "status_uri",
      -      "hint"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "media_id": {
      +        "description": "The media the stems came from",
      +        "pattern": "^m_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "model": {
      +        "type": "string"
      +      },
      +      "stems": {
      +        "additionalProperties": {
      +          "properties": {
      +            "analyses": {
      +              "description": "Summaries of media.analyze results (counts, not data); include puts each in full at the top level",
      +              "properties": {
      +                "beats": {
      +                  "properties": {
      +                    "beats": {
      +                      "type": "number"
      +                    },
      +                    "bpm": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "bpm",
      +                    "beats"
      +                  ],
      +                  "type": "object"
      +                },
      +                "colour": {
      +                  "properties": {
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "regions": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    }
      +                  },
      +                  "required": [
      +                    "frames",
      +                    "regions"
      +                  ],
      +                  "type": "object"
      +                },
      +                "faces": {
      +                  "properties": {
      +                    "frames_with_faces": {
      +                      "type": "number"
      +                    },
      +                    "rate": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "rate",
      +                    "frames_with_faces"
      +                  ],
      +                  "type": "object"
      +                },
      +                "look": {
      +                  "description": "frames and questions: the latest run",
      +                  "properties": {
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "questions": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "runs": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "runs",
      +                    "frames",
      +                    "questions"
      +                  ],
      +                  "type": "object"
      +                },
      +                "picture": {
      +                  "properties": {
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "from": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "frames",
      +                    "from"
      +                  ],
      +                  "type": "object"
      +                },
      +                "sounds": {
      +                  "description": "heard: the sounds the latest run found at or above its min_probability",
      +                  "properties": {
      +                    "heard": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "min_probability": {
      +                      "type": "number"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "min_probability",
      +                    "heard"
      +                  ],
      +                  "type": "object"
      +                },
      +                "speakers": {
      +                  "properties": {
      +                    "model": {
      +                      "type": "string"
      +                    },
      +                    "speakers": {
      +                      "type": "number"
      +                    },
      +                    "turns": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "speakers",
      +                    "turns"
      +                  ],
      +                  "type": "object"
      +                },
      +                "speech": {
      +                  "properties": {
      +                    "frame_seconds": {
      +                      "type": "number"
      +                    },
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "frames",
      +                    "frame_seconds"
      +                  ],
      +                  "type": "object"
      +                },
      +                "transcript": {
      +                  "properties": {
      +                    "language": {
      +                      "type": "string"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    },
      +                    "words": {
      +                      "description": "How many words; the words themselves are in transcript.words",
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "language",
      +                    "words"
      +                  ],
      +                  "type": "object"
      +                },
      +                "voice": {
      +                  "additionalProperties": {},
      +                  "description": "frames, and the summary media.analyze voice gives",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "analysis": {
      +              "anyOf": [
      +                {
      +                  "properties": {
      +                    "channels": {
      +                      "description": "Each channel at import",
      +                      "items": {
      +                        "properties": {
      +                          "channel": {
      +                            "exclusiveMinimum": 0,
      +                            "type": "integer"
      +                          },
      +                          "noise_floor_dbfs": {
      +                            "type": [
      +                              "number",
      +                              "null"
      +                            ]
      +                          },
      +                          "peak_dbfs": {
      +                            "type": [
      +                              "number",
      +                              "null"
      +                            ]
      +                          },
      +                          "rms_dbfs": {
      +                            "type": [
      +                              "number",
      +                              "null"
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "channel",
      +                          "rms_dbfs",
      +                          "peak_dbfs",
      +                          "noise_floor_dbfs"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "loudness_lufs": {
      +                      "description": "Integrated loudness at import",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "loudness_lufs"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "beats": {
      +              "properties": {
      +                "beats": {
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                },
      +                "bpm": {
      +                  "type": "number"
      +                },
      +                "downbeats": {
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                },
      +                "strengths": {
      +                  "description": "Per beat: its onset strength, 0–1 of the strongest in the sound",
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "bpm",
      +                "beats",
      +                "downbeats"
      +              ],
      +              "type": "object"
      +            },
      +            "codecs": {
      +              "properties": {
      +                "audio": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "video": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "video",
      +                "audio"
      +              ],
      +              "type": "object"
      +            },
      +            "conform": {
      +              "description": "Why a mezzanine was made (vfr, rotation, hdr, codec); empty when not needed",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "created_at": {
      +              "description": "When it was imported or made",
      +              "type": "string"
      +            },
      +            "duration_seconds": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "error": {
      +              "properties": {
      +                "code": {
      +                  "enum": [
      +                    "bad_request",
      +                    "no_audio",
      +                    "not_found",
      +                    "expired",
      +                    "media_not_ready",
      +                    "media_offline",
      +                    "engine_error",
      +                    "render_failed",
      +                    "interrupted",
      +                    "stalled",
      +                    "cancelled",
      +                    "credential_required",
      +                    "credential_invalid",
      +                    "output_exists",
      +                    "path_not_allowed",
      +                    "limit_exceeded",
      +                    "quota_exceeded",
      +                    "subscription_required",
      +                    "email_unverified",
      +                    "service_unavailable",
      +                    "server_busy"
      +                  ],
      +                  "type": "string"
      +                },
      +                "detail": {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "hint": {
      +                  "type": "string"
      +                },
      +                "message": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "code",
      +                "message"
      +              ],
      +              "type": "object"
      +            },
      +            "expires_at": {
      +              "description": "When url and page_url stop working",
      +              "type": "string"
      +            },
      +            "extension": {
      +              "description": "The extension its format takes (.png, .mp4), from the file itself, not its name",
      +              "type": "string"
      +            },
      +            "faces": {
      +              "properties": {
      +                "frames": {
      +                  "items": {
      +                    "properties": {
      +                      "faces": {
      +                        "items": {
      +                          "description": "Top-left corner x, y and size w, h, fractions of the picture (centre: x + w/2, y + h/2); score 0–1",
      +                          "properties": {
      +                            "h": {
      +                              "type": "number"
      +                            },
      +                            "score": {
      +                              "type": "number"
      +                            },
      +                            "w": {
      +                              "type": "number"
      +                            },
      +                            "x": {
      +                              "type": "number"
      +                            },
      +                            "y": {
      +                              "type": "number"
      +                            }
      +                          },
      +                          "required": [
      +                            "x",
      +                            "y",
      +                            "w",
      +                            "h",
      +                            "score"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "time": {
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "time",
      +                      "faces"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "rate": {
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "rate",
      +                "frames"
      +              ],
      +              "type": "object"
      +            },
      +            "fingerprint": {
      +              "description": "Identity of the file (BLAKE3 of its size and first, middle and last 4 MB), as export.video gives",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "font_family": {
      +              "description": "Fonts: the family; use font_media_id in a text style to set text in it",
      +              "type": "string"
      +            },
      +            "fps": {
      +              "anyOf": [
      +                {
      +                  "properties": {
      +                    "den": {
      +                      "type": "number"
      +                    },
      +                    "num": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "num",
      +                    "den"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "has_audio": {
      +              "type": "boolean"
      +            },
      +            "has_video": {
      +              "type": "boolean"
      +            },
      +            "height": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "job": {
      +              "description": "media.get, while importing or being made: the job doing it",
      +              "properties": {
      +                "job_id": {
      +                  "description": "Job handle; the same value is the MCP task id",
      +                  "pattern": "^j_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "progress": {
      +                  "type": "number"
      +                },
      +                "seconds_left": {
      +                  "type": "number"
      +                },
      +                "status": {
      +                  "enum": [
      +                    "working",
      +                    "completed",
      +                    "failed",
      +                    "cancelled"
      +                  ],
      +                  "type": "string"
      +                },
      +                "status_message": {
      +                  "type": "string"
      +                },
      +                "tool": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "job_id",
      +                "tool",
      +                "status"
      +              ],
      +              "type": "object"
      +            },
      +            "kind": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "video",
      +                    "audio",
      +                    "image",
      +                    "font",
      +                    "lut"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "look": {
      +              "properties": {
      +                "runs": {
      +                  "items": {
      +                    "properties": {
      +                      "frames": {
      +                        "items": {
      +                          "properties": {
      +                            "answers": {
      +                              "additionalProperties": {
      +                                "additionalProperties": {},
      +                                "propertyNames": {
      +                                  "type": "string"
      +                                },
      +                                "type": "object"
      +                              },
      +                              "propertyNames": {
      +                                "type": "string"
      +                              },
      +                              "type": "object"
      +                            },
      +                            "time": {
      +                              "type": "number"
      +                            }
      +                          },
      +                          "required": [
      +                            "time",
      +                            "answers"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "model": {
      +                        "type": "string"
      +                      },
      +                      "questions": {
      +                        "additionalProperties": {},
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "state": {
      +                        "additionalProperties": {},
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "with_previous": {
      +                        "type": "boolean"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "model",
      +                      "questions",
      +                      "with_previous",
      +                      "frames"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "runs"
      +              ],
      +              "type": "object"
      +            },
      +            "media_id": {
      +              "description": "Media handle from media.import or a create.* tool",
      +              "pattern": "^m_[0-9a-z]{26}$",
      +              "type": "string"
      +            },
      +            "mime_type": {
      +              "description": "Its MIME type, likewise",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "origin": {
      +              "description": "Where it came from, to tell one version from another: the import source, the export of which timeline, or the create.* tool and the media it was made from",
      +              "properties": {
      +                "attached": {
      +                  "description": "url: the file the user attached in the chat, passed as media.import file",
      +                  "type": "boolean"
      +                },
      +                "file_name": {
      +                  "description": "upload: the name the file was sent with",
      +                  "type": "string"
      +                },
      +                "frame": {
      +                  "description": "still: the frame",
      +                  "type": "number"
      +                },
      +                "from": {
      +                  "description": "upload: a file the user sent; url: downloaded; path: a media root; render: an export.video; created: a create.* tool; still: a frame of a video or an edit",
      +                  "enum": [
      +                    "upload",
      +                    "url",
      +                    "path",
      +                    "render",
      +                    "created",
      +                    "still"
      +                  ],
      +                  "type": "string"
      +                },
      +                "job_id": {
      +                  "description": "render: the export.video job; created: the create.* job",
      +                  "pattern": "^j_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "media_id": {
      +                  "description": "still: the video the frame is from",
      +                  "pattern": "^m_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "media_ids": {
      +                  "description": "created: the media it was made from (a cutout's source, a page's assets)",
      +                  "items": {
      +                    "description": "Media handle from media.import or a create.* tool",
      +                    "pattern": "^m_[0-9a-z]{26}$",
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "path": {
      +                  "description": "path: the file it was imported from",
      +                  "type": "string"
      +                },
      +                "preset": {
      +                  "description": "render: the export preset",
      +                  "type": "string"
      +                },
      +                "range": {
      +                  "description": "render: the frames exported, when not the whole timeline",
      +                  "properties": {
      +                    "end": {
      +                      "type": "number"
      +                    },
      +                    "start": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "start",
      +                    "end"
      +                  ],
      +                  "type": "object"
      +                },
      +                "recipe": {
      +                  "description": "created: a hash of what it was made from; the same recipe makes the same media",
      +                  "type": "string"
      +                },
      +                "sources": {
      +                  "description": "render: where each stretch of this file comes from, per track, read from the timeline when it was exported (kept after the timeline expires). With a speed curve, source_in and source_out are the clip's whole source range",
      +                  "items": {
      +                    "properties": {
      +                      "end": {
      +                        "type": "number"
      +                      },
      +                      "kind": {
      +                        "enum": [
      +                          "video",
      +                          "audio"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "media_id": {
      +                        "description": "The media this stretch plays",
      +                        "pattern": "^m_[0-9a-z]{26}$",
      +                        "type": "string"
      +                      },
      +                      "source_in": {
      +                        "description": "Seconds into that media",
      +                        "type": "number"
      +                      },
      +                      "source_out": {
      +                        "type": "number"
      +                      },
      +                      "speed": {
      +                        "additionalProperties": {},
      +                        "description": "The clip's speed change, as clip.set_speed set it",
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "start": {
      +                        "description": "Seconds into this file",
      +                        "type": "number"
      +                      },
      +                      "track_id": {
      +                        "description": "Track of the timeline; outer/inner inside a nested one",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "track_id",
      +                      "kind",
      +                      "start",
      +                      "end",
      +                      "media_id",
      +                      "source_in",
      +                      "source_out"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "timeline_id": {
      +                  "description": "render: the timeline that was exported; still: the edit the frame is from",
      +                  "pattern": "^tl_[0-9a-f]{32}$",
      +                  "type": "string"
      +                },
      +                "tool": {
      +                  "description": "created: the create.* tool that made it",
      +                  "type": "string"
      +                },
      +                "upload_id": {
      +                  "description": "Upload handle from media.upload",
      +                  "pattern": "^u_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "description": "url: the address it was downloaded from, without its query string",
      +                  "type": "string"
      +                },
      +                "via": {
      +                  "description": "upload: sent through a media.upload link, dropped on the account page, or a data: URI",
      +                  "enum": [
      +                    "media.upload",
      +                    "account_page",
      +                    "data_uri"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "from"
      +              ],
      +              "type": "object"
      +            },
      +            "page_url": {
      +              "description": "media.get: a page that plays or shows the file in any browser, with no sign-in, to give a person; works until expires_at",
      +              "type": "string"
      +            },
      +            "pages": {
      +              "additionalProperties": {
      +                "properties": {
      +                  "first": {
      +                    "description": "Index in the whole list of the first item returned (transcript: the word index clip.add source {words} takes)",
      +                    "type": "integer"
      +                  },
      +                  "list": {
      +                    "description": "The list paged: transcript.words, beats.beats, faces.frames, speech.probabilities (one per frame_seconds from `from`), speakers.turns, voice.frames, colour.frames, picture.columns (every column alike), or look runs[].frames (each run is cut the same way; first and the counts are the latest run's)",
      +                    "type": "string"
      +                  },
      +                  "matching": {
      +                    "description": "Items in the time range (the whole list without one)",
      +                    "type": "integer"
      +                  },
      +                  "next_offset": {
      +                    "anyOf": [
      +                      {
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ],
      +                    "description": "The offset that gives the next page of this range, or null at its end"
      +                  },
      +                  "returned": {
      +                    "type": "integer"
      +                  },
      +                  "total": {
      +                    "description": "Items in the whole list",
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "list",
      +                  "first",
      +                  "returned",
      +                  "matching",
      +                  "total",
      +                  "next_offset"
      +                ],
      +                "type": "object"
      +              },
      +              "description": "media.get with a range, offset or limit: per included analysis, which piece of its list came back",
      +              "propertyNames": {
      +                "enum": [
      +                  "transcript",
      +                  "beats",
      +                  "faces",
      +                  "look",
      +                  "speech",
      +                  "sounds",
      +                  "speakers",
      +                  "voice",
      +                  "colour",
      +                  "picture"
      +                ],
      +                "type": "string"
      +              },
      +              "type": "object"
      +            },
      +            "probe": {
      +              "description": "media.get: everything FFprobe read from the file, as it gives it: the format and every stream (codec, pix_fmt, color_space, color_primaries, color_transfer, color_range, bit depth, sample rate, channel layout, tags, side data). Not for fonts and LUTs",
      +              "properties": {
      +                "format": {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "streams": {
      +                  "items": {
      +                    "additionalProperties": {},
      +                    "propertyNames": {
      +                      "type": "string"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "format",
      +                "streams"
      +              ],
      +              "type": "object"
      +            },
      +            "sound_seconds": {
      +              "description": "How long the sound runs; under duration_seconds, the end is soundless",
      +              "type": "number"
      +            },
      +            "sounds": {
      +              "description": "With include [\"sounds\"]: the latest media.analyze sounds run, every probability included",
      +              "properties": {
      +                "min_probability": {
      +                  "type": "number"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "peaks": {
      +                  "additionalProperties": {
      +                    "type": "number"
      +                  },
      +                  "description": "Per sound reported: the highest probability it reaches anywhere",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "scores": {
      +                  "description": "Every probability, for your own cut-off or arithmetic",
      +                  "properties": {
      +                    "start_seconds": {
      +                      "description": "Where the first value starts: media seconds, or timeline seconds for a timeline",
      +                      "type": "number"
      +                    },
      +                    "step_seconds": {
      +                      "description": "Seconds each value covers: 0.04 (every frame) unless asked or too long",
      +                      "type": "number"
      +                    },
      +                    "values": {
      +                      "additionalProperties": {
      +                        "items": {
      +                          "type": "number"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "description": "Per sound, the highest probability in each step, 0 to 1",
      +                      "propertyNames": {
      +                        "type": "string"
      +                      },
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "start_seconds",
      +                    "step_seconds",
      +                    "values"
      +                  ],
      +                  "type": "object"
      +                },
      +                "spans": {
      +                  "additionalProperties": {
      +                    "items": {
      +                      "properties": {
      +                        "end": {
      +                          "description": "Where it ends, on the same clock",
      +                          "type": "number"
      +                        },
      +                        "peak_probability": {
      +                          "type": "number"
      +                        },
      +                        "peak_seconds": {
      +                          "description": "The middle of the most likely frame",
      +                          "type": "number"
      +                        },
      +                        "start": {
      +                          "description": "Where the run of matching 40 ms frames starts: media seconds, or timeline seconds for a timeline",
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "start",
      +                        "end",
      +                        "peak_seconds",
      +                        "peak_probability"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "description": "Per sound: the runs of 40 ms frames at or above min_probability, in time order; empty when it never is",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "min_probability",
      +                "spans",
      +                "peaks"
      +              ],
      +              "type": "object"
      +            },
      +            "speech": {
      +              "description": "With include [\"speech\"]: the speech probability of every 32 ms frame",
      +              "properties": {
      +                "frame_seconds": {
      +                  "description": "Each probability covers this long",
      +                  "type": "number"
      +                },
      +                "from": {
      +                  "description": "Seconds where the first probability starts",
      +                  "type": "number"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "probabilities": {
      +                  "description": "Speech probability 0–1, one per frame, in order",
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "frame_seconds",
      +                "from",
      +                "probabilities"
      +              ],
      +              "type": "object"
      +            },
      +            "status": {
      +              "description": "importing: not probed yet; processing: usable in edits, proxy still rendering; ready; failed",
      +              "enum": [
      +                "importing",
      +                "processing",
      +                "ready",
      +                "failed"
      +              ],
      +              "type": "string"
      +            },
      +            "transcript": {
      +              "description": "With include [\"transcript\"]: every word as {text, start, end, confidence}",
      +              "properties": {
      +                "aligned_by": {
      +                  "description": "The model that moved word edges to where the letters sound (English); null: the times are whisper's own, up to about a second off",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "from": {
      +                  "description": "The stretch transcribed, if not all",
      +                  "type": "number"
      +                },
      +                "language": {
      +                  "type": "string"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "text": {
      +                  "type": "string"
      +                },
      +                "until": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "words": {
      +                  "description": "Media seconds. Aligned words start and end within about 0.05 s of where their letters sound; an end on a soft consonant (s, t, k, f) or a breath can ring on up to about 0.1 s more. Short ums are often missing from the words; kind speech finds them as speech. A word \"-\" (or one starting with it) is whisper marking a new speaker, as subtitles do: a hint only; kind speakers measures who speaks when",
      +                  "items": {
      +                    "properties": {
      +                      "confidence": {
      +                        "description": "0–1: how sure whisper is of the word itself",
      +                        "type": "number"
      +                      },
      +                      "end": {
      +                        "type": "number"
      +                      },
      +                      "speaker": {
      +                        "description": "Who says it, from the latest speakers run",
      +                        "type": [
      +                          "number",
      +                          "null"
      +                        ]
      +                      },
      +                      "start": {
      +                        "type": "number"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      },
      +                      "timing_confidence": {
      +                        "description": "0–1: how clearly the letters were heard between start and end; null: not aligned (digits, symbols, other languages), times fitted between neighbours",
      +                        "type": [
      +                          "number",
      +                          "null"
      +                        ]
      +                      }
      +                    },
      +                    "required": [
      +                      "text",
      +                      "start",
      +                      "end",
      +                      "confidence"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "language",
      +                "text",
      +                "words"
      +              ],
      +              "type": "object"
      +            },
      +            "upload": {
      +              "description": "media.import {source: {upload}}: where to send the file. It imports once the last byte arrives (the PUT answers with the job_id); media.get says where it stands",
      +              "properties": {
      +                "expires_at": {
      +                  "type": "string"
      +                },
      +                "max_bytes": {
      +                  "type": "number"
      +                },
      +                "upload_id": {
      +                  "description": "Upload handle from media.upload",
      +                  "pattern": "^u_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "description": "Signed: PUT the file here; no other credentials needed",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "upload_id",
      +                "url",
      +                "expires_at",
      +                "max_bytes"
      +              ],
      +              "type": "object"
      +            },
      +            "url": {
      +              "description": "media.get: a signed download of the file itself, once it has one",
      +              "type": "string"
      +            },
      +            "warnings": {
      +              "description": "create.motion and create.still: what went wrong in the page as it rendered (uncaught errors, console errors, files blocked or not found, tags never closed). It rendered anyway",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "width": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "media_id",
      +            "name",
      +            "status",
      +            "kind",
      +            "duration_seconds",
      +            "fps",
      +            "width",
      +            "height",
      +            "has_video",
      +            "has_audio",
      +            "codecs",
      +            "conform",
      +            "analysis"
      +          ],
      +          "type": "object"
      +        },
      +        "description": "Per stem asked for: the new audio media (32-bit float WAV, 44.1 kHz stereo)",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "media_id",
      +      "model",
      +      "stems"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "hint": {
      +        "type": "string"
      +      },
      +      "job_id": {
      +        "description": "Job handle; the same value is the MCP task id",
      +        "pattern": "^j_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "media_id": {
      +        "description": "The media it is making; usable in edits once processing",
      +        "pattern": "^m_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "working",
      +          "completed",
      +          "failed",
      +          "cancelled"
      +        ],
      +        "type": "string"
      +      },
      +      "status_uri": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "job_id",
      +      "status",
      +      "status_uri",
      +      "hint"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "media_id": {
      -        "description": "The media the stems came from",
      -        "pattern": "^m_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "model": {
      -        "type": "string"
      -      },
      -      "stems": {
      -        "additionalProperties": {
      -          "properties": {
      -            "analyses": {
      -              "description": "Summaries of media.analyze results (counts, not data); include puts each in full at the top level",
      -              "properties": {
      -                "beats": {
      -                  "properties": {
      -                    "beats": {
      -                      "type": "number"
      -                    },
      -                    "bpm": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "bpm",
      -                    "beats"
      -                  ],
      -                  "type": "object"
      -                },
      -                "faces": {
      -                  "properties": {
      -                    "frames_with_faces": {
      -                      "type": "number"
      -                    },
      -                    "rate": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "rate",
      -                    "frames_with_faces"
      -                  ],
      -                  "type": "object"
      -                },
      -                "look": {
      -                  "description": "frames and questions: the latest run",
      -                  "properties": {
      -                    "frames": {
      -                      "type": "number"
      -                    },
      -                    "questions": {
      -                      "items": {
      -                        "type": "string"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "runs": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "runs",
      -                    "frames",
      -                    "questions"
      -                  ],
      -                  "type": "object"
      -                },
      -                "sounds": {
      -                  "description": "heard: the sounds the latest run found at or above its min_probability",
      -                  "properties": {
      -                    "heard": {
      -                      "items": {
      -                        "type": "string"
      -                      },
      -                      "type": "array"
      -                    },
      -                    "min_probability": {
      -                      "type": "number"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "min_probability",
      -                    "heard"
      -                  ],
      -                  "type": "object"
      -                },
      -                "speech": {
      -                  "properties": {
      -                    "frame_seconds": {
      -                      "type": "number"
      -                    },
      -                    "frames": {
      -                      "type": "number"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "frames",
      -                    "frame_seconds"
      -                  ],
      -                  "type": "object"
      -                },
      -                "transcript": {
      -                  "properties": {
      -                    "language": {
      -                      "type": "string"
      -                    },
      -                    "model": {
      -                      "type": "string"
      -                    },
      -                    "words": {
      -                      "description": "How many words; the words themselves are in transcript.words",
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "model",
      -                    "language",
      -                    "words"
      -                  ],
      -                  "type": "object"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "analysis": {
      -              "anyOf": [
      -                {
      -                  "properties": {
      -                    "loudness_lufs": {
      -                      "description": "Integrated loudness at import",
      -                      "type": [
      -                        "number",
      -                        "null"
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "loudness_lufs"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "beats": {
      -              "properties": {
      -                "beats": {
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                },
      -                "bpm": {
      -                  "type": "number"
      -                },
      -                "downbeats": {
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "bpm",
      -                "beats",
      -                "downbeats"
      -              ],
      -              "type": "object"
      -            },
      -            "codecs": {
      -              "properties": {
      -                "audio": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "video": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "video",
      -                "audio"
      -              ],
      -              "type": "object"
      -            },
      -            "conform": {
      -              "description": "Why a mezzanine was made (vfr, rotation, hdr, codec); empty when not needed",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "created_at": {
      -              "description": "When it was imported or made",
      -              "type": "string"
      -            },
      -            "duration_seconds": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "error": {
      -              "properties": {
      -                "code": {
      -                  "enum": [
      -                    "bad_request",
      -                    "no_audio",
      -                    "not_found",
      -                    "expired",
      -                    "media_not_ready",
      -                    "media_offline",
      -                    "engine_error",
      -                    "render_failed",
      -                    "interrupted",
      -                    "cancelled",
      -                    "credential_required",
      -                    "credential_invalid",
      -                    "output_exists",
      -                    "path_not_allowed",
      -                    "limit_exceeded",
      -                    "quota_exceeded",
      -                    "subscription_required",
      -                    "email_unverified",
      -                    "service_unavailable",
      -                    "server_busy"
      -                  ],
      -                  "type": "string"
      -                },
      -                "detail": {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "hint": {
      -                  "type": "string"
      -                },
      -                "message": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "code",
      -                "message"
      -              ],
      -              "type": "object"
      -            },
      -            "expires_at": {
      -              "description": "When url and page_url stop working",
      -              "type": "string"
      -            },
      -            "extension": {
      -              "description": "The extension its format takes (.png, .mp4), from the file itself, not its name",
      -              "type": "string"
      -            },
      -            "faces": {
      -              "properties": {
      -                "frames": {
      -                  "items": {
      -                    "properties": {
      -                      "faces": {
      -                        "items": {
      -                          "properties": {
      -                            "h": {
      -                              "type": "number"
      -                            },
      -                            "score": {
      -                              "type": "number"
      -                            },
      -                            "w": {
      -                              "type": "number"
      -                            },
      -                            "x": {
      -                              "type": "number"
      -                            },
      -                            "y": {
      -                              "type": "number"
      -                            }
      -                          },
      -                          "required": [
      -                            "x",
      -                            "y",
      -                            "w",
      -                            "h",
      -                            "score"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "time": {
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "time",
      -                      "faces"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "rate": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "rate",
      -                "frames"
      -              ],
      -              "type": "object"
      -            },
      -            "font_family": {
      -              "description": "Fonts: the family; use font_media_id in a text style to set text in it",
      -              "type": "string"
      -            },
      -            "fps": {
      -              "anyOf": [
      -                {
      -                  "properties": {
      -                    "den": {
      -                      "type": "number"
      -                    },
      -                    "num": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "num",
      -                    "den"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "has_audio": {
      -              "type": "boolean"
      -            },
      -            "has_video": {
      -              "type": "boolean"
      -            },
      -            "height": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "kind": {
      -              "anyOf": [
      -                {
      -                  "enum": [
      -                    "video",
      -                    "audio",
      -                    "image",
      -                    "font",
      -                    "lut"
      -                  ],
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "look": {
      -              "properties": {
      -                "runs": {
      -                  "items": {
      -                    "properties": {
      -                      "frames": {
      -                        "items": {
      -                          "properties": {
      -                            "answers": {
      -                              "additionalProperties": {
      -                                "additionalProperties": {},
      -                                "propertyNames": {
      -                                  "type": "string"
      -                                },
      -                                "type": "object"
      -                              },
      -                              "propertyNames": {
      -                                "type": "string"
      -                              },
      -                              "type": "object"
      -                            },
      -                            "time": {
      -                              "type": "number"
      -                            }
      -                          },
      -                          "required": [
      -                            "time",
      -                            "answers"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "id": {
      -                        "type": "string"
      -                      },
      -                      "model": {
      -                        "type": "string"
      -                      },
      -                      "questions": {
      -                        "additionalProperties": {},
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "state": {
      -                        "additionalProperties": {},
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "with_previous": {
      -                        "type": "boolean"
      -                      }
      -                    },
      -                    "required": [
      -                      "id",
      -                      "model",
      -                      "questions",
      -                      "with_previous",
      -                      "frames"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "runs"
      -              ],
      -              "type": "object"
      -            },
      -            "media_id": {
      -              "description": "Media handle from media.import or a create.* tool",
      -              "pattern": "^m_[0-9a-z]{26}$",
      -              "type": "string"
      -            },
      -            "mime_type": {
      -              "description": "Its MIME type, likewise",
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "origin": {
      -              "description": "Where it came from, to tell one version from another: the import source, the export of which timeline, or the create.* tool and the media it was made from",
      -              "properties": {
      -                "attached": {
      -                  "description": "url: the file the user attached in the chat, passed as media.import file",
      -                  "type": "boolean"
      -                },
      -                "file_name": {
      -                  "description": "upload: the name the file was sent with",
      -                  "type": "string"
      -                },
      -                "from": {
      -                  "description": "upload: a file the user sent; url: downloaded; path: a media root; render: an export.video; created: a create.* tool",
      -                  "enum": [
      -                    "upload",
      -                    "url",
      -                    "path",
      -                    "render",
      -                    "created"
      -                  ],
      -                  "type": "string"
      -                },
      -                "job_id": {
      -                  "description": "render: the export.video job; created: the create.* job",
      -                  "pattern": "^j_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "media_ids": {
      -                  "description": "created: the media it was made from (a cutout's source, a page's assets)",
      -                  "items": {
      -                    "description": "Media handle from media.import or a create.* tool",
      -                    "pattern": "^m_[0-9a-z]{26}$",
      -                    "type": "string"
      -                  },
      -                  "type": "array"
      -                },
      -                "path": {
      -                  "description": "path: the file it was imported from",
      -                  "type": "string"
      -                },
      -                "preset": {
      -                  "description": "render: the export preset",
      -                  "type": "string"
      -                },
      -                "range": {
      -                  "description": "render: the frames exported, when not the whole timeline",
      -                  "properties": {
      -                    "end": {
      -                      "type": "number"
      -                    },
      -                    "start": {
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "start",
      -                    "end"
      -                  ],
      -                  "type": "object"
      -                },
      -                "recipe": {
      -                  "description": "created: a hash of what it was made from; the same recipe makes the same media",
      -                  "type": "string"
      -                },
      -                "sources": {
      -                  "description": "render: where each stretch of this file comes from, per track, read from the timeline when it was exported (kept after the timeline expires). With a speed curve, source_in and source_out are the clip's whole source range",
      -                  "items": {
      -                    "properties": {
      -                      "end": {
      -                        "type": "number"
      -                      },
      -                      "kind": {
      -                        "enum": [
      -                          "video",
      -                          "audio"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "media_id": {
      -                        "description": "The media this stretch plays",
      -                        "pattern": "^m_[0-9a-z]{26}$",
      -                        "type": "string"
      -                      },
      -                      "source_in": {
      -                        "description": "Seconds into that media",
      -                        "type": "number"
      -                      },
      -                      "source_out": {
      -                        "type": "number"
      -                      },
      -                      "speed": {
      -                        "additionalProperties": {},
      -                        "description": "The clip's speed change, as clip.set_speed set it",
      -                        "propertyNames": {
      -                          "type": "string"
      -                        },
      -                        "type": "object"
      -                      },
      -                      "start": {
      -                        "description": "Seconds into this file",
      -                        "type": "number"
      -                      },
      -                      "track_id": {
      -                        "description": "Track of the timeline; outer/inner inside a nested one",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "track_id",
      -                      "kind",
      -                      "start",
      -                      "end",
      -                      "media_id",
      -                      "source_in",
      -                      "source_out"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "timeline_id": {
      -                  "description": "render: the timeline that was exported",
      -                  "pattern": "^tl_[0-9a-f]{32}$",
      -                  "type": "string"
      -                },
      -                "tool": {
      -                  "description": "created: the create.* tool that made it",
      -                  "type": "string"
      -                },
      -                "upload_id": {
      -                  "description": "Upload handle from media.upload",
      -                  "pattern": "^u_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "url": {
      -                  "description": "url: the address it was downloaded from, without its query string",
      -                  "type": "string"
      -                },
      -                "via": {
      -                  "description": "upload: sent through a media.upload link, dropped on the account page, or a data: URI",
      -                  "enum": [
      -                    "media.upload",
      -                    "account_page",
      -                    "data_uri"
      -                  ],
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "from"
      -              ],
      -              "type": "object"
      -            },
      -            "page_url": {
      -              "description": "media.get: a page that plays or shows the file in any browser, with no sign-in, to give a person; works until expires_at",
      -              "type": "string"
      -            },
      -            "pages": {
      -              "additionalProperties": {
      -                "properties": {
      -                  "first": {
      -                    "description": "Index in the whole list of the first item returned (transcript: the word index clip.add source {words} takes)",
      -                    "type": "integer"
      -                  },
      -                  "list": {
      -                    "description": "The list paged: transcript.words, beats.beats, faces.frames, speech.probabilities (one per frame_seconds from `from`), or look runs[].frames (each run is cut the same way; first and the counts are the latest run's)",
      -                    "type": "string"
      -                  },
      -                  "matching": {
      -                    "description": "Items in the time range (the whole list without one)",
      -                    "type": "integer"
      -                  },
      -                  "next_offset": {
      -                    "anyOf": [
      -                      {
      -                        "type": "integer"
      -                      },
      -                      {
      -                        "type": "null"
      -                      }
      -                    ],
      -                    "description": "The offset that gives the next page of this range, or null at its end"
      -                  },
      -                  "returned": {
      -                    "type": "integer"
      -                  },
      -                  "total": {
      -                    "description": "Items in the whole list",
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "list",
      -                  "first",
      -                  "returned",
      -                  "matching",
      -                  "total",
      -                  "next_offset"
      -                ],
      -                "type": "object"
      -              },
      -              "description": "media.get with a range, offset or limit: per included analysis, which piece of its list came back",
      -              "propertyNames": {
      -                "enum": [
      -                  "transcript",
      -                  "beats",
      -                  "faces",
      -                  "look",
      -                  "speech",
      -                  "sounds"
      -                ],
      -                "type": "string"
      -              },
      -              "type": "object"
      -            },
      -            "probe": {
      -              "description": "media.get: everything FFprobe read from the file, as it gives it: the format and every stream (codec, pix_fmt, color_space, color_primaries, color_transfer, color_range, bit depth, sample rate, channel layout, tags, side data). Not for fonts and LUTs",
      -              "properties": {
      -                "format": {
      -                  "additionalProperties": {},
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "streams": {
      -                  "items": {
      -                    "additionalProperties": {},
      -                    "propertyNames": {
      -                      "type": "string"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "format",
      -                "streams"
      -              ],
      -              "type": "object"
      -            },
      -            "sounds": {
      -              "description": "With include [\"sounds\"]: the latest media.analyze sounds run, every probability included",
      -              "properties": {
      -                "min_probability": {
      -                  "type": "number"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "peaks": {
      -                  "additionalProperties": {
      -                    "type": "number"
      -                  },
      -                  "description": "Per sound reported: the highest probability it reaches anywhere",
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                },
      -                "scores": {
      -                  "description": "Every probability, for your own cut-off or arithmetic",
      -                  "properties": {
      -                    "start_seconds": {
      -                      "description": "Where the first value starts: media seconds, or timeline seconds for a timeline",
      -                      "type": "number"
      -                    },
      -                    "step_seconds": {
      -                      "description": "Seconds each value covers: 0.04 (every frame) unless asked or too long",
      -                      "type": "number"
      -                    },
      -                    "values": {
      -                      "additionalProperties": {
      -                        "items": {
      -                          "type": "number"
      -                        },
      -                        "type": "array"
      -                      },
      -                      "description": "Per sound, the highest probability in each step, 0 to 1",
      -                      "propertyNames": {
      -                        "type": "string"
      -                      },
      -                      "type": "object"
      -                    }
      -                  },
      -                  "required": [
      -                    "start_seconds",
      -                    "step_seconds",
      -                    "values"
      -                  ],
      -                  "type": "object"
      -                },
      -                "spans": {
      -                  "additionalProperties": {
      -                    "items": {
      -                      "properties": {
      -                        "end": {
      -                          "description": "Where it ends, on the same clock",
      -                          "type": "number"
      -                        },
      -                        "peak_probability": {
      -                          "type": "number"
      -                        },
      -                        "peak_seconds": {
      -                          "description": "The middle of the most likely frame",
      -                          "type": "number"
      -                        },
      -                        "start": {
      -                          "description": "Where the run of matching 40 ms frames starts: media seconds, or timeline seconds for a timeline",
      -                          "type": "number"
      -                        }
      -                      },
      -                      "required": [
      -                        "start",
      -                        "end",
      -                        "peak_seconds",
      -                        "peak_probability"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  "description": "Per sound: the runs of 40 ms frames at or above min_probability, in time order; empty when it never is",
      -                  "propertyNames": {
      -                    "type": "string"
      -                  },
      -                  "type": "object"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "min_probability",
      -                "spans",
      -                "peaks"
      -              ],
      -              "type": "object"
      -            },
      -            "speech": {
      -              "description": "With include [\"speech\"]: the speech probability of every 32 ms frame",
      -              "properties": {
      -                "frame_seconds": {
      -                  "description": "Each probability covers this long",
      -                  "type": "number"
      -                },
      -                "from": {
      -                  "description": "Seconds where the first probability starts",
      -                  "type": "number"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "probabilities": {
      -                  "description": "Speech probability 0–1, one per frame, in order",
      -                  "items": {
      -                    "type": "number"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "frame_seconds",
      -                "from",
      -                "probabilities"
      -              ],
      -              "type": "object"
      -            },
      -            "status": {
      -              "description": "importing: not probed yet; processing: usable in edits, proxy still rendering; ready; failed",
      -              "enum": [
      -                "importing",
      -                "processing",
      -                "ready",
      -                "failed"
      -              ],
      -              "type": "string"
      -            },
      -            "transcript": {
      -              "description": "With include [\"transcript\"]: every word as {text, start, end, confidence}",
      -              "properties": {
      -                "aligned_by": {
      -                  "description": "The model that moved word edges to where the letters sound (English); null: the times are whisper's own, up to about a second off",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "language": {
      -                  "type": "string"
      -                },
      -                "model": {
      -                  "type": "string"
      -                },
      -                "text": {
      -                  "type": "string"
      -                },
      -                "words": {
      -                  "description": "Media seconds. Aligned words start and end within about 0.05 s of where their letters sound; an end on a soft consonant (s, t, k, f) or a breath can ring on up to about 0.1 s more. Short ums are often missing from the words; kind speech finds them as speech",
      -                  "items": {
      -                    "properties": {
      -                      "confidence": {
      -                        "description": "0–1: how sure whisper is of the word itself",
      -                        "type": "number"
      -                      },
      -                      "end": {
      -                        "type": "number"
      -                      },
      -                      "start": {
      -                        "type": "number"
      -                      },
      -                      "text": {
      -                        "type": "string"
      -                      },
      -                      "timing_confidence": {
      -                        "description": "0–1: how clearly the letters were heard between start and end; null: not aligned (digits, symbols, other languages), times fitted between neighbours",
      -                        "type": [
      -                          "number",
      -                          "null"
      -                        ]
      -                      }
      -                    },
      -                    "required": [
      -                      "text",
      -                      "start",
      -                      "end",
      -                      "confidence"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                }
      -              },
      -              "required": [
      -                "model",
      -                "language",
      -                "text",
      -                "words"
      -              ],
      -              "type": "object"
      -            },
      -            "upload": {
      -              "description": "media.import {source: {upload}}: where to send the file. It imports once the last byte arrives (the PUT answers with the job_id); media.get says where it stands",
      -              "properties": {
      -                "expires_at": {
      -                  "type": "string"
      -                },
      -                "max_bytes": {
      -                  "type": "number"
      -                },
      -                "upload_id": {
      -                  "description": "Upload handle from media.upload",
      -                  "pattern": "^u_[0-9a-z]{26}$",
      -                  "type": "string"
      -                },
      -                "url": {
      -                  "description": "Signed: PUT the file here; no other credentials needed",
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "upload_id",
      -                "url",
      -                "expires_at",
      -                "max_bytes"
      -              ],
      -              "type": "object"
      -            },
      -            "url": {
      -              "description": "media.get: a signed download of the file itself, once it has one",
      -              "type": "string"
      -            },
      -            "width": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "media_id",
      -            "name",
      -            "status",
      -            "kind",
      -            "duration_seconds",
      -            "fps",
      -            "width",
      -            "height",
      -            "has_video",
      -            "has_audio",
      -            "codecs",
      -            "conform",
      -            "analysis"
      -          ],
      -          "type": "object"
      -        },
      -        "description": "Per stem asked for: the new audio media (32-bit float WAV, 44.1 kHz stereo)",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "media_id",
      -      "model",
      -      "stems"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "hint": {
      -        "type": "string"
      -      },
      -      "job_id": {
      -        "description": "Job handle; the same value is the MCP task id",
      -        "pattern": "^j_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "media_id": {
      -        "description": "The media it is making; usable in edits once processing",
      -        "pattern": "^m_[0-9a-z]{26}$",
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "working",
      -          "completed",
      -          "failed",
      -          "cancelled"
      -        ],
      -        "type": "string"
      -      },
      -      "status_uri": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "job_id",
      -      "status",
      -      "status_uri",
      -      "hint"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "media_id": {
      +        "description": "The media the stems came from",
      +        "pattern": "^m_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "model": {
      +        "type": "string"
      +      },
      +      "stems": {
      +        "additionalProperties": {
      +          "properties": {
      +            "analyses": {
      +              "description": "Summaries of media.analyze results (counts, not data); include puts each in full at the top level",
      +              "properties": {
      +                "beats": {
      +                  "properties": {
      +                    "beats": {
      +                      "type": "number"
      +                    },
      +                    "bpm": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "bpm",
      +                    "beats"
      +                  ],
      +                  "type": "object"
      +                },
      +                "faces": {
      +                  "properties": {
      +                    "frames_with_faces": {
      +                      "type": "number"
      +                    },
      +                    "rate": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "rate",
      +                    "frames_with_faces"
      +                  ],
      +                  "type": "object"
      +                },
      +                "look": {
      +                  "description": "frames and questions: the latest run",
      +                  "properties": {
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "questions": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "runs": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "runs",
      +                    "frames",
      +                    "questions"
      +                  ],
      +                  "type": "object"
      +                },
      +                "sounds": {
      +                  "description": "heard: the sounds the latest run found at or above its min_probability",
      +                  "properties": {
      +                    "heard": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "min_probability": {
      +                      "type": "number"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "min_probability",
      +                    "heard"
      +                  ],
      +                  "type": "object"
      +                },
      +                "speech": {
      +                  "properties": {
      +                    "frame_seconds": {
      +                      "type": "number"
      +                    },
      +                    "frames": {
      +                      "type": "number"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "frames",
      +                    "frame_seconds"
      +                  ],
      +                  "type": "object"
      +                },
      +                "transcript": {
      +                  "properties": {
      +                    "language": {
      +                      "type": "string"
      +                    },
      +                    "model": {
      +                      "type": "string"
      +                    },
      +                    "words": {
      +                      "description": "How many words; the words themselves are in transcript.words",
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "model",
      +                    "language",
      +                    "words"
      +                  ],
      +                  "type": "object"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "analysis": {
      +              "anyOf": [
      +                {
      +                  "properties": {
      +                    "loudness_lufs": {
      +                      "description": "Integrated loudness at import",
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "loudness_lufs"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "beats": {
      +              "properties": {
      +                "beats": {
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                },
      +                "bpm": {
      +                  "type": "number"
      +                },
      +                "downbeats": {
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "bpm",
      +                "beats",
      +                "downbeats"
      +              ],
      +              "type": "object"
      +            },
      +            "codecs": {
      +              "properties": {
      +                "audio": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "video": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "video",
      +                "audio"
      +              ],
      +              "type": "object"
      +            },
      +            "conform": {
      +              "description": "Why a mezzanine was made (vfr, rotation, hdr, codec); empty when not needed",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "created_at": {
      +              "description": "When it was imported or made",
      +              "type": "string"
      +            },
      +            "duration_seconds": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "error": {
      +              "properties": {
      +                "code": {
      +                  "enum": [
      +                    "bad_request",
      +                    "no_audio",
      +                    "not_found",
      +                    "expired",
      +                    "media_not_ready",
      +                    "media_offline",
      +                    "engine_error",
      +                    "render_failed",
      +                    "interrupted",
      +                    "cancelled",
      +                    "credential_required",
      +                    "credential_invalid",
      +                    "output_exists",
      +                    "path_not_allowed",
      +                    "limit_exceeded",
      +                    "quota_exceeded",
      +                    "subscription_required",
      +                    "email_unverified",
      +                    "service_unavailable",
      +                    "server_busy"
      +                  ],
      +                  "type": "string"
      +                },
      +                "detail": {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "hint": {
      +                  "type": "string"
      +                },
      +                "message": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "code",
      +                "message"
      +              ],
      +              "type": "object"
      +            },
      +            "expires_at": {
      +              "description": "When url and page_url stop working",
      +              "type": "string"
      +            },
      +            "extension": {
      +              "description": "The extension its format takes (.png, .mp4), from the file itself, not its name",
      +              "type": "string"
      +            },
      +            "faces": {
      +              "properties": {
      +                "frames": {
      +                  "items": {
      +                    "properties": {
      +                      "faces": {
      +                        "items": {
      +                          "properties": {
      +                            "h": {
      +                              "type": "number"
      +                            },
      +                            "score": {
      +                              "type": "number"
      +                            },
      +                            "w": {
      +                              "type": "number"
      +                            },
      +                            "x": {
      +                              "type": "number"
      +                            },
      +                            "y": {
      +                              "type": "number"
      +                            }
      +                          },
      +                          "required": [
      +                            "x",
      +                            "y",
      +                            "w",
      +                            "h",
      +                            "score"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "time": {
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "time",
      +                      "faces"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "rate": {
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "rate",
      +                "frames"
      +              ],
      +              "type": "object"
      +            },
      +            "font_family": {
      +              "description": "Fonts: the family; use font_media_id in a text style to set text in it",
      +              "type": "string"
      +            },
      +            "fps": {
      +              "anyOf": [
      +                {
      +                  "properties": {
      +                    "den": {
      +                      "type": "number"
      +                    },
      +                    "num": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "num",
      +                    "den"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "has_audio": {
      +              "type": "boolean"
      +            },
      +            "has_video": {
      +              "type": "boolean"
      +            },
      +            "height": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "kind": {
      +              "anyOf": [
      +                {
      +                  "enum": [
      +                    "video",
      +                    "audio",
      +                    "image",
      +                    "font",
      +                    "lut"
      +                  ],
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "look": {
      +              "properties": {
      +                "runs": {
      +                  "items": {
      +                    "properties": {
      +                      "frames": {
      +                        "items": {
      +                          "properties": {
      +                            "answers": {
      +                              "additionalProperties": {
      +                                "additionalProperties": {},
      +                                "propertyNames": {
      +                                  "type": "string"
      +                                },
      +                                "type": "object"
      +                              },
      +                              "propertyNames": {
      +                                "type": "string"
      +                              },
      +                              "type": "object"
      +                            },
      +                            "time": {
      +                              "type": "number"
      +                            }
      +                          },
      +                          "required": [
      +                            "time",
      +                            "answers"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "id": {
      +                        "type": "string"
      +                      },
      +                      "model": {
      +                        "type": "string"
      +                      },
      +                      "questions": {
      +                        "additionalProperties": {},
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "state": {
      +                        "additionalProperties": {},
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "with_previous": {
      +                        "type": "boolean"
      +                      }
      +                    },
      +                    "required": [
      +                      "id",
      +                      "model",
      +                      "questions",
      +                      "with_previous",
      +                      "frames"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "runs"
      +              ],
      +              "type": "object"
      +            },
      +            "media_id": {
      +              "description": "Media handle from media.import or a create.* tool",
      +              "pattern": "^m_[0-9a-z]{26}$",
      +              "type": "string"
      +            },
      +            "mime_type": {
      +              "description": "Its MIME type, likewise",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "origin": {
      +              "description": "Where it came from, to tell one version from another: the import source, the export of which timeline, or the create.* tool and the media it was made from",
      +              "properties": {
      +                "attached": {
      +                  "description": "url: the file the user attached in the chat, passed as media.import file",
      +                  "type": "boolean"
      +                },
      +                "file_name": {
      +                  "description": "upload: the name the file was sent with",
      +                  "type": "string"
      +                },
      +                "from": {
      +                  "description": "upload: a file the user sent; url: downloaded; path: a media root; render: an export.video; created: a create.* tool",
      +                  "enum": [
      +                    "upload",
      +                    "url",
      +                    "path",
      +                    "render",
      +                    "created"
      +                  ],
      +                  "type": "string"
      +                },
      +                "job_id": {
      +                  "description": "render: the export.video job; created: the create.* job",
      +                  "pattern": "^j_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "media_ids": {
      +                  "description": "created: the media it was made from (a cutout's source, a page's assets)",
      +                  "items": {
      +                    "description": "Media handle from media.import or a create.* tool",
      +                    "pattern": "^m_[0-9a-z]{26}$",
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "path": {
      +                  "description": "path: the file it was imported from",
      +                  "type": "string"
      +                },
      +                "preset": {
      +                  "description": "render: the export preset",
      +                  "type": "string"
      +                },
      +                "range": {
      +                  "description": "render: the frames exported, when not the whole timeline",
      +                  "properties": {
      +                    "end": {
      +                      "type": "number"
      +                    },
      +                    "start": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "start",
      +                    "end"
      +                  ],
      +                  "type": "object"
      +                },
      +                "recipe": {
      +                  "description": "created: a hash of what it was made from; the same recipe makes the same media",
      +                  "type": "string"
      +                },
      +                "sources": {
      +                  "description": "render: where each stretch of this file comes from, per track, read from the timeline when it was exported (kept after the timeline expires). With a speed curve, source_in and source_out are the clip's whole source range",
      +                  "items": {
      +                    "properties": {
      +                      "end": {
      +                        "type": "number"
      +                      },
      +                      "kind": {
      +                        "enum": [
      +                          "video",
      +                          "audio"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "media_id": {
      +                        "description": "The media this stretch plays",
      +                        "pattern": "^m_[0-9a-z]{26}$",
      +                        "type": "string"
      +                      },
      +                      "source_in": {
      +                        "description": "Seconds into that media",
      +                        "type": "number"
      +                      },
      +                      "source_out": {
      +                        "type": "number"
      +                      },
      +                      "speed": {
      +                        "additionalProperties": {},
      +                        "description": "The clip's speed change, as clip.set_speed set it",
      +                        "propertyNames": {
      +                          "type": "string"
      +                        },
      +                        "type": "object"
      +                      },
      +                      "start": {
      +                        "description": "Seconds into this file",
      +                        "type": "number"
      +                      },
      +                      "track_id": {
      +                        "description": "Track of the timeline; outer/inner inside a nested one",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "track_id",
      +                      "kind",
      +                      "start",
      +                      "end",
      +                      "media_id",
      +                      "source_in",
      +                      "source_out"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "timeline_id": {
      +                  "description": "render: the timeline that was exported",
      +                  "pattern": "^tl_[0-9a-f]{32}$",
      +                  "type": "string"
      +                },
      +                "tool": {
      +                  "description": "created: the create.* tool that made it",
      +                  "type": "string"
      +                },
      +                "upload_id": {
      +                  "description": "Upload handle from media.upload",
      +                  "pattern": "^u_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "description": "url: the address it was downloaded from, without its query string",
      +                  "type": "string"
      +                },
      +                "via": {
      +                  "description": "upload: sent through a media.upload link, dropped on the account page, or a data: URI",
      +                  "enum": [
      +                    "media.upload",
      +                    "account_page",
      +                    "data_uri"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "from"
      +              ],
      +              "type": "object"
      +            },
      +            "page_url": {
      +              "description": "media.get: a page that plays or shows the file in any browser, with no sign-in, to give a person; works until expires_at",
      +              "type": "string"
      +            },
      +            "pages": {
      +              "additionalProperties": {
      +                "properties": {
      +                  "first": {
      +                    "description": "Index in the whole list of the first item returned (transcript: the word index clip.add source {words} takes)",
      +                    "type": "integer"
      +                  },
      +                  "list": {
      +                    "description": "The list paged: transcript.words, beats.beats, faces.frames, speech.probabilities (one per frame_seconds from `from`), or look runs[].frames (each run is cut the same way; first and the counts are the latest run's)",
      +                    "type": "string"
      +                  },
      +                  "matching": {
      +                    "description": "Items in the time range (the whole list without one)",
      +                    "type": "integer"
      +                  },
      +                  "next_offset": {
      +                    "anyOf": [
      +                      {
      +                        "type": "integer"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ],
      +                    "description": "The offset that gives the next page of this range, or null at its end"
      +                  },
      +                  "returned": {
      +                    "type": "integer"
      +                  },
      +                  "total": {
      +                    "description": "Items in the whole list",
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "list",
      +                  "first",
      +                  "returned",
      +                  "matching",
      +                  "total",
      +                  "next_offset"
      +                ],
      +                "type": "object"
      +              },
      +              "description": "media.get with a range, offset or limit: per included analysis, which piece of its list came back",
      +              "propertyNames": {
      +                "enum": [
      +                  "transcript",
      +                  "beats",
      +                  "faces",
      +                  "look",
      +                  "speech",
      +                  "sounds"
      +                ],
      +                "type": "string"
      +              },
      +              "type": "object"
      +            },
      +            "probe": {
      +              "description": "media.get: everything FFprobe read from the file, as it gives it: the format and every stream (codec, pix_fmt, color_space, color_primaries, color_transfer, color_range, bit depth, sample rate, channel layout, tags, side data). Not for fonts and LUTs",
      +              "properties": {
      +                "format": {
      +                  "additionalProperties": {},
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "streams": {
      +                  "items": {
      +                    "additionalProperties": {},
      +                    "propertyNames": {
      +                      "type": "string"
      +                    },
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "format",
      +                "streams"
      +              ],
      +              "type": "object"
      +            },
      +            "sounds": {
      +              "description": "With include [\"sounds\"]: the latest media.analyze sounds run, every probability included",
      +              "properties": {
      +                "min_probability": {
      +                  "type": "number"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "peaks": {
      +                  "additionalProperties": {
      +                    "type": "number"
      +                  },
      +                  "description": "Per sound reported: the highest probability it reaches anywhere",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                },
      +                "scores": {
      +                  "description": "Every probability, for your own cut-off or arithmetic",
      +                  "properties": {
      +                    "start_seconds": {
      +                      "description": "Where the first value starts: media seconds, or timeline seconds for a timeline",
      +                      "type": "number"
      +                    },
      +                    "step_seconds": {
      +                      "description": "Seconds each value covers: 0.04 (every frame) unless asked or too long",
      +                      "type": "number"
      +                    },
      +                    "values": {
      +                      "additionalProperties": {
      +                        "items": {
      +                          "type": "number"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "description": "Per sound, the highest probability in each step, 0 to 1",
      +                      "propertyNames": {
      +                        "type": "string"
      +                      },
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "start_seconds",
      +                    "step_seconds",
      +                    "values"
      +                  ],
      +                  "type": "object"
      +                },
      +                "spans": {
      +                  "additionalProperties": {
      +                    "items": {
      +                      "properties": {
      +                        "end": {
      +                          "description": "Where it ends, on the same clock",
      +                          "type": "number"
      +                        },
      +                        "peak_probability": {
      +                          "type": "number"
      +                        },
      +                        "peak_seconds": {
      +                          "description": "The middle of the most likely frame",
      +                          "type": "number"
      +                        },
      +                        "start": {
      +                          "description": "Where the run of matching 40 ms frames starts: media seconds, or timeline seconds for a timeline",
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "start",
      +                        "end",
      +                        "peak_seconds",
      +                        "peak_probability"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "description": "Per sound: the runs of 40 ms frames at or above min_probability, in time order; empty when it never is",
      +                  "propertyNames": {
      +                    "type": "string"
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "min_probability",
      +                "spans",
      +                "peaks"
      +              ],
      +              "type": "object"
      +            },
      +            "speech": {
      +              "description": "With include [\"speech\"]: the speech probability of every 32 ms frame",
      +              "properties": {
      +                "frame_seconds": {
      +                  "description": "Each probability covers this long",
      +                  "type": "number"
      +                },
      +                "from": {
      +                  "description": "Seconds where the first probability starts",
      +                  "type": "number"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "probabilities": {
      +                  "description": "Speech probability 0–1, one per frame, in order",
      +                  "items": {
      +                    "type": "number"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "frame_seconds",
      +                "from",
      +                "probabilities"
      +              ],
      +              "type": "object"
      +            },
      +            "status": {
      +              "description": "importing: not probed yet; processing: usable in edits, proxy still rendering; ready; failed",
      +              "enum": [
      +                "importing",
      +                "processing",
      +                "ready",
      +                "failed"
      +              ],
      +              "type": "string"
      +            },
      +            "transcript": {
      +              "description": "With include [\"transcript\"]: every word as {text, start, end, confidence}",
      +              "properties": {
      +                "aligned_by": {
      +                  "description": "The model that moved word edges to where the letters sound (English); null: the times are whisper's own, up to about a second off",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "language": {
      +                  "type": "string"
      +                },
      +                "model": {
      +                  "type": "string"
      +                },
      +                "text": {
      +                  "type": "string"
      +                },
      +                "words": {
      +                  "description": "Media seconds. Aligned words start and end within about 0.05 s of where their letters sound; an end on a soft consonant (s, t, k, f) or a breath can ring on up to about 0.1 s more. Short ums are often missing from the words; kind speech finds them as speech",
      +                  "items": {
      +                    "properties": {
      +                      "confidence": {
      +                        "description": "0–1: how sure whisper is of the word itself",
      +                        "type": "number"
      +                      },
      +                      "end": {
      +                        "type": "number"
      +                      },
      +                      "start": {
      +                        "type": "number"
      +                      },
      +                      "text": {
      +                        "type": "string"
      +                      },
      +                      "timing_confidence": {
      +                        "description": "0–1: how clearly the letters were heard between start and end; null: not aligned (digits, symbols, other languages), times fitted between neighbours",
      +                        "type": [
      +                          "number",
      +                          "null"
      +                        ]
      +                      }
      +                    },
      +                    "required": [
      +                      "text",
      +                      "start",
      +                      "end",
      +                      "confidence"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "model",
      +                "language",
      +                "text",
      +                "words"
      +              ],
      +              "type": "object"
      +            },
      +            "upload": {
      +              "description": "media.import {source: {upload}}: where to send the file. It imports once the last byte arrives (the PUT answers with the job_id); media.get says where it stands",
      +              "properties": {
      +                "expires_at": {
      +                  "type": "string"
      +                },
      +                "max_bytes": {
      +                  "type": "number"
      +                },
      +                "upload_id": {
      +                  "description": "Upload handle from media.upload",
      +                  "pattern": "^u_[0-9a-z]{26}$",
      +                  "type": "string"
      +                },
      +                "url": {
      +                  "description": "Signed: PUT the file here; no other credentials needed",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "upload_id",
      +                "url",
      +                "expires_at",
      +                "max_bytes"
      +              ],
      +              "type": "object"
      +            },
      +            "url": {
      +              "description": "media.get: a signed download of the file itself, once it has one",
      +              "type": "string"
      +            },
      +            "warnings": {
      +              "description": "create.motion and create.still: what went wrong in the page as it rendered (uncaught errors, console errors, files blocked or not found, tags never closed). It rendered anyway",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "width": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "media_id",
      +            "name",
      +            "status",
      +            "kind",
      +            "duration_seconds",
      +            "fps",
      +            "width",
      +            "height",
      +            "has_video",
      +            "has_audio",
      +            "codecs",
      +            "conform",
      +            "analysis"
      +          ],
      +          "type": "object"
      +        },
      +        "description": "Per stem asked for: the new audio media (32-bit float WAV, 44.1 kHz stereo)",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "media_id",
      +      "model",
      +      "stems"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "hint": {
      +        "type": "string"
      +      },
      +      "job_id": {
      +        "description": "Job handle; the same value is the MCP task id",
      +        "pattern": "^j_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "media_id": {
      +        "description": "The media it is making; usable in edits once processing",
      +        "pattern": "^m_[0-9a-z]{26}$",
      +        "type": "string"
      +      },
      +      "status": {
      +        "enum": [
      +          "working",
      +          "completed",
      +          "failed",
      +          "cancelled"
      +        ],
      +        "type": "string"
      +      },
      +      "status_uri": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "job_id",
      +      "status",
      +      "status_uri",
      +      "hint"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.