Skip to main content
Glama
synopsys0

PostFader V12 — FL Studio MCP Server

audio_analyze_masking

Read-onlyIdempotent

Measure instrumental masking of a vocal from two sample-synchronous stems and get per-band overlap plus suggested instrument reductions to improve clarity.

Instructions

Measure where an instrumental masks a vocal and suggest remedies.

Reads two sample-synchronous stems; changes nothing. Returns per-band
spectral overlap and vocal-minus-instrument margins and, when the evidence
is actionable, suggested instrument reductions per band (dynamic EQ or
automation). Use audio_diagnose_mix to judge the full mix.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
vocal_pathYesAbsolute path to the vocal stem.
max_secondsNoOptional shorter analysis bound in seconds; the default reads up to 600.
instrumental_pathYesAbsolute path to the instrumental stem of the same section, rendered sample-synchronously.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
analysisYes
warningsNo
actionableYes
generated_atYes
remediationsYes
schema_versionNo1.0
mutations_appliedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed67 schema fields changedv11.0.2
    • removedInput schema / properties / instrument_path
      Removed value: -{
      -  "description": "Absolute path to the instrumental render of the same section, rendered sample-synchronously.",
      -  "type": "string"
      -}
    • addedInput schema / properties / instrumental_path
      Added value: +{
      +  "description": "Absolute path to the instrumental stem of the same section, rendered sample-synchronously.",
      +  "type": "string"
      +}
    • changedInput schema / properties / vocal_path / description
      Previous value: -"Absolute path to the vocal render."New value: +"Absolute path to the vocal stem."
    • changedInput schema / required
      Previous value: -[
      -  "vocal_path",
      -  "instrument_path"
      -]New value: +[
      +  "vocal_path",
      +  "instrumental_path"
      +]
    • removedOutput schema / $defs / InputProvenance / properties / analyzed_duration_sec / title
      Removed value: -"Analyzed Duration Sec"
    • removedOutput schema / $defs / InputProvenance / properties / analyzed_frames / title
      Removed value: -"Analyzed Frames"
    • removedOutput schema / $defs / InputProvenance / properties / canonical_path / title
      Removed value: -"Canonical Path"
    • removedOutput schema / $defs / InputProvenance / properties / channels / title
      Removed value: -"Channels"
    • removedOutput schema / $defs / InputProvenance / properties / sample_rate_hz / title
      Removed value: -"Sample Rate Hz"
    • removedOutput schema / $defs / InputProvenance / properties / sha256 / title
      Removed value: -"Sha256"
    • removedOutput schema / $defs / InputProvenance / properties / source_duration_sec / title
      Removed value: -"Source Duration Sec"
    • removedOutput schema / $defs / InputProvenance / properties / source_frames / title
      Removed value: -"Source Frames"
    • removedOutput schema / $defs / InputProvenance / properties / truncated / title
      Removed value: -"Truncated"
    • removedOutput schema / $defs / InputProvenance / title
      Removed value: -"InputProvenance"
    • addedOutput schema / $defs / MaskingAnalysis
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Overlap and level margins between a vocal and an instrumental render.\n\n``context_ready`` is false, and the measurement blocks are absent, whenever\nthe two files are not sample-synchronous renders of the same section.",
      +  "properties": {
      +    "analyzer_version": {
      +      "type": "string"
      +    },
      +    "balance": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/MaskingBalance"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "context_ready": {
      +      "type": "boolean"
      +    },
      +    "instrumental": {
      +      "$ref": "#/$defs/InputProvenance"
      +    },
      +    "interpretation": {
      +      "const": "measurements_only",
      +      "default": "measurements_only",
      +      "type": "string"
      +    },
      +    "limitations": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "masking": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/MaskingSummary"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "masking_analyzer_version": {
      +      "type": "string"
      +    },
      +    "measured_at": {
      +      "format": "date-time",
      +      "type": "string"
      +    },
      +    "parameters": {
      +      "$ref": "#/$defs/MaskingParameters"
      +    },
      +    "readiness_reasons": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "schema_version": {
      +      "const": "1.0",
      +      "default": "1.0",
      +      "type": "string"
      +    },
      +    "vocal": {
      +      "$ref": "#/$defs/InputProvenance"
      +    },
      +    "vocal_activity": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/VocalActivity"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    }
      +  },
      +  "required": [
      +    "measured_at",
      +    "analyzer_version",
      +    "masking_analyzer_version",
      +    "parameters",
      +    "vocal",
      +    "instrumental",
      +    "context_ready",
      +    "readiness_reasons",
      +    "limitations"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / $defs / MaskingBalance / properties / instrumental_lufs_integrated / title
      Removed value: -"Instrumental Lufs Integrated"
    • removedOutput schema / $defs / MaskingBalance / properties / vocal_lufs_integrated / title
      Removed value: -"Vocal Lufs Integrated"
    • removedOutput schema / $defs / MaskingBalance / properties / vocal_minus_instrument_active_median_db / title
      Removed value: -"Vocal Minus Instrument Active Median Db"
    • removedOutput schema / $defs / MaskingBalance / properties / vocal_minus_instrument_lu / title
      Removed value: -"Vocal Minus Instrument Lu"
    • removedOutput schema / $defs / MaskingBalance / title
      Removed value: -"MaskingBalance"
    • removedOutput schema / $defs / MaskingBand / properties / instrument_within_6db_share / title
      Removed value: -"Instrument Within 6Db Share"
    • removedOutput schema / $defs / MaskingBand / properties / possible_masking_score / title
      Removed value: -"Possible Masking Score"
    • removedOutput schema / $defs / MaskingBand / properties / range_hz / title
      Removed value: -"Range Hz"
    • removedOutput schema / $defs / MaskingBand / properties / spectral_overlap / title
      Removed value: -"Spectral Overlap"
    • removedOutput schema / $defs / MaskingBand / properties / vocal_minus_instrument_median_db / title
      Removed value: -"Vocal Minus Instrument Median Db"
    • removedOutput schema / $defs / MaskingBand / properties / vocal_minus_instrument_p10_db / title
      Removed value: -"Vocal Minus Instrument P10 Db"
    • removedOutput schema / $defs / MaskingBand / properties / vocal_minus_instrument_p90_db / title
      Removed value: -"Vocal Minus Instrument P90 Db"
    • removedOutput schema / $defs / MaskingBand / title
      Removed value: -"MaskingBand"
    • removedOutput schema / $defs / MaskingParameters / properties / max_seconds / title
      Removed value: -"Max Seconds"
    • removedOutput schema / $defs / MaskingParameters / properties / stft_window_frames / title
      Removed value: -"Stft Window Frames"
    • removedOutput schema / $defs / MaskingParameters / title
      Removed value: -"MaskingParameters"
    • addedOutput schema / $defs / MaskingRemediation
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "band": {
      +      "maxLength": 64,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "possible_masking_score": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "preferred_method": {
      +      "const": "dynamic_eq_or_automation",
      +      "default": "dynamic_eq_or_automation",
      +      "type": "string"
      +    },
      +    "rationale": {
      +      "maxLength": 512,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "suggested_instrument_reduction_db": {
      +      "maxItems": 2,
      +      "minItems": 2,
      +      "prefixItems": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "number"
      +        }
      +      ],
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "band",
      +    "possible_masking_score",
      +    "suggested_instrument_reduction_db",
      +    "rationale"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / $defs / MaskingSummary / properties / bands / title
      Removed value: -"Bands"
    • removedOutput schema / $defs / MaskingSummary / properties / candidate_bands / title
      Removed value: -"Candidate Bands"
    • removedOutput schema / $defs / MaskingSummary / properties / frequency_scope_hz / title
      Removed value: -"Frequency Scope Hz"
    • removedOutput schema / $defs / MaskingSummary / properties / instrument_within_6db_share / title
      Removed value: -"Instrument Within 6Db Share"
    • removedOutput schema / $defs / MaskingSummary / properties / possible_masking_index / title
      Removed value: -"Possible Masking Index"
    • removedOutput schema / $defs / MaskingSummary / properties / spectral_overlap / title
      Removed value: -"Spectral Overlap"
    • removedOutput schema / $defs / MaskingSummary / title
      Removed value: -"MaskingSummary"
    • removedOutput schema / $defs / VocalActivity / properties / active_frame_count / title
      Removed value: -"Active Frame Count"
    • removedOutput schema / $defs / VocalActivity / properties / active_share / title
      Removed value: -"Active Share"
    • removedOutput schema / $defs / VocalActivity / properties / threshold_db_relative_to_stft_power / title
      Removed value: -"Threshold Db Relative To Stft Power"
    • removedOutput schema / $defs / VocalActivity / properties / total_frame_count / title
      Removed value: -"Total Frame Count"
    • removedOutput schema / $defs / VocalActivity / title
      Removed value: -"VocalActivity"
    • removedOutput schema / description
      Removed value: -"Overlap and level margins between a vocal and an instrumental render.\n\n``context_ready`` is false, and the measurement blocks are absent, whenever\nthe two files are not sample-synchronous renders of the same section."
    • addedOutput schema / properties / actionable
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / analysis
      Added value: +{
      +  "$ref": "#/$defs/MaskingAnalysis"
      +}
    • removedOutput schema / properties / analyzer_version
      Removed value: -{
      -  "title": "Analyzer Version",
      -  "type": "string"
      -}
    • removedOutput schema / properties / balance
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "$ref": "#/$defs/MaskingBalance"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null
      -}
    • removedOutput schema / properties / context_ready
      Removed value: -{
      -  "title": "Context Ready",
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / generated_at
      Added value: +{
      +  "format": "date-time",
      +  "type": "string"
      +}
    • removedOutput schema / properties / instrumental
      Removed value: -{
      -  "$ref": "#/$defs/InputProvenance"
      -}
    • removedOutput schema / properties / interpretation
      Removed value: -{
      -  "const": "measurements_only",
      -  "default": "measurements_only",
      -  "title": "Interpretation",
      -  "type": "string"
      -}
    • removedOutput schema / properties / limitations
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "title": "Limitations",
      -  "type": "array"
      -}
    • removedOutput schema / properties / masking
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "$ref": "#/$defs/MaskingSummary"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null
      -}
    • removedOutput schema / properties / masking_analyzer_version
      Removed value: -{
      -  "title": "Masking Analyzer Version",
      -  "type": "string"
      -}
    • removedOutput schema / properties / measured_at
      Removed value: -{
      -  "format": "date-time",
      -  "title": "Measured At",
      -  "type": "string"
      -}
    • addedOutput schema / properties / mutations_applied
      Added value: +{
      +  "const": false,
      +  "default": false,
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / parameters
      Removed value: -{
      -  "$ref": "#/$defs/MaskingParameters"
      -}
    • removedOutput schema / properties / readiness_reasons
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "title": "Readiness Reasons",
      -  "type": "array"
      -}
    • addedOutput schema / properties / remediations
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/MaskingRemediation"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / schema_version / title
      Removed value: -"Schema Version"
    • removedOutput schema / properties / vocal
      Removed value: -{
      -  "$ref": "#/$defs/InputProvenance"
      -}
    • removedOutput schema / properties / vocal_activity
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "$ref": "#/$defs/VocalActivity"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null
      -}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "measured_at",
      -  "analyzer_version",
      -  "masking_analyzer_version",
      -  "parameters",
      -  "vocal",
      -  "instrumental",
      -  "context_ready",
      -  "readiness_reasons",
      -  "limitations"
      -]New value: +[
      +  "generated_at",
      +  "analysis",
      +  "actionable",
      +  "remediations"
      +]
    • removedOutput schema / title
      Removed value: -"MaskingAnalysis"
  2. Changed4 schema fields changedv11.0.1
    • removedInput schema / properties / instrument_path / title
      Removed value: -"Instrument Path"
    • removedInput schema / properties / max_seconds / title
      Removed value: -"Max Seconds"
    • removedInput schema / properties / vocal_path / title
      Removed value: -"Vocal Path"
    • removedInput schema / title
      Removed value: -"audio_analyze_maskingArguments"
  3. First observedv10.0.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered; the description reinforces this with 'changes nothing' and adds behavioral detail the annotations do not: the sample-synchronous requirement and the conditional nature of the suggested remedies ('when the evidence is actionable').

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?

Front-loads the purpose in one sentence, then compactly covers what it reads, what it changes, what it returns, and the alternative tool. No wasted sentences.

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?

With an output schema present, the description needn't detail return values, yet it still summarizes the per-band overlap and margin output. The sample-synchronous precondition and the alternative tool are covered; only explicit failure/edge-case behavior is absent, which is minor.

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 the schema already documents all three parameters (including the max_seconds bound). The description adds only the 'sample-synchronous' qualifier on the stems, which is meaningful but marginal beyond the schema baseline.

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 (measure) and resource (instrumental masking of a vocal), and explicitly names the sibling audio_diagnose_mix as the tool for judging the full mix. An agent can distinguish it from other audio_* tools without opening any schema.

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?

Provides clear usage context: it is for per-band masking between two sample-synchronous stems, and directs the agent to audio_diagnose_mix for full-mix judgement. It does not state explicit exclusions (e.g. what it cannot do with non-synchronous stems beyond the implication), so it falls short of a 5.

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