All MCP tools

episode_audio_evidence

Read editor audio evidence

App-only read of precomputed absolute-scale audio facts for source-time ranges already projected into an Episode timeline. Returns sample peak and RMS in tenths of dBFS plus EBU R128 short-term loudness in tenths of LUFS. Sources must belong to the named Episode graph. Resolution is selected from durable multiresolution evidence using pixels_per_second; this call never decodes media. A range with status analyzing has scheduled or coalesced an idempotent background backfill and may be retried after retry_after_ms. Status unavailable is terminal for this read, includes a reason, and does not schedule analysis or promise a retry. Status no_audio means accepted evidence found no audio; it is distinct from unavailable measurements.

Surface: App-only

Product release 1dce717408a55fac1047e7d779177fa3ef8ede51
Public contract commit 1ce47f7857ae3d9b6933fe83d5c33de3ae5efc64
Public contract SHA-256 241d47d25e4b4c1dae9d2263793874d06fc4ba7bc3c78d4cf2bc63fbb32ed7dc
Captured 2026-09-24T16:39:30.100Z. Review or improve this contract on GitHub.

These blocks show the complete MCP descriptors captured from serving Rails. Security schemes and resource URIs can differ by connected host.

App descriptor

{
  "name": "episode_audio_evidence",
  "title": "Read editor audio evidence",
  "description": "App-only read of precomputed absolute-scale audio facts for source-time ranges already projected into an Episode timeline. Returns sample peak and RMS in tenths of dBFS plus EBU R128 short-term loudness in tenths of LUFS. Sources must belong to the named Episode graph. Resolution is selected from durable multiresolution evidence using pixels_per_second; this call never decodes media. A range with status analyzing has scheduled or coalesced an idempotent background backfill and may be retried after retry_after_ms. Status unavailable is terminal for this read, includes a reason, and does not schedule analysis or promise a retry. Status no_audio means accepted evidence found no audio; it is distinct from unavailable measurements.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "episode_id": {
        "type": "string",
        "description": "Episode public ID (comp_...)."
      },
      "requests": {
        "type": "array",
        "minItems": 1,
        "maxItems": 64,
        "description": "Visible source-time ranges from the editor's authoritative timeline projection.",
        "items": {
          "type": "object",
          "properties": {
            "request_id": {
              "type": "string",
              "description": "Optional caller key echoed in the result."
            },
            "source_id": {
              "type": "string",
              "description": "Recording public ID (src_...) present in this Episode."
            },
            "source_range": {
              "type": "array",
              "items": {
                "type": "number",
                "minimum": 0
              },
              "minItems": 2,
              "maxItems": 2,
              "description": "Half-open source-time range [start_seconds, end_seconds]."
            },
            "pixels_per_second": {
              "type": "number",
              "exclusiveMinimum": 0,
              "description": "Current rendered density; the server selects the least wasteful stored evidence level."
            }
          },
          "required": [
            "source_id",
            "source_range"
          ],
          "additionalProperties": false
        }
      }
    },
    "required": [
      "episode_id",
      "requests"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ],
    "ui": {
      "visibility": [
        "app"
      ]
    },
    "openai/widgetAccessible": true,
    "openai/visibility": "private"
  },
  "outputSchema": {
    "type": "object",
    "properties": {
      "schema": {
        "type": "string",
        "enum": [
          "bitterclip.episode_audio_evidence.v1"
        ]
      },
      "episode_id": {
        "type": "string"
      },
      "revision": {
        "type": "integer"
      },
      "scales": {
        "type": "object",
        "properties": {
          "waveform": {
            "type": "string",
            "enum": [
              "dbfs_tenths"
            ]
          },
          "loudness": {
            "type": "string",
            "enum": [
              "lufs_tenths"
            ]
          },
          "silence_floor_tenths": {
            "type": "integer"
          }
        }
      },
      "ranges": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "request_id": {
              "type": "string"
            },
            "source_id": {
              "type": "string"
            },
            "source_title": {
              "type": "string"
            },
            "status": {
              "type": "string",
              "enum": [
                "ready",
                "no_audio",
                "analyzing",
                "unavailable"
              ]
            },
            "reason": {
              "type": "string",
              "description": "Why measurements are unavailable; does not imply analysis is scheduled."
            },
            "requested_source_range": {
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            "resolved_source_range": {
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": "number"
              }
            },
            "evidence_id": {
              "type": [
                "string",
                "null"
              ]
            },
            "evidence_version": {
              "type": [
                "integer",
                "null"
              ]
            },
            "retry_after_ms": {
              "type": [
                "integer",
                "null"
              ]
            },
            "waveform": {
              "type": [
                "object",
                "null"
              ]
            },
            "loudness": {
              "type": [
                "object",
                "null"
              ]
            },
            "summary": {
              "type": [
                "object",
                "null"
              ]
            }
          },
          "required": [
            "request_id",
            "source_id",
            "source_title",
            "status",
            "requested_source_range",
            "resolved_source_range",
            "waveform",
            "loudness",
            "summary"
          ]
        }
      }
    },
    "required": [
      "schema",
      "episode_id",
      "revision",
      "scales",
      "ranges"
    ],
    "additionalProperties": false
  }
}

Errors

[
  "composition_not_found",
  "invalid_input"
]

Examples

[]