{
  "name": "generate_audio",
  "description": "Turn ElevenLabs v3 tagged text into an MP3 + karaoke JSON sidecar. Call this once per audio clip you need. The agent may invoke it in parallel across multiple audios. The output_path is where the .mp3 lands; the .json is written next to it with the same basename.",
  "input_schema": {
    "type": "object",
    "properties": {
      "tagged_text": {
        "type": "string",
        "description": "ElevenLabs v3 tagged text. Short phrases, one tag per phrase. Use only these tags: [calm], [curious], [slow down], [dramatic pause], [hesitates], [excited] (sparingly), [sigh] (once max)."
      },
      "output_path": {
        "type": "string",
        "description": "Absolute path where the .mp3 should be written (e.g. /abs/path/audio/slide-1.mp3). Parent folders are created if missing. A companion .json is written next to it."
      },
      "force": {
        "type": "boolean",
        "description": "Regenerate even if the mp3 and json already exist. Default false (idempotent skip).",
        "default": false
      }
    },
    "required": ["tagged_text", "output_path"]
  },
  "timeout": 150
}
