Conversions across 221 color spaces, tested against cited sources: CSS strings, gamut, LUTs
Doseedo Film Score: spot a video, play your score on AI is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Score video as an agent: cue sheet from the cut, 100+ AI instruments play your MIDI, mix to picture
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http doseedo-film-score-spot-a-video-play-your-sco-mcp https://api.doseedo.com/mcp/film
# 2 — ask your agent for something these tools do
# doseedo_generate_sound, doseedo_render_midi, doseedo_train_instrument and 17 more
Doseedo Film Score: spot a video, play your score on AI costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http doseedo-film-score-spot-a-video-play-your-sco-mcp https://api.doseedo.com/mcp/filmReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
20 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
SOUND EFFECTS (SFX) from words with Stable Audio Open — SOUND DESIGN and FOLEY for game audio, apps and video: impacts, whooshes, door slams, footsteps, UI blips, creature and sci-fi sounds, ambiences ("rain on a tin roof", "busy café"), risers, drum one-shots. A one-shot hit ("punchy house kick", "snare with a short room", "a riser into the drop"), a loop on the tempo grid ("glitchy percussion"),
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prompt | string | yes | What it sounds like, e.g. "punchy house kick drum, single hit" or "dusty vinyl crackle". ≤ 300 characters. |
| kind | string | no | hit = one sound (0.5–10 s), loop = 1–4 bars tiled at bpm, texture = a bed. Default: read off the prompt. |
| duration_seconds | number | no | Length in seconds. Default: 2 s for a hit, 4 bars at bpm for a loop, 8 s for a texture. |
| bpm | number | no | Tempo a loop is cut to (default 120). |
| time_signature | string | no | Meter a loop is cut to, e.g. "4/4" (default). |
| seed | number | no | Optional random seed for reproducibility. |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
MIDI TO AUDIO, the virtual instrument for agents — THE tool for "I wrote the part, now play it": an AI instrument model (orchestral strings, brass, woodwinds, piano, guitar, bass, drums, World) performs your exact notes, in your key, at your bpm, and returns audio takes (doseedo_generate_music takes no notes or key). Input ONE of: notes[] ({pitch, start_beats, duration_beats, velocity} — beats fro
| Parameter | Type | Required | Notes |
|---|---|---|---|
| notes | array | no | The part, as note rows in beats from bar 1 (beat 0 = bar 1 beat 1, quarter-note beats at bpm). Monophonic for one voice; chords need voice_split:true. Up to 4096 notes. |
| midi_url | string | no | Alternative to notes: https URL of a Standard MIDI File (≤2 MiB) — a doseedo result link (a stem's MIDI) or a public URL. Its own tempo map is used by the model; bpm still tags the caption and sizes t |
| session_id | string | no | Alternative to notes: with track_id, render THAT session track's notes (read from doseedo_get_session's summary). |
| track_id | string | no | With session_id: the t_… id of the MIDI/instrument track to render. |
| instrument | string | yes | REQUIRED. The instrument from doseedo_instruments — its call.instrument (e.g. "violin", "tenor_sax", "electric_guitar", "piano"; a World name such as "koto" is resolved to its call). Keep the notes |
| bpm | number | no | REQUIRED (or tempo_map). Tempo of the notes (10–400). Written into the MIDI's tempo meta, so start_beats/duration_beats land at exactly this tempo. |
| tempo_map | array | no | Tempo CHANGES for the notes: [{beat, bpm}] — each point holds from its beat (beats from bar 1) until the next; the first point is beat 0 (or bpm covers the beats before it). Written into the MIDI, so |
| revise_take_url | string | no | REVISE an earlier take instead of rendering a new one: the take's URL (as a render returned it). Only [revise_start_beats, revise_end_beats) is regenerated — steered by notes (send the whole part, w |
| revise_start_beats | number | no | With revise_take_url: start of the region to redo, beats from bar 1. |
| revise_end_beats | number | no | With revise_take_url: end of the region to redo (exclusive), beats from bar 1. |
| time_signature | string | no | Meter of the part, e.g. "4/4", "3/4", "6/8" (default 4/4). Written into the MIDI and the caption. |
| duration_seconds | number | no | Length of the render in seconds (0.01–600). Default: the last note's end + 2 s of release. Each 30 s window costs 10 credits. |
| takes | number | no | How many takes to render, 1–4 (one GPU batch; no extra credits). Omit to let the server choose best-of-N for the part length. |
| seed | number | no | Random seed (−1 or 0–4294967295). Reuse a result's seed to re-render close to the same take. |
| timbre_preset | string | no | A preset from doseedo_instruments — an entry's call.timbre_preset or presets[].call.timbre_preset (e.g. "violin:pizz", "sax:alto", "koto:preset1"). Omit for the instrument default. |
| timbre_audio_url | string | no | TIMBRE TRANSFER: https URL of a short recording (≤24 MB; its first 30 s are used) whose SOUND the render should take on — a doseedo result link or a public URL. The notes stay yours; the tone comes fr |
| lora_id | string | no | A CUSTOM INSTRUMENT: the lora_id doseedo_train_instrument returned (16 hex). The render is played by that trained instrument; pass the same instrument it was trained as. Owner-only. |
| lora_strength | number | no | With lora_id: how strongly the custom instrument applies, 0–2 (default 1.0, or a tuned per-adapter default; ~0.6 when a small training set overshoots). |
| voice_split | boolean | no | true = the notes hold chords: split them into the voices one player of this instrument can hold and render every voice (result.voices). Default false (a chord in a mono part is an error the model will |
| refine | string | no | Opt-in post-render correction. "light": attacks re-timed onto the score, exposed wrong pitch classes re-pitched inside the played octave, misfires muted (winds/brass/strings). "shred": play exactly th |
Make a CUSTOM INSTRUMENT in your own sound: upload 30 s–3 min of ONE instrument playing (your own player, a rare or folk instrument, a prepared/invented instrument, a vintage synth) and doseedo trains a private adapter (LoRA) on its serving instrument model in about 1–2 minutes. After that, doseedo_render_midi {instrument: <the same instrument>, lora_id} plays ANY notes you write in that sound. Se
| Parameter | Type | Required | Notes |
|---|---|---|---|
| audio_key | string | no | R2 ingest key of an uploaded audio file (from doseedo_get_upload_url / POST /api/upload/r2/ingest-url; starts with "ingest/"). One recording; or audio_keys for several. |
| audio_keys | array | no | Several uploaded takes of the SAME instrument (≤8). |
| audio_url | string | no | https URL of a recording (a doseedo result link — a separated stem works — or any public URL). Alternative to audio_key. |
| audio_urls | array | no | Several recording URLs of the same instrument (≤8). |
| instrument | string | yes | REQUIRED. The catalog instrument it is closest to (call.instrument from doseedo_instruments, e.g. "violin", "acoustic_guitar", "flute", "percussion"). |
| name | string | no | A name for it, e.g. "Grandpa's banjo" (≤80 chars). |
| notes | array | no | Optional: the notes played, one list per file — [[{pitch, start, end, velocity?}…]] in SECONDS. Omitted, they are transcribed. |
| bpm | number | no | Optional tempo of the recording (30–300). |
| drum_mode | boolean | no | true for an unpitched percussion recording. |
| steps | number | no | Training steps 50–800. Default 300 for ≤60 s of audio, 400 above. |
| seed | number | no | Random seed. |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
FILM SCORING, orchestral arrangement, background music, a song or an instrumental YOU wrote: a WHOLE ARRANGEMENT in one call (a film cue, a string quartet, a big-band chart): every part played by its doseedo instrument, one stem per part from bar 1 at your tempo, plus a summed mix. Input ONE of: parts[] ({name, instrument, timbre_preset?, lora_id?, players?, notes[]} — doseedo_instruments calls),
| Parameter | Type | Required | Notes |
|---|---|---|---|
| parts | array | no | The parts you wrote: [{name?, instrument, timbre_preset?, lora_id?, players?, notes:[{pitch, start_beats, duration_beats, velocity?}], dynamics?}] — beats from bar 1, concert pitch. instrument/timbre_ |
| score_key | string | no | Alternative to parts: a score file on YOUR machine — doseedo_get_upload_url {filename: "cue.mid" | "cue.musicxml"} → PUT the file → its score_key (kept 24 h). A big score sent as a file, not as notes |
| score_url | string | no | Alternative to parts: a score file URL — MIDI or MusicXML, told apart by its content. |
| midi_url | string | no | Alternative to parts: a multi-track Standard MIDI File (≤ 2 MiB) — a doseedo result link or a public https URL. Channel 10 = drums: the kit, or the one percussion instrument a part is named for (Bass |
| musicxml_url | string | no | Alternative to parts: a MusicXML score (.musicxml / .xml / .mxl, ≤ 8 MiB) exported from Dorico, Sibelius, Finale, MuseScore, or written by you. |
| instruments | object | no | Name the instrument for any part: {"Violin I": {"instrument": "violin", "players": 6}, "2": {"instrument": "acoustic_guitar", "timbre_preset": "koto:preset1"}} — key = the part name or its 0-based ind |
| bpm | number | no | Tempo of the parts (10–400). Required with parts[] unless tempo_map is given; on a file it sets the speed and keeps the score's fermatas / rit. / tempo changes. |
| tempo_map | array | no | Tempo changes [{beat, bpm}] (first point at beat 0). Overrides a file's own tempo. |
| time_signature | string | no | Meter, e.g. "4/4" (default, or the file's). |
| duration_seconds | number | no | Render length (default: the last note + 2 s; ≤ 600). |
| mix | boolean | no | Also bounce a summed mix of the stems (default true). |
| tune | boolean | no | Light intonation on every winds / brass / strings part (default true): held, clearly pitched notes the model rendered 15–85 cents off are moved toward their written pitch, to a small natural residual |
| vaefix | boolean | no | VAE spectral corrector on every winds / brass / strings part (default true): the decoder's low-mid fog under each instrument's register is trimmed, mic hiss removed only where present. Receipt: parts[ |
| seed | number | no | Random seed (reuse to re-render close to the same performance). |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
MIXING and MASTERING: each part levelled, panned, high-passed, given its depth on a shared reverb, and mastered to a loudness target — a WAV AND mixgraph, the mix as a document you edit. After doseedo_render_score pass from_job (its parts and the instruments they play are the stems); or stems: [{name, audio_url, instrument?}] (result links work as-is). An orchestra (strings / winds / brass / tim
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from_job | string | no | MCP: a doseedo_render_score job_id — its parts are the stems, each with the instrument it plays, and each part's written dynamics (its mean velocity) set its balance. |
| stems | array | no | [{name, audio_url, instrument?}] — the stems (≤ 32). instrument = the sound it plays (a doseedo_instruments id: "violin", "timpani", "harp"), which decides how it is mixed; without it the name decides |
| mixgraph | object | no | An edited mix — the mixgraph a doseedo_mix returned, changed — rendered against the same stems (from_job or stems). With mix_job: ONLY what you change (strips[] by stem, automation[] rides by target — |
| mix_job | string | no | MCP: a doseedo_mix job_id to edit — its whole stored mix (every ride) is the base, mixgraph is applied on top, and its stems are reused when you pass no from_job / stems. |
| style | string | no | A mix style: an id or words ("dry 90s rock"). Pick it for the picture — the default (film-orchestral, a 2.3 s scoring hall) suits film drama, not every orchestra: cartoon-studio = a cartoon / animatio |
| vintage | string | no | A period medium over any style, after the mix: "tape" = 7.5 ips tape (saturation, wow and flutter, a low hiss); "shellac" = a 78 played back (mono, ~90 Hz–5.5 kHz with the reproducer's presence, a 1.3 |
| balance | object | no | {part name: dB in -12..12} — your balance on top of the levelling (and of the written dynamics a from_job reads). |
| dynamics | object | no | Fader rides from written dynamics: {part name: [[onset_seconds, velocity 0-127], …]}. from_job fills it from the score (pp to ff ≈ 17 dB); pass {} for no rides. |
| dynamics_carried | object | no | {part name: top velocity} — parts whose stems already play their written level (a render part's dynamics_level receipt, up to its top_vel). Their rides count it: no doubled swing. from_job fills it. |
| written_level | array | no | [[seconds, velocity], …] — the whole score's written level, the loudest part sounding, held until the next row (0 = nothing plays). The tonal match reads only the passages it writes loud (f and louder |
| room | no | An orchestra's room: "studio" (intimate scoring stage, ~1.2 s, close), "stage" (~1.8 s), "hall" (the default scoring hall, ~2.3 s), "cathedral" (~4 s, wet) — or 0..1 between them. Sets the decay, size | |
| dynamics_ride | number | no | How hard the written dynamics move the faders: 1 = default (pp to ff ≈ 17 dB), 0 = no rides, up to 1.5. |
| tonal_match | boolean | no | Nudge the master toward professionally mixed orchestral references (default on for the orchestral styles). Its presence and air are judged only where the score is written loud (written_level), so a pp |
| target_lufs | number | no | Master loudness, -24..-6 LUFS (default: the style's — -18 for film-orchestral, -14 for the blind default). Met within ~0.3 LU (a loud target clips the shortest transients first); output.loudness says |
| dialogue | array | no | The VO / dialogue on the picture's timeline (≤ 4): [{name?, audio_url}]. The music ducks under each line until the voice sits duck.vo_over_db over it, with a 1–4 kHz carve while it talks; the voice jo |
| duck | object | no | How the music sits under the dialogue: {vo_over_db (default 7 dB — a broadcast mix's 6–10), carve_db (default 3, at 1–4 kHz), max_db (default 12), include (default true; false = the music bed alone, d |
| music_offset_s | number | no | Where bar 1 of the music sits on the picture (seconds, ≤ 600; the program ≤ 600 s): every music stem — and its rides — starts this late; the dialogue does not move. |
| length_s | number | no | The program's length (a :30 = 30; ≤ 600 s): the mix is cut there with end_fade_s (default 0.5 s); the room's tail never runs past it. |
| end_fade_s | number | no | With length_s: the fade at the program's end (0–10 s, default 0.5). |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
Build a native DAW PROJECT from stems: each stem on its own audio track from bar 1, optional MIDI tracks (the written parts) beside them, on your tempo (bpm or tempo_map) — Logic Pro (.logicx) or Ableton Live (.als), zipped. The deliverable after doseedo_render_score (pass from_job: its job_id and the stems, MIDI and tempo come from that job) or after any renders / separations you made (stems: [{n
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from_job | string | no | MCP: a doseedo_render_score job_id — its stems, parts' MIDI and tempo are used (no other input needed). |
| mix_job | string | no | MCP: a doseedo_mix job_id — every track takes that mix's level and pan, and the mix itself rides along as a muted reference track "Mix (doseedo)". |
| mixgraph | object | no | A mix document (doseedo_mix → mixgraph): each stem named in it takes its strip's gain_db and pan. The EQ, compression, reverb and rides are not written into the project. |
| stems | array | no | [{name, audio_url | audio_key, gain_db?, pan?, mute?, position_beats?}] — the audio tracks, in order. |
| midi_tracks | array | no | Optional MIDI tracks: [{name, notes:[{pitch, start_beats, duration_beats, velocity?}]}]. |
| bpm | number | no | Project tempo (default 120). |
| tempo_map | array | no | Tempo changes [{beat, bpm}] for the project. |
| time_signature | string | no | Meter (default 4/4). |
| target | string | no | Which DAW (default logic). |
| name | string | no | Project name. |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
SPOT A FILM: a video in, the music editor's cue sheet out — the first step of scoring to picture. Scene detection on EVERY frame, and it listens to the soundtrack (CPU, no credits): hard cuts frame-exact (dark, low-contrast footage included), fades, flashes and visual impacts; each shot's brightness, colour, warmth, contrast, motion and mood, with a keyframe JPEG per shot so you can SEE what it sh
| Parameter | Type | Required | Notes |
|---|---|---|---|
| video_key | string | no | R2 ingest key of the uploaded video (doseedo_get_upload_url with the file name, e.g. reel1.mp4; starts with "ingest/"). |
| video_url | string | no | https URL of the video, as an alternative to video_key (a public file URL, fetched directly; ≤ 2 GB). |
| start_timecode | string | no | SMPTE timecode of the first frame, HH:MM:SS:FF (";" before the frames = drop-frame at 29.97/59.94). Default: the file's embedded timecode, else 00:00:00:00. |
| coverage | number | no | How much of the film gets music (default 0.55). Raise it for wall-to-wall scoring (a trailer, an animation), lower it for a dialogue drama. |
| reel | integer | no | Reel number for the cue ids (default 1 → 1M1, 1M2 …). |
| keyframes | integer | no | How many shots get a keyframe JPEG (default 24; the longest shots first). |
| cut_threshold | number | no | Scene-change threshold at full contrast (default 0.3). Lower finds softer cuts, higher only the hardest. |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
SCORE TO PICTURE: the last step of scoring a film. Lays each mixed cue (and any sound effect) on the video at its SMPTE timecode, with dialogue ducking (the lines found on the video's own soundtrack by VAD, or the spans you pass; the music dips ahead of each line and comes back after it), normalises the program to a delivery loudness (web −16, streaming −14, broadcast/ebu −23, atsc −24 LUFS, or a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| video_key | string | no | R2 ingest key of the video (the same upload doseedo_spot_video used). |
| video_url | string | no | https URL of the video, as an alternative to video_key. |
| tracks | array | yes | What to lay on the film, in any order. |
| start_timecode | string | no | SMPTE timecode of the film's first frame (default: the file's own, else 00:00:00:00) — the clock the tracks' start_timecode is read on. |
| duck | object | no | Dialogue ducking (on by default): depth_db (default 10), attack_ms (250: how early before a line the music is down), release_ms (700), sfx (false: duck effects too), enabled. |
| dialogue | array | no | Dialogue spans [{start_s, end_s}] to duck under, instead of detecting them (use the cue sheet's dialogue, or your own). |
| loudness | no | Delivery loudness: "web" (−16 LUFS, default), "streaming" (−14), "broadcast" / "ebu" (−23), "atsc" (−24), or a LUFS number (−36…−8). | |
| production_audio | string | no | keep (default) mixes the video's own soundtrack under the score; drop replaces it. |
| production_gain_db | number | no | Trim on the production audio when kept (default 0). |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
MEASURE a take instead of guessing: give the audio (a render_midi take URL, any recording) and the notes it should play — notes[] + bpm (and tempo_map) or a midi_url — and get back how many written notes were heard at the right pitch and time (recall / precision / f1, octave errors, the first missed notes with their beats), the timing error in ms, loudness (integrated LUFS, peak dBFS, clipped shar
| Parameter | Type | Required | Notes |
|---|---|---|---|
| audio_url | string | no | The take: a doseedo result URL as returned, or any public https URL. |
| audio_key | string | no | R2 ingest key of an uploaded audio file (from doseedo_get_upload_url / POST /api/upload/r2/ingest-url; starts with "ingest/"). Alternative to audio_url. |
| notes | array | no | The notes the take should play, in beats from bar 1 (the rows you sent doseedo_render_midi). |
| bpm | number | no | Tempo of the notes (or tempo_map). |
| tempo_map | array | no | Tempo changes [{beat, bpm}]. |
| time_signature | string | no | Meter (default 4/4). |
| midi_url | string | no | Alternative to notes: the part as a Standard MIDI File (≤ 2 MiB). |
| instrument | string | no | The instrument (a drum/percussion name switches to onset-only matching). |
| onset_tolerance_ms | number | no | How far a heard onset may be from the written one and still count (default 50). |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
Check the HARMONY of notes before rendering or placing them: factor a MIDI progression into its sonorities (mode "midi", default — chord-detection-free: each segment of simultaneously sounding pitches reduced to an anchor pitch class + register-exact shape, covered with recurring shape cells) or into chord symbols (mode "chord": one estimated chord per ~2 beats + a corpus-grammar cell cover with a
| Parameter | Type | Required | Notes |
|---|---|---|---|
| notes | array | no | The notes to analyze, in beats from bar 1 (same rows as doseedo_render_midi). Needs bpm. |
| bpm | number | no | Tempo of the notes (needed with notes; default 120). |
| time_signature | string | no | Meter of the notes, e.g. "4/4" (default). |
| midi_url | string | no | Alternative to notes: https URL of a Standard MIDI File (≤2 MiB). |
| mode | string | no | "midi" (default): sonority / shape factoring. "chord": chord symbols per segment + cell cover. |
| beats_per_segment | number | no | mode chord: segment length in beats (0.25–8, default 2). |
| min_seg_beats | number | no | mode midi: shortest sonority segment in beats (default 0.25). |
| idempotency_key | string | no | Optional. Any unique string for THIS request (e.g. a UUID). Re-sending the same call with the same key after a timeout returns the same job instead of starting a second one. |
The instrument list — the sound palette: every instrument doseedo can PLAY YOUR NOTES on (doseedo_render_midi) — orchestral strings, brass and winds, guitars, basses, keys, drums and percussion, and World instruments (koto, sitar, banjo, pedal steel, tabla, congas…). Each entry gives the EXACT render call (call: instrument, plus timbre_preset where one is needed — a koto is the acoustic_guitar m
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | no | One instrument (id, alias or label, e.g. "cello", "upright bass", "koto") → its full entry: every preset with its own call and range, transposition, aliases, demo, page. |
| query | string | no | What the part needs, in words: an instrument ("trumpet"), a family ("woodwinds"), a technique ("pizzicato", "muted") or a register ("low", "bright"). Ranked best-first. |
| family | string | no | Only this family. |
| pitches | array | no | MIDI pitches the part uses (concert, 60 = C4) — only instruments whose range holds every one. |
| chords | boolean | no | true = only instruments one player can play chords on. |
Scoring to picture: turn HIT POINTS (a cut, an impact, the title card — as seconds from the cue start or SMPTE timecodes) into a TEMPO MAP that lands each hit exactly on a downbeat (or a beat / an eighth — per hit with hits[].land), staying near your tempo and inside bpm_range. An AD or any cue that must hold ONE tempo: fixed_bpm: true (+ max_deviation_bpm, tolerance_ms) finds the tempo and the ba
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hits | array | yes | The moments the music must land on: [{time_s} (seconds from the cue start) or {timecode: "01:00:12:08"} (film timecode, with fps and start_timecode), label?, land?}] — land = THIS hit's landing ("down |
| bpm | number | yes | The cue's tempo (20–300) — the map stays as close to it as the hits allow. |
| bpm_range | array | no | Allowed tempo range [min, max] (default ±12 % of bpm). |
| time_signature | string | no | Meter (default 4/4). |
| land | string | no | Land hits on bar lines (default), on any beat, or on any eighth — the default for every hit without its own land. |
| fixed_bpm | boolean | no | ONE tempo for the whole cue (an ad, a song-form cue): the solver picks the tempo (within max_deviation_bpm of bpm; default exactly bpm) and where bar 1 sits (music_offset_s, default within the first b |
| max_deviation_bpm | number | no | How far the tempo may move from bpm (both modes; in place of bpm_range). A variable map at 124 ±12 % can swing 11+ bpm between hits — 3 keeps it a steady groove. |
| tolerance_ms | number | no | SOFT hits (0–250 ms): a hit within this of the grid counts as landed, and one the grid can't reach is reported (landed:false), never refused. Every hit then carries error_ms; hit_rate = landed / all. |
| offset_range_s | array | no | fixed_bpm: where bar 1 may sit on the cue, [min, max] seconds (default [0, one bar]). |
| fps | number | no | Frame rate of the timecodes: 23.976, 24, 25, 29.97, 30, 50, 59.94, 60. |
| start_timecode | string | no | Film timecode of the cue's first downbeat (bar 1); hit timecodes are measured from it. |
| start_s | number | no | Alternative: the cue start in seconds of film time (informational when hits are time_s). |
Get a presigned upload for your own audio file — or a SCORE (.mid / .midi / .musicxml / .xml / .mxl → a score_key for doseedo_render_score: send a big score as a file, not as notes in the call). Returns an upload_url (PUT the raw file bytes there, e.g. curl -X PUT -H "Content-Type: <content_type>" --data-binary @song.wav "<upload_url>") and an audio_key to pass to doseedo_separate_stems / doseed
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filename | string | yes | File name including extension, e.g. "song.wav", "film.mp4", or "cue.mid" / "cue.musicxml" for a score. |
| content_type | string | no | MIME type; inferred from the extension when omitted (wav, aif/aiff, flac, mp3, m4a/aac, ogg/opus, webm; a film: mp4, mov, m4v, mkv). Required for any other extension. |
Check an async doseedo task once. Returns current status, and the result (file URLs / notes) when finished. A big result comes back as a brief (each row cut to its deciding fields): parts: ["<name>" or index, …] returns those rows of the job record IN FULL — a render_score part's every receipt, a mix part's strip, rides (every point) and loudness.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | no | The task_id returned by a submit tool. |
| kind | string | no | Which job kind created the task — the registry name the submit reply carried (generate_music, generate_sound, cover_stem, fill_gap, render_midi, train_instrument, render_score, mix, session_from_stems |
| job_id | string | no | Alternatively the job_id (job_…) from a submit tool or the jobs API — replaces task_id + kind. |
| parts | array | no | Optional, on a finished job: the parts to return in full, by name (as the result names them) or index — e.g. ["Oboes", "Timpani"]. |
Wait for an async doseedo job to finish: polls server-side for up to timeout_seconds (5–50; one call can never hold longer than 50 s), then returns the result or the latest status. If it returns still_running:true, call it again — a submit reply's eta_seconds says how long the whole job usually takes (transcribe ~15 s, a render 1–3 min, audio_to_session ~4 min), so a 3-minute job is three or four
| Parameter | Type | Required | Notes |
|---|---|---|---|
| task_id | string | no | The task_id returned by a submit tool. |
| kind | string | no | Which job kind created the task — the registry name the submit reply carried (generate_music, generate_sound, cover_stem, fill_gap, render_midi, train_instrument, render_score, mix, session_from_stems |
| job_id | string | no | Alternatively the job_id (job_…) from a submit tool or the jobs API — replaces task_id + kind. |
| timeout_seconds | number | no | Max seconds to wait in this call (5–50, default 45). Start with the submit reply's suggested_next_wait. |
List the jobs this account submitted (generate / render_midi / cover / stems / transcribe / session / convert / bounce / the analyses), newest first — to find an earlier result, check what is still running, or resume after a lost connection. Each row names its artifacts (e.g. ["vocals", "drums", "midi_piano"]); doseedo_check_task {job_id} returns the full result with fresh links. Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | How many (1–100, default 20). |
| kind | string | no | Only this job kind (registry name): generate_music, generate_sound, cover_stem, fill_gap, render_midi, train_instrument, render_score, mix, session_from_stems, spot_video, score_to_picture, cover_song |
| status | string | no | — |
| session_id | string | no | Only jobs whose input names this session — a bounce, stems registered into it, a render of one of its tracks (filtered within the fetched page). |
| before | string | no | Page cursor: the next_cursor of a previous call. |
Cancel a queued or running job. What that stops and refunds depends on the kind — generate_music / render_midi / cover_song: a render not yet on the GPU is stopped and its credits refunded; one already rendering finishes (credits spent), the job ends as canceled, output discarded. audio_to_session: cooperative — stops at the next stage boundary and refunds the build's sound-tool unit (a separation
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job_id | string | yes | The job_id from a submit tool or doseedo_list_jobs. |
Check the connected doseedo account: plan tier, the monthly credit pool (generation AND DAW conversions draw it), purchased extra-usage credits, and storage. Read-only — consumes nothing. Use it before starting expensive work to confirm there is budget.
No parameter schema on file.
Estimate what a job will cost in credits BEFORE submitting it, and whether the connected account can afford it right now. Spends nothing. Pass the job (generate_music, generate_sound, cover_stem, fill_gap, render_midi, train_instrument, cover_song, separate_stems, transcribe, audio_to_session, convert_project, bounce_session, spot_video, score_to_picture, analyze_song, detect_chords, beat_grid, an
| Parameter | Type | Required | Notes |
|---|---|---|---|
| job | string | yes | Which job to price (a doseedo_ tool name or recipe verb is accepted too). |
| args | object | no | The arguments you intend to pass to the job tool; only the price-relevant ones matter. |
The named pipelines people actually ask for — stems, session (mix → DAW project), cover, transcribe, generate, render-midi (your notes played by an instrument model), custom-instrument (train your own from a recording), timbre-transfer (your notes, a recording's tone), sound-design (SFX / foley / one-shots), analyze-song (key/tempo/sections/chords), convert, bounce, and the compose-part guide (a p
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | A recipe name or alias, e.g. "session" / "stems-to-session". Omit to list all. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Doseedo Film Score: spot a video, play your score on AI or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| doseedo_generate_sound | external-sink | external-sink: keyword "curl", declares readOnlyHint: false, openWorldHint: true |
| doseedo_render_midi | external-sink | external-sink: keyword "curl", declares readOnlyHint: false, openWorldHint: true |
| doseedo_train_instrument | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| doseedo_render_score | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| doseedo_mix | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| doseedo_session_from_stems | external-sink | external-sink: keyword "curl", declares readOnlyHint: false, openWorldHint: true |
| doseedo_spot_video | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| doseedo_score_to_picture | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| doseedo_check_take | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| doseedo_analyze_midi | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| doseedo_instruments | no tags | |
| doseedo_tempo_map | no tags | |
| doseedo_get_upload_url | untrusted-inputexternal-sink | untrusted-input: keyword "download"; external-sink: declares readOnlyHint: false, openWorldHint: true |
| doseedo_check_task | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| doseedo_wait_task | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| doseedo_list_jobs | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| doseedo_cancel_job | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| doseedo_account | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| doseedo_quote | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| doseedo_recipes | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.22.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Doseedo Film Score: spot a video, play your score on AI can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.