Verified conversions across 205 color spaces: CSS strings, gamut checks, .cube LUTs
Doseedo 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
Edit DAW sessions; convert Logic/Ableton/FL/PT/REAPER/Cubase/Dorico; stems, transcribe, generate
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http doseedo-mcp https://api.doseedo.com/mcp
# 2 — ask your agent for something these tools do
# doseedo_generate_music, doseedo_render_midi, doseedo_cover_song and 30 more
Doseedo 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-mcp https://api.doseedo.com/mcpReconnect, 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.
33 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.
Generate an original song or instrumental from a text PROMPT (optionally with lyrics). The prompt sets style/instrumentation; bpm and time_signature only tag the caption (a loose hint, NOT an enforced tempo or grid); there is no key control (a key named in the prompt is not honoured) and no MIDI input. Wrong tool for "a part in D minor at the session tempo" — for that YOU write the notes and rende
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prompt | string | yes | Style/mood/instrumentation prompt, e.g. "warm jazz trio, brushed drums, late-night ballad". |
| lyrics | string | no | Optional lyrics to sing. Omit for instrumental. |
| duration_seconds | number | no | Target length in seconds (e.g. 30–120). Omit for the model default. |
| bpm | number | no | Optional tempo HINT in BPM, written into the caption (default 120). Not enforced — the output tempo can drift from it. |
| time_signature | string | no | Optional meter HINT written into the caption, e.g. "4/4", "3/4". Not enforced. |
| 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. |
THE tool for "I wrote the part, now play it": a doseedo instrument model performs the MIDI you give it — your exact notes, in your key, at your bpm — and returns audio takes. This is how an agent makes AI audio of a specific part (prompt-only doseedo_generate_music cannot take notes or a key). Input ONE of: notes[] ({pitch, start_beats, duration_beats, velocity} — beats from bar 1, the same rows a
| 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. Instrument id from GET https://api.doseedo.com/api/instruments (e.g. "violin", "tenor_sax", "electric_guitar", "piano"). Keep the notes inside its range. |
| bpm | number | yes | REQUIRED. Tempo of the notes (10–400). Written into the MIDI's tempo meta, so start_beats/duration_beats land at exactly this tempo. |
| 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 named timbre preset for the instrument (the catalog's preset ids). Omit for the instrument default. |
| timbre_audio_url | string | no | 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. |
| 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 |
| dynamics | string | no | Target dynamic for the timbre pick: "pp", "p", "mp", "mf", "f", "ff", "fff", a 0–1 number, or a MIDI velocity as text. |
| prompt | string | no | Optional caption override (default: the instrument id). Style words help a little; the notes are the control. |
| 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. |
Re-render an uploaded song as a cover: keep its structure/melody while changing timbre, instruments, or lyrics. INSTRUMENT SWAP: instruments {"piano": "electric_guitar"} separates the song, transcribes the swapped stem and re-plays THOSE transcribed notes on the target instrument; by default only the swapped stem(s) are regenerated and every other stem passes through as the original separated audi
| 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/"). Provide this or audio_url. |
| audio_url | string | no | https URL of the audio, as an alternative to audio_key: a doseedo result URL exactly as a job returned it (a stem, a take, a bounce), or any public URL. The gateway fetches it (≤256 MB) into your acco |
| lyrics | string | no | Optional replacement lyrics. |
| genre | string | no | Optional GENRE style transfer: free text naming the target genre (e.g. "bossa nova", "80s synth-pop"); every regenerated stem is captioned with it. Outcome in result.cover.genre. |
| style_key | string | no | Optional ingest key (upload it first) of a reference MIX whose TIMBRE the regenerated stems take on (style transfer). |
| structure_key | string | no | Optional ingest key of audio whose STRUCTURE codes replace the source's (the Cover page's "Structure: custom"). |
| timbre_preset | string | no | Optional named timbre preset — the fallback rung of the timbre ladder (stem latent > this > stock bank). |
| drum_split | boolean | no | true = explode the covered drums into isolated kick/snare/hh/… stems, each generated from its own slice of the drum roll (result.drum_stems). |
| guitar_split | string | no | Deal the guitar bucket into N players, each its own row/swap: "2"–"4", or "auto" (a one-vs-two probe decides). Outcome in result.cover.guitar_split. |
| seed | number | no | Optional random seed for reproducibility. |
| instruments | object | no | Optional per-stem instrument SWAP map {source: target}, e.g. {"piano": "electric_guitar", "sax": "violin"}. Source = a stem (drums, bass, vocals, guitar, piano, other) or a detected instrument (sax, t |
| cover_noise_strength | number | no | Optional 0–1 fidelity dial: higher departs further from the source. |
| swap_cns | number | no | Optional 0–1, only with instruments: how far the SWAPPED stems may depart from their source (overrides cover_noise_strength for them; server default 0.35). Lower = closer to the original timing/feel. |
| regen | string | no | Optional: which stems to regenerate. Default with a swap = only the swapped stems (the rest are the original separated audio). "all" = cover every stem; or a comma list of stems/instruments, e.g. "pia |
| labels | object | no | Optional identity CORRECTIONS {source: instrument}, same shape as instruments, e.g. {"other": "trumpet"} when the separation mislabels a stem. Only fixes what the stem is called (caption/timbre); noth |
| midi_only | boolean | no | Optional: re-perform every regenerated stem from its transcribed MIDI with NO timbre from the recording (the stem's own sound is dropped). Stems with nothing to render are skipped (result.cover.midi_o |
| export | string | no | Optionally also build a DAW session for this target. |
| 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. |
Split an uploaded mix into stems (vocals, drums, bass, guitar, piano, other — or orchestral/auto-detected instruments), with optional per-stem MIDI transcription and DAW-session export. Async: returns a job_id — poll with doseedo_wait_task (~2 minutes). Result: stems{name: url}, midi{name: url}, drum_substems{kick, snare, …} (drum_split), vocals_lyrics / vocals_notes, session_tracks + session_temp
| 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/"). Provide this or audio_url. |
| audio_url | string | no | https URL of the audio, as an alternative to audio_key: a doseedo result URL exactly as a job returned it (a stem, a take, a bounce), or any public URL. The gateway fetches it (≤256 MB) into your acco |
| models | string | no | Separation model set. Default 6stem (vocals/drums/bass/guitar/piano/other); auto/orchestra/detect for wider instrument sets. |
| instruments | string | no | models=orchestra only: comma-separated extractor targets, e.g. "saxophone,trumpet,trombone". Available: drums, percussion, bass, double_bass, guitar, electric_guitar, acoustic_guitar, piano, organ, ha |
| include_midi | boolean | no | Also transcribe each stem to MIDI (default true). |
| stems_only | boolean | no | true = the stems and NOTHING derived from them (no MIDI, no lyrics, no latents) — the fastest, cheapest separation. Implies include_midi:false. |
| drum_split | boolean | no | true = also split the drum stem into isolated kick / snare / hi-hat / toms / ride / crash (+ perc) sub-stems (result.drum_substems). |
| guitar_split | string | no | Deal the guitar stem into N players (same-instrument separation): "2"–"4", or "auto" (a one-vs-two probe decides; no split when it hears one). Outcome in result.guitar_split. |
| export | string | no | Optionally also build a DAW session from the stems. |
| session_id | string | no | Register the stems INTO this doseedo session (from doseedo_list_sessions) as audio tracks — result.session_tracks lists them. Needs parent_track_id. |
| parent_track_id | string | no | With session_id: the t_… track the mix sits on; the stems are added as its children. |
| 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. |
Transcribe audio to notes (pitch, onset/offset seconds, velocity, confidence as JSON — not a MIDI file). Works from an uploaded audio_key or an audio_url — any public https URL, including a result URL from another doseedo job (a generate take, a stem) as it was returned. Async: returns a job_id — poll with doseedo_wait_task (usually ~15–60s). For the KEY / tempo / chords of a whole mix use doseedo
| 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/"). Provide this or audio_url. |
| audio_url | string | no | https URL of the audio to transcribe (alternative to audio_key): any public URL, or a doseedo result URL exactly as a job returned it — no key needed. |
| instrument | string | no | Optional instrument hint, e.g. "piano", "sax", "vocals", "bass". |
| tempo_bpm | number | no | Optional known tempo — enables beat-aligned note times. |
| register | string | no | Optional register hint for the instrument (e.g. "soprano", "tenor", "bass"). |
| family | string | no | Optional instrument family (e.g. "brass", "reeds", "strings") when the exact instrument is unknown. |
| polyphony | string | no | Optional: "solo" (monophonic line), "poly", or "section" (a horn section — see roster/chairs). |
| roster | string | no | polyphony="section": the chairs on the stem, e.g. "trumpet,trumpet,trombone,tenor_sax". Omit for the family default. |
| chairs | string | no | polyphony="section": register codes per chair, as an alternative to roster. |
| strikes | boolean | no | With tempo_bpm: also return the harmony_strikes attack grid. |
| beats_per_bar | number | no | With tempo_bpm: beats per bar for the beat-domain times (default 4). |
| backend | string | no | Advanced: force a transcription backend. Omit — the server routes by instrument. |
| want | string | no | What to return: "notes" (default), "f0" (the continuous pitch contour — frame-rate Hz values, for glides/vibrato/intonation), or both. |
| 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. |
Turn an uploaded full mix into a complete DAW session (separated stems as tracks, tempo map, optional per-stem MIDI and chord guide). The result is a downloadable session zip for Logic Pro or Ableton. Async: returns a job_id — poll with doseedo_wait_task (~4 minutes). Cancel: cooperative — the build stops at its next stage boundary and the build's sound-tool unit is refunded (a GPU separation alre
| 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/"). Provide this or audio_url. |
| audio_url | string | no | https URL of the audio, as an alternative to audio_key: a doseedo result URL exactly as a job returned it (a stem, a take, a bounce), or any public URL. The gateway fetches it (≤256 MB) into your acco |
| target | string | no | DAW target (default logic). |
| midi_stems | string | no | Optional comma-separated stems to also add as MIDI tracks, e.g. "piano,bass" (include "drums" for a GM drum roll). |
| keep_stem_audio | boolean | no | With midi_stems: keep the audio stem next to its MIDI track (default true); false = the MIDI track REPLACES the audio. |
| chords | boolean | no | Add a detected-chords guide track (default false). |
| key | boolean | no | Detect the key and write it into the project (default true in the full build, false with simple). |
| markers | boolean | no | Add section markers (intro/verse/chorus…) (default true in the full build, false with simple). |
| simple | boolean | no | Faster minimal build: meter + tempo + stems only, no MIDI (default false). Required for stem_mode orchestra/detect. |
| separate | boolean | no | false = no separation: the mix lands as ONE audio track (default true). |
| tempo_map | boolean | no | false = one constant tempo instead of a tempo map (default true). |
| stem_mode | string | no | Separation family. auto (DEFAULT): the 6 stems plus a residual cascade that peels detected orchestral sections out of "other" (no orchestral content → identical to 6stem). 6stem: vocals/drums/bass/gui |
| instruments | string | no | stem_mode orchestra/detect: optional comma list restricting the orchestral set, e.g. "violin,cello,flute". |
| quantize_midi | string | no | Snap every pitched MIDI lane: "grid" = to the grid its own onsets support (straight/swing 8ths, 16ths, triplets, detected per lane); "score" = notation positions (straight 8ths). Default off (played t |
| drum_substems | boolean | no | Lay each drum piece as its own audio track on a Drums bus (default false; implied by stem_mode drumsep). |
| drum_midi_split | boolean | no | With "drums" in midi_stems: one Quick Sampler track PER kit piece, each loaded with a synthesized one-shot (default false = one GM drum-roll track). |
| guitar_split | string | no | Split the guitar stem into N players, each its own track + MIDI lane on a Guitar Section bus: "0" (off), "auto" (DEFAULT — a one-vs-two probe decides), "2"–"4". |
| retune | boolean | no | Default true: a mix sitting >35 cents off A440 is pitch-corrected onto the 12-TET grid before separation (every transcriber coin-flips otherwise). false = leave the tuning as recorded. |
| dereverb | boolean | no | Opt-in: lay DRY stems and recreate the room with a reverb plugin on each track (default false). |
| crop_silence | boolean | no | Punch regions in where each stem plays instead of whole-length stems (default false). |
Convert a DAW project, rebuilt natively in the target: tracks, MIDI, audio clips, tempo and markers arrive editable (Logic/Ableton/Pro Tools/REAPER pairs also automation, buses/sends, plugin state; into FL 3rd-party plugins only). Sources: Logic .logicx, Ableton .als, FL .flp, Pro Tools .ptx, REAPER .rpp, Cubase .cpr, Dorico .dorico/.musicxml, Studio One .song, GarageBand .band (SOURCE only — zip
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_key | string | yes | R2 key of the uploaded project (from doseedo_get_project_upload_url / POST /api/upload/r2/signed-url; starts with "uploads/"). |
| direction | string | yes | Source and target as "<source>2<target>" (logic | ableton | fl | protools | reaper | cubase | dorico | studioone | bitwig | garageband), "auto2<target>" to let the server detect the source, or "<daw>2 |
| options | object | no | Conversion options (all optional). third_party_plugins:"disable" drops third-party AU/VST devices so the export opens clean on a machine without them; stock_plugins:"disable" leaves stock devices unma |
| 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. |
Musical analysis of a recording in one call: key (e.g. "D minor"), bpm + per-beat tempo_map, meter / beats_per_bar, downbeats (seconds), sections (intro/verse/chorus… with times), chords (a progression on the beat grid), dynamics. USE THIS to learn the key and tempo of a reference before writing a part — never guess or ask the user for what the audio already says. Pass audio_key (an upload) or aud
| 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/"). Provide this or audio_url. |
| audio_url | string | no | https URL of the audio (a doseedo result URL as returned, or any public URL). Alternative to audio_key. |
| 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. |
Chord detection on audio: chord_spans[{chord, start, end, start_beat, end_beat, confidence}], chords{"<beat>": "Am7"}, bpm, beats_per_bar, beat_map. Default = the deep ACE detector (GPU-backed, a CPU chroma detector is the automatic fallback); deep:false forces the fast CPU detector. Pass audio_key (an upload) or audio_url (a result URL from another job as returned, or any public https URL). Up to
| 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/"). Provide this or audio_url. |
| audio_url | string | no | https URL of the audio (a doseedo result URL as returned, or any public URL). Alternative to audio_key. |
| deep | boolean | no | true (default) = deep ACE detector; false = fast CPU chroma detector. |
| 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. |
Beat tracking: bpm, beats[] (seconds), downbeats[] (seconds), beats_per_bar, downbeat_offset, beat_map[{t, pos}], duration — the grid to place a part against a recording (beat n is at beats[n] seconds). Pass audio_key (an upload) or audio_url (a result URL from another job as returned, or any public https URL). Up to 10 minutes of audio is analyzed. Synchronous (~3–15 s). For key + sections + chor
| 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/"). Provide this or audio_url. |
| audio_url | string | no | https URL of the audio (a doseedo result URL as returned, or any public URL). Alternative to audio_key. |
| 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. |
Get a presigned upload for a DAW PROJECT file (for doseedo_convert_project / doseedo_import_project). Zip a project FOLDER so its audio travels with it — and a .logicx or GarageBand .band, which are folders (macOS packages). SIZE LIMITS: a single PUT takes up to 5 GB; guest and free accounts convert projects up to 2 GB, paid plans up to 12 GB (a larger one is refused as project_too_large with the
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filename | string | no | File name including extension, e.g. "Song Project.zip", "My Song.band.zip", "beat.flp", "song.cpr", "Mix.song", "set.dawproject" or "score.mxl". |
| content_type | string | no | MIME type: application/zip for zips (default), application/octet-stream for bare project files. |
| size_bytes | number | no | The file's size in bytes (stat it). Decides single PUT vs multipart and sizes the parts. |
| multipart | boolean | no | Force a multipart upload regardless of size (resumable per part). |
| project_key | string | no | CONTINUATION of a multipart upload: the key the first call returned. |
| upload_id | string | no | CONTINUATION: the upload_id the first call returned. |
| part_numbers | array | no | CONTINUATION: which part numbers (1-based) to sign now, ≤ 24 per call. |
Finish a MULTIPART project upload started by doseedo_get_project_upload_url: pass every uploaded part's number and ETag (from the PUT response header; quotes optional). Returns the project_key to pass to doseedo_convert_project / doseedo_import_project. All parts except the last must be the same size (what split -b produces). abort:true discards the upload instead.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_key | string | yes | — |
| upload_id | string | yes | — |
| parts | array | no | [{part_number, etag}] for EVERY part, in order. |
| abort | boolean | no | true = abandon the upload and free its parts (no project_key results). |
Open an uploaded DAW project (Logic .logicx.zip, Ableton .als or project zip, FL .flp, REAPER .rpp, Pro Tools .ptx — zip the folder) as an EDITABLE doseedo session: returns a session_id the session tools then work on (doseedo_get_session → doseedo_edit_session → doseedo_download_session as a native Logic project, or convert that download to another DAW with doseedo_convert_project). The session ge
| Parameter | Type | Required | Notes |
|---|---|---|---|
| project_key | string | no | R2 key of the uploaded project (from doseedo_get_project_upload_url; starts with "uploads/"). |
| daw | string | no | The source DAW, when the filename does not say (optional; detected otherwise). |
| name | string | no | Session name (default: the project's own name). |
| task_id | string | no | CONTINUATION: the task_id a previous call returned while the parse was still running. |
Get a presigned upload for your own audio file. 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 / doseedo_transcribe / doseedo_cover_song / doseedo_audio_to_session, or to doseedo_add_audio_to_session. Formats: WAV, AIFF, FLAC, MP3, M4A/AAC, Ogg/Opus,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filename | string | yes | File name including extension, e.g. "song.wav". |
| content_type | string | no | MIME type; inferred from the extension when omitted (wav, aif/aiff, flac, mp3, m4a/aac, ogg/opus, webm). Required for any other extension. |
Check an async doseedo task once. Returns current status, and the result (file URLs / notes) when finished.
| 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, render_midi, cover_song, separate_stems, transcribe, audio_to_session, convert_project, bounce_session, an |
| job_id | string | no | Alternatively the job_id (job_…) from a submit tool or the jobs API — replaces task_id + kind. |
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, render_midi, cover_song, separate_stems, transcribe, audio_to_session, convert_project, bounce_session, an |
| 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, render_midi, cover_song, separate_stems, transcribe, audio_to_session, convert_project, bounce_session, analyze_song, detect_chords, beat_grid, anal |
| 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, render_midi, cover_song, separate_stems, transcribe, audio_to_session, convert_project, bounce_session, analyze_song, detect_chords, beat_grid, analyze_midi) and the same args you would give the job tool (duration_seconds, models, i
| 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), analyze-song (key/tempo/sections/chords), convert, bounce, and the compose-part guide (a part in the session's key at its tempo: analyze → you write the MIDI → place or render it) — each with its inputs, the tool calls in order, outp
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | A recipe name or alias, e.g. "session" / "stems-to-session". Omit to list all. |
List the connected account's DAW sessions (most recently updated first) — their ids, names, DAW, and update time. Pages with limit + offset (the response carries total and next_offset); name_contains filters by name. Use a session id with doseedo_get_session and doseedo_edit_session; clean up old ones with doseedo_delete_sessions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | How many to return (default 25, max 200). |
| offset | number | no | How many to skip (default 0) — pass the previous response's next_offset to get the next page. |
| name_contains | string | no | Only sessions whose name contains this text (case-insensitive). |
Delete DAW sessions in bulk — a SOFT delete (the sessions disappear from the account and every listing; nothing on the user's disk is touched). Select by ids, or by filters (daw_kind, created_before / created_after, name_contains); filters combine with AND. SAFE BY DEFAULT: without confirm:true this is a DRY RUN that deletes nothing and returns {matched, ids}. Always run the dry run first, show th
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | no | Session ids to delete (up to 500), from doseedo_list_sessions. |
| daw_kind | string | no | Only sessions bound to this DAW, e.g. "logic", "ableton". |
| created_before | string | no | ISO-8601 date/time: only sessions created before this. |
| created_after | string | no | ISO-8601 date/time: only sessions created after this. |
| name_contains | string | no | Only sessions whose name contains this text (case-insensitive). |
| limit | number | no | Cap on how many sessions one call may match (default and max 1000). |
| confirm | boolean | no | false/omitted = dry run (nothing deleted). true = actually delete — only after the user saw the dry-run count and agreed. |
Read a DAW session as the arrangement an agent edits against: every track with its wire ids (track_id t_…, mixer strip channel_id ch_…), regions in BOTH beats and seconds with their MIDI notes (i, pitch, velocity, start_beats, duration_beats — i is what edit_midi_notes selects by), mixer (volume with dB, pan, mute), plugins with params[{param_id, name, value}] (set_device_param needs param_id) and
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session_id | string | yes | From doseedo_list_sessions. |
| tracks | array | no | Only these tracks (track_id t_… or channel_id ch_…; a track name matches too). The rest of the session (tempo, markers, buses, sync) is always included. |
| include_notes | boolean | no | Include MIDI notes. Default: true when the selected tracks hold ≤200 notes in all, else false (regions then carry note_count + notes_omitted:true). |
| include_params | boolean | no | Include plugin params (default true). false keeps param_count only. |
| include_automation | boolean | no | Include automation lanes with points (default true). false keeps a lane count per track. |
Edit a DAW session with a list of ops (regions, MIDI notes, sampler samples, tracks, faders/pans/mutes, plugins, tempo, markers, key, …): ids and current values from doseedo_get_session, op arguments from doseedo_edit_ops_reference. Live in Logic within seconds when sync.live_edits is true; otherwise stored and applied at next open. CONTRACT: every op is validated before anything is stored; a reje
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session_id | string | yes | — |
| batch_key | string | no | A stable id for THIS batch (e.g. "drumkit-build-1"). Same batch_key + same ops on a retry = the same client_op_ids = no duplicates. Always pass one for a build you might have to retry. |
| atomic | boolean | no | Default true: any rejected op means nothing is stored. Set false to store the valid ops and receive the rest as rejected. |
| ops | array | yes | The edits, e.g. [{"op":"set_track_crop","args":{"track_id":"t_…","start_beats":4,"end_beats":124,"prev_start_beats":24}}, {"op":"set_channel_volume","args":{"channel_id":"ch_…","value":0.6}}]. See dos |
The catalog of session edit ops doseedo_edit_session accepts, served in views that each fit one answer (never cut mid-JSON). DEFAULT (no args): units, ids, applies, groups, batching/policy, the recipe NAMES and every op as {op, group, applies, summary} — read it ONCE before a build. Then fetch what you need: op:"load_quick_sampler_sample" (or ops:[…]) → those ops in full (args, units, doc; an unkn
| Parameter | Type | Required | Notes |
|---|---|---|---|
| section | string | no | Which part of the catalog. Omit for the default overview. |
| op | string | no | One op name, e.g. "set_midi_notes" — returns that op in full. |
| ops | array | no | Several op names — returns each in full. |
Is Dø Desktop running on the user's Mac and connected to their DAW? Reports which sessions it currently holds, whether a live Logic hook is answering, and its per-session applied cursor. Use it to know whether an edit will reach the DAW live now (desktop online + logic connected) or wait for the next session open. When it is NOT connected the result says how the user gets and pairs the app, and wh
No parameter schema on file.
Add an audio file to a session — from a public URL (a doseedo-generated song, a separated stem, any https audio) OR from a LOCAL file you uploaded (doseedo_get_upload_url → PUT the bytes → pass the returned audio_key here). Ingested server-side and returned as a sha256 you then use: place it on a track with attach_audio, or load it into a Quick Sampler with load_quick_sampler_sample {track_id, sam
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session_id | string | yes | — |
| audio_url | string | no | https URL of the audio — any public URL, or a doseedo result URL from a job (pre-signed links work as-is; no key needed). |
| audio_key | string | no | audio_key from doseedo_get_upload_url after you PUT a local file to its upload_url (a file from the user's disk, e.g. a drum-pack WAV). |
| filename | string | no | Optional name for the asset. |
Bounce a session (or specific tracks) to audio through their REAL plugin chains, offline — Dø Desktop renders them in the background WITHOUT the user opening the DAW (live via Logic if it's open, headless if it isn't; this is the thing stock DAWs can't do). Async: returns a job_id — poll with doseedo_wait_task. The result is downloadable stem URLs. Needs Dø Desktop to run at some point to pick up
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session_id | string | yes | — |
| track_ids | array | no | Tracks to bounce (t_… ids from doseedo_get_session). Omit to bounce the whole session. |
| stems | boolean | no | true (default) = one file per track; false = a single mixdown. |
| tail_seconds | number | no | Extra seconds for reverb/delay to ring out (default 2). |
| format | string | no | Output format (default wav). |
| 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. |
Save a session as a native Logic project (.logicx.zip), rebuilt server-side from the session state — no desktop needed. Returns a short-lived NO-AUTH download_url (plain curl -o ~/Downloads/…, no header) plus replay = what the build put in the file (per track: kind, Quick Sampler sample + sampler {mode, sample_seconds, start/end, plays_beats}, MIDI note count, audio region count; bundled media
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session_id | string | yes | — |
| daw | string | no | Target DAW (default logic; only logic is a one-shot native download — for others use doseedo_convert_project). |
List the plugins you can insert on a strip with doseedo_edit_session's add_device op. Returns the stock Logic catalog (instruments + effects, always available) and — when Dø Desktop is connected — the actual plugins installed on the user's Mac (stock + third-party). Insert any of them BY NAME: add_device {channel_id, device: {name: "…"}}.
No parameter schema on file.
Create a new, empty DAW session in the account (a blank project you can then populate with doseedo_edit_session, or target with doseedo_audio_to_session). Returns its session_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Session name. |
| daw | string | no | Bound DAW (default logic). |
- 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 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.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
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.14.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 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.