Skip to main content
Glama
synopsys0

PostFader V12 — FL Studio MCP Server

compose_chord_progression

Read-onlyIdempotent

Generate voice-led chords from Roman numerals in a key. Returns deterministic beat-based notes with a digest for writing, export, or bassline creation.

Instructions

Generate voice-led chords from Roman numerals in a key, without touching FL.

Deterministic: the same inputs give the same notes. Returns a note sequence
in beats with a digest. Write it with piano_roll_write_notes, export it with
compose_export_midi, or pass the progression to compose_bassline.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
rootNoTonic note name, for example C, F#, or Bb.C
octaveNoOctave of the voicing.
voicingNoVoicing strategy.close
velocityNoNote velocity 0..1.
tempo_bpmNoTempo recorded in the sequence, in BPM.
collectionNoBundled scale, mode, or raga name such as major, dorian, or harmonic_minor; custom uses custom_intervals.major
progressionYesRoman-numeral chords such as I, vi, IV, V, or V7.
beats_per_chordNoLength of each chord in beats.
custom_intervalsNoSemitone offsets from the root when collection is custom.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
seedNo
notesYes
warningsNo
generatorYes
tempo_bpmNo
note_countYes
duration_beatsYes
engine_versionNopostfader-creative-1
schema_versionNo1.0
pitch_collectionNo
mutations_appliedNo
note_digest_sha256Yes
time_signature_numeratorNo
time_signature_denominatorNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed37 schema fields changedv11.0.2
    • addedInput schema / properties / beats_per_chord / description
      Added value: +"Length of each chord in beats."
    • changedInput schema / properties / collection / description
      Previous value: -"Bundled scale/mode/raga name, or custom."New value: +"Bundled scale, mode, or raga name such as major, dorian, or harmonic_minor; custom uses custom_intervals."
    • addedInput schema / properties / custom_intervals / description
      Added value: +"Semitone offsets from the root when collection is custom."
    • addedInput schema / properties / octave / description
      Added value: +"Octave of the voicing."
    • changedInput schema / properties / progression / description
      Previous value: -"Roman chords such as I, vi, IV, V, or V7."New value: +"Roman-numeral chords such as I, vi, IV, V, or V7."
    • addedInput schema / properties / tempo_bpm / description
      Added value: +"Tempo recorded in the sequence, in BPM."
    • addedInput schema / properties / velocity / description
      Added value: +"Note velocity 0..1."
    • changedInput schema / properties / voicing / description
      Previous value: -"Deterministic voicing strategy."New value: +"Voicing strategy."
    • removedOutput schema / $defs / CreativeNote / properties / color / title
      Removed value: -"Color"
    • removedOutput schema / $defs / CreativeNote / properties / duration_beats / title
      Removed value: -"Duration Beats"
    • removedOutput schema / $defs / CreativeNote / properties / muted / title
      Removed value: -"Muted"
    • removedOutput schema / $defs / CreativeNote / properties / pan / title
      Removed value: -"Pan"
    • removedOutput schema / $defs / CreativeNote / properties / pitch / title
      Removed value: -"Pitch"
    • removedOutput schema / $defs / CreativeNote / properties / pitch_offset_tenths / title
      Removed value: -"Pitch Offset Tenths"
    • removedOutput schema / $defs / CreativeNote / properties / portamento / title
      Removed value: -"Portamento"
    • removedOutput schema / $defs / CreativeNote / properties / release / title
      Removed value: -"Release"
    • removedOutput schema / $defs / CreativeNote / properties / selected / title
      Removed value: -"Selected"
    • removedOutput schema / $defs / CreativeNote / properties / slide / title
      Removed value: -"Slide"
    • removedOutput schema / $defs / CreativeNote / properties / start_beats / title
      Removed value: -"Start Beats"
    • removedOutput schema / $defs / CreativeNote / properties / velocity / title
      Removed value: -"Velocity"
    • removedOutput schema / $defs / CreativeNote / title
      Removed value: -"CreativeNote"
    • removedOutput schema / properties / duration_beats / title
      Removed value: -"Duration Beats"
    • removedOutput schema / properties / engine_version / title
      Removed value: -"Engine Version"
    • removedOutput schema / properties / generator / title
      Removed value: -"Generator"
    • removedOutput schema / properties / mutations_applied / title
      Removed value: -"Mutations Applied"
    • removedOutput schema / properties / name / title
      Removed value: -"Name"
    • removedOutput schema / properties / note_count / title
      Removed value: -"Note Count"
    • removedOutput schema / properties / note_digest_sha256 / title
      Removed value: -"Note Digest Sha256"
    • removedOutput schema / properties / notes / title
      Removed value: -"Notes"
    • removedOutput schema / properties / pitch_collection / title
      Removed value: -"Pitch Collection"
    • removedOutput schema / properties / schema_version / title
      Removed value: -"Schema Version"
    • removedOutput schema / properties / seed / title
      Removed value: -"Seed"
    • removedOutput schema / properties / tempo_bpm / title
      Removed value: -"Tempo Bpm"
    • removedOutput schema / properties / time_signature_denominator / title
      Removed value: -"Time Signature Denominator"
    • removedOutput schema / properties / time_signature_numerator / title
      Removed value: -"Time Signature Numerator"
    • removedOutput schema / properties / warnings / title
      Removed value: -"Warnings"
    • removedOutput schema / title
      Removed value: -"NoteSequence"
  2. Changed10 schema fields changedv11.0.1
    • removedInput schema / properties / beats_per_chord / title
      Removed value: -"Beats Per Chord"
    • removedInput schema / properties / collection / title
      Removed value: -"Collection"
    • removedInput schema / properties / custom_intervals / title
      Removed value: -"Custom Intervals"
    • removedInput schema / properties / octave / title
      Removed value: -"Octave"
    • removedInput schema / properties / progression / title
      Removed value: -"Progression"
    • removedInput schema / properties / root / title
      Removed value: -"Root"
    • removedInput schema / properties / tempo_bpm / title
      Removed value: -"Tempo Bpm"
    • removedInput schema / properties / velocity / title
      Removed value: -"Velocity"
    • removedInput schema / properties / voicing / title
      Removed value: -"Voicing"
    • removedInput schema / title
      Removed value: -"compose_chord_progressionArguments"
  3. First observedv10.0.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuine extra context: determinism ('same inputs give the same notes'), the return shape (a note sequence in beats with a digest), and that it does not touch FL.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then behavior, then integration. No filler and every sentence earns its place.

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

Completeness5/5

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

Complete for a generator whose output schema exists: it still describes the return (note sequence in beats with a digest) and points at the follow-up tools. An agent has everything needed to call it and route its output correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all nine parameters (root, octave, voicing, velocity, tempo, collection, progression, beats_per_chord, custom_intervals) are already documented in the schema. The description adds no format or syntax detail beyond what the schema provides, so the baseline 3 applies.

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+resource (generate voice-led chords) with the input domain (Roman numerals in a key) and the scoping constraint 'without touching FL'. This clearly separates it from compose_melody, compose_bassline, and compose_drums.

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

Usage Guidelines4/5

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

Gives a clear downstream workflow by naming the three tools that consume the output (piano_roll_write_notes, compose_export_midi, compose_bassline) and clarifies it produces data rather than mutating the DAW. It does not explicitly contrast when to pick this over compose_melody, so it stops short of full when/when-not routing.

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

Deploy Server

Other Tools