Skip to main content
Glama

Doseedo: Film Scoring, AI Instruments, Sound Effects & Stems

Stems → a DAW session

doseedo_session_from_stems

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: [{name, audio_url}] — result links work as-is). After doseedo_mix add mix_job: each track at that mix's level and pan, the mix as a muted reference track. Async: job_id → doseedo_wait_task (~30–90 s) → file (pre-signed zip, curl -o session.zip , 24 h). Cancel: the plane has no stop for a running session build — it runs to completion (credits spent), the job ends as canceled and its output is discarded. Only a job still queued at the plane is refunded by the plane's own failure refund.

Input Schema

NameRequiredDescriptionDefault
bpmNoProject tempo (default 120).
cuesNoMCP: ONE session for a whole scored film — [{cue: "1M1", start_s, from_job: <its doseedo_render_score job>, mix_job?: <its doseedo_mix job>, emotion?}] (≤ 12 cues, from the cue sheet's start_s). Every cue's stems and MIDI land on one timeline at its start, on ONE tempo map (each cue's own tempo_map joined, each cue's bar 1 on a bar line), a marker per cue, each track at its cue's mix level and pan, each cue's mix as a muted reference. Replaces from_job / mix_job / stems.
nameNoProject name — the project inside the zip, and the zip itself downloads as <name>_session.zip.
stemsNo[{name, audio_url | audio_key, gain_db?, pan?, mute?, position_beats?}] — the audio tracks, in order.
videoNoThe film the music is written to: {video_key: the ingest/ key of your upload (doseedo_get_upload_url), name?, start_s?}. It is re-encoded lean (720p) and travels inside the project: REAPER gets a muted video track, Logic Pro gets its Movie (inside the package; Logic finds it by name). Ableton projects are built without it (the answer says so).
targetNoWhich DAW (default logic): Logic Pro (.logicx), Ableton Live (.als) or REAPER (.rpp + media, with the film as a video track).
markersNoArrangement markers [{name, beat}] — beat 0 = bar 1 on the project's tempo map. A scored film's cues are written as markers by `cues`.
mix_jobNoMCP: 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)".
from_jobNoMCP: a doseedo_render_score job_id — its stems, parts' MIDI and tempo are used (no other input needed).
mixgraphNoA 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.
tempo_mapNoTempo changes [{beat, bpm}] for the project.
midi_tracksNoOptional MIDI tracks: [{name, notes:[{pitch, start_beats, duration_beats, velocity?}]}].
session_beatsNoLength of the session in beats (the tempo map is written this far; default: the last note). `cues` sets it.
time_signatureNoMeter (default 4/4).
idempotency_keyNoOptional. 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / video / description
      Previous value: -"The film the music is written to: {video_key: the ingest/ key of your upload (doseedo_get_upload_url), name?, start_s?}. It is re-encoded lean (720p) and laid on its own muted track in the project — for REAPER today; Logic / Ableton projects are built without it (the answer says so)."New value: +"The film the music is written to: {video_key: the ingest/ key of your upload (doseedo_get_upload_url), name?, start_s?}. It is re-encoded lean (720p) and travels inside the project: REAPER gets a muted video track, Logic Pro gets its Movie (inside the package; Logic finds it by name). Ableton projects are built without it (the answer says so)."
  2. Changed6 schema fields changed
    • addedInput schema / properties / cues
      Added value: +{
      +  "description": "MCP: ONE session for a whole scored film — [{cue: \"1M1\", start_s, from_job: <its doseedo_render_score job>, mix_job?: <its doseedo_mix job>, emotion?}] (≤ 12 cues, from the cue sheet's start_s). Every cue's stems and MIDI land on one timeline at its start, on ONE tempo map (each cue's own tempo_map joined, each cue's bar 1 on a bar line), a marker per cue, each track at its cue's mix level and pan, each cue's mix as a muted reference. Replaces from_job / mix_job / stems.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "cue": {
      +        "type": "string"
      +      },
      +      "emotion": {
      +        "type": "string"
      +      },
      +      "from_job": {
      +        "type": "string"
      +      },
      +      "mix_job": {
      +        "type": "string"
      +      },
      +      "start_s": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "cue",
      +      "start_s",
      +      "from_job"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / markers
      Added value: +{
      +  "description": "Arrangement markers [{name, beat}] — beat 0 = bar 1 on the project's tempo map. A scored film's cues are written as markers by `cues`.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "beat": {
      +        "type": "number"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "beat"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / session_beats
      Added value: +{
      +  "description": "Length of the session in beats (the tempo map is written this far; default: the last note). `cues` sets it.",
      +  "type": "number"
      +}
    • changedInput schema / properties / target / description
      Previous value: -"Which DAW (default logic)."New value: +"Which DAW (default logic): Logic Pro (.logicx), Ableton Live (.als) or REAPER (.rpp + media, with the film as a video track)."
    • changedInput schema / properties / target / enum
      Previous value: -[
      -  "logic",
      -  "ableton"
      -]New value: +[
      +  "logic",
      +  "ableton",
      +  "reaper"
      +]
    • addedInput schema / properties / video
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The film the music is written to: {video_key: the ingest/ key of your upload (doseedo_get_upload_url), name?, start_s?}. It is re-encoded lean (720p) and laid on its own muted track in the project — for REAPER today; Logic / Ableton projects are built without it (the answer says so).",
      +  "properties": {
      +    "name": {
      +      "type": "string"
      +    },
      +    "start_s": {
      +      "type": "number"
      +    },
      +    "video_key": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "video_key"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / name / description
      Previous value: -"Project name."New value: +"Project name — the project inside the zip, and the zip itself downloads as <name>_session.zip."
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say non-readOnly, non-destructive, non-idempotent and open-world; the description adds the operational facts an agent actually needs beyond that: async job semantics with a 30-90 s wait, a pre-signed zip URL that expires in 24 h, credits that are spent even if the job is abandoned, that a running build cannot be stopped, and that only a queued job is refunded. It also discloses secondary behavior such as video re-encoding to 720p, the video appearing only as a muted track in REAPER/Logic, and Ableton projects being built without video.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence front-loads the deliverable and the source/target choices, so scanning yields the essentials quickly. It is dense — the run of clauses about cues, tempo maps and reference tracks in one sentence, plus a long trailing paragraph on cancellation and refunds, costs a little readability, but almost every clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter, nested, async rendering tool with no output schema, the description covers the workflow, the return artifact (pre-signed zip named <name>_session.zip) and the failure/cancel economics, which is nearly everything an agent needs. The only gap is that it says nothing about the shape of an error or partial-failure response, which matters for a job that can spend credits and be discarded.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema does not carry: stems URLs may be result links used as-is, cues replaces from_job/mix_job/stems and caps at 12 cues with bar-1-on-a-bar-line joining, target defaults to logic, and mixgraph applies only gain_db and pan (its EQ, compression, reverb and rides are discarded). The idempotency_key and session_beats interplay is left to the schema, which keeps this off a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and deliverable ("Build a native DAW PROJECT from stems") plus the concrete artifacts (one audio track per stem from bar 1, optional MIDI tracks, on your tempo) and the three output formats (.logicx, .als, .rpp zipped). It is clearly separable from siblings like doseedo_render_score and doseedo_separate_stems because it consumes their output rather than producing audio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three explicit entry paths with the condition selecting each: pass from_job plus a doseedo_render_score job_id, pass raw stems [{name, audio_url}] from renders/separations, or add mix_job after doseedo_mix. It also names the mandatory follow-up (doseedo_wait_task ~30-90 s) and explains the cues alternative for multi-cue films, so an agent never has to guess which parameter set applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources