[{"slug":"ZV-2026-0838","server_name":"mcp.ainsof.io","severity":"breaking","title":"mcp.ainsof.io: Resource ui://ainsof/player was removed, consumers reading it will break.","summary":"[safe] Description of analyze_video changed (20% word delta). [risky] Description of find_soundtrack changed (38% word delta). [risky] Description of listen_link changed (69% word delta). [risky] Description of score_my_video changed (81% word delta). [breaking] Resource ui://ainsof/player was removed, consumers reading it will break. [safe] Resource ui://ainsof/player/v2 was added.","changes":[{"kind":"description_changed","tool":"analyze_video","after":"Analyze a video without editing its content. Creates an analysis job; an expired temporary AINSOF-uploaded source copy may be deleted on completion, but your local original is never changed. Returns exact length, frame rate, resolution, whether it already has audio, the shot list with every cut time — and A FRAME FROM EACH SHOT, labelled with its timecode, so you can see what the film actually shows. Look at those frames. They are what lets you answer \"score the part where she reads the letter\" — find the moment in the pictures, read its timecode, and pass that as a section boundary to score_my_video. Without them you would be guessing timestamps, and a section placed on a guess changes the music in the middle of a shot. Use this before find_soundtrack when the user has asked for music or a soundtrack, provided a video, but has not said how long it is — the length and edit pace are what make the music match.","before":"WATCH a video and measure it, without touching it. Returns exact length, frame rate, resolution, whether it already has audio, the shot list with every cut time — and A FRAME FROM EACH SHOT, labelled with its timecode, so you can see what the film actually shows. Look at those frames. They are what lets you answer \"score the part where she reads the letter\" — find the moment in the pictures, read its timecode, and pass that as a section boundary to score_my_video. Without them you would be guessing timestamps, and a section placed on a guess changes the music in the middle of a shot. Use this before find_soundtrack when the user has asked for music or a soundtrack, provided a video, but has not said how long it is — the length and edit pace are what make the music match.","detail":"Description of `analyze_video` changed (20% word delta).","severity":"safe","descriptionDelta":0.2033898305084746},{"kind":"description_changed","tool":"find_soundtrack","after":"Find music for a video. Given the video's length and a description of it, returns up to three cues from the AINSOF catalogue, preferring playable versions that fit the requested duration. When an exact-length cut is unavailable, for_your_video explains the required edit. Every result comes with its composer, publisher and a watermarked preview to listen to. Use this when someone asks for music or a soundtrack for a video and its exact duration is available.","before":"Find music for a video. Given the video's length and a description of it, returns three cues from the AINSOF catalogue, each already matched to the version that fits that exact duration — a 30-second cut for a 30-second video rather than a full track the editor has to trim. Every result comes with its composer, publisher and a watermarked preview to listen to. Use this when someone asks for music or a soundtrack for a video and its exact duration is available.","detail":"Description of `find_soundtrack` changed (38% word delta).","severity":"risky","descriptionDelta":0.37681159420289856},{"kind":"description_changed","tool":"listen_link","after":"Get an AINSOF link to hear a complete watermarked track preview. The AINSOF link obtains a fresh temporary storage address when opened; it remains usable while that preview is available.","before":"Get a short-lived URL to hear a track. The preview is the complete piece, watermarked. The link expires in a minute, so fetch or open it right away.","detail":"Description of `listen_link` changed (69% word delta).","severity":"risky","descriptionDelta":0.6923076923076923},{"kind":"description_changed","tool":"score_my_video","after":"Create a watermarked music-scored MP4 from a supported video URL and an English music brief, an explicit catalogue track, or timed sections. Measures video duration and edit pace, selects or uses the specified music, and mixes it with the source audio. Sections support separate cues, versions or stems; silences specify music-free intervals. Section and silence boundaries are adjusted to measured shot boundaries. Returns video download/watch links, chosen cues, mix details, duration and shot-count summary. Detailed cut timestamps, storyboard frames and transcripts are provided by analyze_video, not this tool. Completed delivery packages are retrieved with deliver_score using the scoring arguments. Supports direct video files and supported Dropbox/Google Drive shares; stream-only YouTube, Vimeo, Dailymotion and Twitch pages are unsupported. Creates private processing jobs and stored outputs. After verified output storage, the temporary AINSOF-uploaded source copy is deleted or queued for deletion retry; the local original is unchanged. Processing may return still_running; recent identical requests reuse existing work. Terminal failures return a reason.","before":"Put music on a video and hand back the finished file. Give a link to the video and a brief, and this measures the video, picks the AINSOF cue that fits its exact length and edit pace, mixes it underneath any existing dialogue at a level that keeps speech clear, and returns an MP4 the user can download and watch. Accepts a direct video URL or a Dropbox or Google Drive share link; for YouTube, Vimeo, Dailymotion or Twitch we cannot pull the file, so ask for the file itself or use get_upload_link. Pass track_id instead of a brief when the user has already chosen a cue. DIRECTING THE SCORE. A user who says what they want at each moment — \"big opening, then pull back when she reads the letter, then build to the last shot\" — is describing `sections`, not one brief. Pass a list of {from, to, brief} and each act gets its own cue chosen from its own words; add track_id, version or stems to an act to pin it exactly. Use `silences` for the opposite move — a moment the music stops dead. Both are snapped onto the video's real shot boundaries, so a boundary lands ON the cut. Call analyze_video first if you need the cut list to place them. To revise a score, call again with the same arguments and change only what the user asked to change — the response tells you how. Rendering takes about a minute, so the first reply is often { ok: false, error: \"still_running\" } — that is normal and not a failure. Call it AGAIN with the same arguments; it picks up the render already in progress rather than starting a second one. A genuine failure comes back as error \"video_failed\" with a reason to pass on.","detail":"Description of `score_my_video` changed (81% word delta).","severity":"risky","descriptionDelta":0.8064516129032258},{"kind":"resource_removed","tool":"ui://ainsof/player","before":"ui://ainsof/player","detail":"Resource `ui://ainsof/player` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://ainsof/player/v2","after":"ui://ainsof/player/v2","detail":"Resource `ui://ainsof/player/v2` was added.","severity":"safe"}],"published_at":"2026-09-08T06:03:13.408Z"}]