{"name":"io.github.synopsys0/postfader-fl-studio-mcp","slug":"synopsys0-postfader-fl-studio-mcp","title":"PostFader","description":"FL Studio MCP server: 134 tools for mixing, MIDI, sound selection, production runs, and review.","url":"https://mcp.market/server/synopsys0-postfader-fl-studio-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":31,"stars":2,"forks":0,"downloads_week":171,"last_push_at":"2026-09-14T20:38:02.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/synopsys0/postfader-fl-studio-mcp","website":null,"version":"10.0.0","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"postfader-fl-studio-mcp","version":"10.0.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Set to 1 to build the MIDI SysEx transport. Without it the server cannot reach FL Studio.","isRequired":true,"default":"1","name":"FL_BRIDGE_ENABLE_MIDI"},{"description":"Exact virtual MIDI endpoint name shared with FL Studio. PostFader does not install or configure a virtual MIDI provider.","isRequired":true,"name":"FL_BRIDGE_MIDI_PORT"},{"description":"Absolute FL Studio user-data directory containing Settings/Hardware.","isRequired":true,"name":"FL_STUDIO_USER_DATA_DIR"}]}],"tools":[{"name":"audio_analyze_file","description":"Measure level, spectrum, dynamics, stereo, and optional pitch of one render.","write_action":false,"price_micros":0,"input_schema":null},{"name":"audio_analyze_masking","description":"Measure per-band spectral overlap and vocal-minus-instrument level margins.","write_action":false,"price_micros":0,"input_schema":null},{"name":"audio_compare_files","description":"Measure band deltas over the aligned, loudness-matched common overlap.","write_action":false,"price_micros":0,"input_schema":null},{"name":"audio_find_recent_bounces","description":"List the newest audio files in FL Studio's Rendered, Audio, and Projects folders.","write_action":false,"price_micros":0,"input_schema":null},{"name":"copilot_capture_readonly_inspection","description":"Capture a compact project, mixer, and effect inspection report.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_apply_verified_batch","description":"Apply a closed-union batch after one session preflight, without replay.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_find_empty_pattern","description":"Find the first default-empty pattern without changing the current pattern.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_get_capabilities","description":"Report direct, partial, unavailable, and unvalidated integration paths.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_get_plugin_preset_count","description":"Read FL's authoritative preset count for one loaded plug-in.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_get_project_history","description":"Read undo/redo bounds, current history position, hint, and dirty state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_get_project_summary","description":"Read project metadata, counts, dirty state, version, and transport state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_get_selected_range","description":"Read raw endpoints and PPQ without claiming meter or rendering semantics.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_get_step_sequence","description":"Read an explicit current-pattern/channel grid and its conflict digest.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_get_transport_state","description":"Read playback, recording, loop mode, position, and song length.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_inspect_mixer_track","description":"Read one track's state, effects, built-in EQ, and outgoing routes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_list_channels","description":"List globally addressed channels, mix state, routing, and generator identity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_list_mixer_tracks","description":"List mixer tracks, current levels, selection state, and loaded effects.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_list_patterns","description":"List pattern identity, length, current state, and empty/default status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_list_playlist_tracks","description":"List every one-based Playlist track and its controllable state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_redo","description":"Move to the next absolute undo-history position and verify it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_route_channel_to_mixer","description":"Set one global channel's absolute mixer destination and verify it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_select_channel","description":"Select one global channel exclusively and verify the complete selection.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_select_mixer_track","description":"Make one mixer track active and verify the active-track getter.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_select_pattern","description":"Select one pattern and verify FL's current-pattern getter.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_select_plugin_preset","description":"Navigate to an exact preset and require later-idle-tick identity readback.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_channel_identity","description":"Set a channel's name and/or color with per-field readback proof.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_channel_mix","description":"Set channel volume, pan, and/or mute with per-field readback proof.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_channel_pitch","description":"Set normalized channel pitch and report normalized/semitone readback.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_channel_solo","description":"Set a global channel solo state and verify it on a later FL tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_loop_mode","description":"Set Pattern or Song loop mode without exposing FL's toggle-only API.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_metronome","description":"Set the metronome absolutely and prove the later UI state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_arm","description":"Set recording arm with one bounded toggle and later-tick readback.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_color","description":"Set a mixer color, accepting FL-owned differences in the high byte.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_mute","description":"Set one track's mute state and report the readback FL gave on a later tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_name","description":"Rename one mixer track.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_pan","description":"Set one mixer pan and report the readback FL gave on a later tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_send","description":"Route one mixer track to another, or stop routing it there.","write_action":true,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_send_level","description":"Set how much of one track reaches another. 0.8 is unity, as on the fader.","write_action":true,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_solo","description":"Set one mixer track's solo state and verify it on a later FL tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_stereo_separation","description":"Set stereo separation and report FL's later-tick readback.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_volume","description":"Set one mixer fader and report the readback FL gave on a later tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_mixer_volume_db","description":"Search FL's fader curve and prove the requested dB value on a later tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_pattern_identity","description":"Set pattern name and/or color with per-field later-tick proof.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_pattern_length","description":"Set pattern length using Image-Line's API 39+ getter/setter pair.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_playing","description":"Set playback to an absolute state and verify it on a later FL idle tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_playlist_track_identity","description":"Set Playlist name and/or color with per-field later-tick proof.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_playlist_track_state","description":"Set Playlist states; toggle-only selection is dispatched at most once.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_plugin_param","description":"Set one plug-in parameter; verified from FL's display string changing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_plugin_param_display","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_plugin_param_option","description":"Set a parameter that shows words rather than numbers: Key, Scale, Input Type.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_precount","description":"Set recording precount absolutely and verify it on a later FL tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_recording","description":"Set recording absolutely; FL's toggle is dispatched at most once.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_song_position","description":"Set a stopped transport's absolute normalized playhead position.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_step_sequence","description":"Set absolute current-pattern cells only if the observed grid digest still matches.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_tempo","description":"Set project tempo while stopped and verify BPM on a later FL idle tick.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_time_signature_numerator","description":"Set and prove beats per bar from FL's PPB/PPQ getter pair.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_track_eq","description":"Set gain and/or frequency on one built-in EQ band; at least one is required.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_set_write_mode","description":"Enable or disable writes for this bridge session without restarting FL.","write_action":true,"price_micros":0,"input_schema":null},{"name":"fl_stop","description":"Stop playback, set normalized position to zero, and verify both fields.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_trigger_note","description":"Audition a global channel with a bounded note-on/off dispatch receipt.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fl_undo","description":"Move to the previous absolute undo-history position and verify it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_apply_plan","description":"Apply a plan once through the verified batch kernel.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_create_gain_stage_plan","description":"Create, but do not apply, dB-fader changes from a peak watch.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mix_create_plan","description":"Store a session-bound closed-union plan; no project value changes.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mix_doctor","description":"Diagnose a real bounce with explicit policy thresholds and no mutation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_finish_assessment","description":"Run the end-to-end read-only finish assessment and stop at user export.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mix_get_peak_watch","description":"Read cumulative sampled peaks without stopping the watch.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_get_plan","description":"Read one process-local reviewable plan.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_inspect_plugin_compatibility","description":"Report which loaded effects have known parameter-role adapters.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_list_plugin_profiles","description":"List bundled parameter-role adapters and processing recipes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_masking_recommendations","description":"Recommend bounded dynamic remediation from sample-synchronous stems.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_reference_recommendations","description":"Return bounded tonal review ranges only when alignment/readiness passes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_resolve_processing_intent","description":"Map an intent to loaded profiled controls without applying settings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_start_peak_watch","description":"Start a process-persistent sampled peak watch and return its first frame.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mix_stop_peak_watch","description":"Stop one process-local watch and return its final aggregate.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_atlas_get_product","description":"Read one static Atlas product and its related descriptive records.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_atlas_inspect_loaded","description":"Match the target-aware live Track B inventory to static Atlas knowledge.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_atlas_recommend","description":"Rank static plug-in choices or stock alternatives without changing FL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_atlas_search","description":"Search bundled static plug-in knowledge without contacting FL Studio.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_get_current_preset","description":"Read FL's current preset name and an index only when it is unique.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_inspect_pad_map","description":"Read generic pad, MIDI-note, color, empty, and mute observations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_inspect_parameter_map","description":"Read a bounded page of exposed parameters; never marks unknown controls safe.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_list_presets","description":"Read one deterministic preset page without changing the plug-in.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_scan_loaded_plugins","description":"Inventory loaded plug-ins without inserting or changing anything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"plugins_scan_parameters","description":"De-pad a whole plug-in in one call; prefer this over paging a VST.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postfader_creation_readiness","description":"Aggregate all detectable setup blockers without changing FL Studio.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postfader_execute_run","description":"Create and execute one task-scoped run until its plan completes or blocks.","write_action":true,"price_micros":0,"input_schema":null},{"name":"postfader_get_run","description":"Read a current or journaled run, its generated outputs and operation receipts.","write_action":true,"price_micros":0,"input_schema":null},{"name":"postfader_list_runs","description":"Find recent runs after an MCP restart without executing any operations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postfader_validate_run","description":"Validate a bounded Production Run and current capabilities without changing FL.","write_action":true,"price_micros":0,"input_schema":null},{"name":"processing_apply_plan","description":"Apply a semantic plan through one task-scoped verified Production Run.","write_action":false,"price_micros":0,"input_schema":null},{"name":"processing_plan","description":"Plan loaded-effect processing without enabling writes or mutating FL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sound_selection_apply","description":"Apply exact presets in deterministic order and stop on unknown or unverified outcomes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sound_selection_create_variation","description":"Return a section delta instead of replacing the existing palette.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sound_selection_get","description":"Look up one process-local palette without treating expiry as a server error.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sound_selection_history_reset","description":"Explicitly remove bounded local selection history; project state is unchanged.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sound_selection_history_status","description":"Report the local history path, health, schema, and bounded record counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sound_selection_inventory","description":"Read a compact loaded sound pool; Atlas-only products remain recommendations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sound_selection_plan","description":"Choose deterministic loaded-target assignments without changing FL or history.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sound_selection_record_feedback","description":"Update bounded local ranking feedback; silence is never inferred.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T21:13:39.823Z","report":{"scannerVersion":"0.1.8","scannedAt":"2026-09-19T21:13:39.817Z","components":{"code":{"score":25,"max":25,"notes":["96 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 5 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"postfader-fl-studio-mcp","version":"10.0.0","found":true,"weeklyDownloads":171,"license":"Apache-2.0","dependencyCount":16,"publishedAt":"2026-09-13T12:03:27.491561Z","repositoryUrl":"https://github.com/synopsys0/postfader-fl-studio-mcp"}],"repo":{"found":true,"owner":"synopsys0","repo":"postfader-fl-studio-mcp","archived":false,"pushedAt":"2026-09-14T20:38:02Z","stars":2,"forks":0,"openIssues":7,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/108628840?v=4","ownerCreatedAt":"2022-07-03T18:31:45Z","license":"Apache-2.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/108628840?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":2,"forks":0,"downloadsWeek":171,"license":"Apache-2.0","lastPushAt":"2026-09-14T20:38:02.000Z","score":31}}}},"grade_history":[{"kind":"restore","fromGrade":"B","toGrade":"A","reason":"score 92","createdAt":"2026-09-19T21:13:40.259Z"}],"reviews":[]}