{"openapi":"3.1.0","info":{"title":"Podstage API","version":"0.1.0","description":"A fully local, hand-curated podcast and video-podcast production reference: equipment checklists by budget tier, room-acoustics tips, recording format/sample-rate/loudness guidance, remote-guest recording workflows, mic technique, on-camera framing, a searchable troubleshooting guide, a computed checklist builder, and a glossary.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://podstage.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/podstage/docs"},"termsOfService":"https://connectorbay.com/podstage/terms"},"servers":[{"url":"https://podstage.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/podstage/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/equipment_tier":{"post":{"operationId":"equipment_tier","summary":"A generic-by-category gear checklist (mic, mounting, monitoring, interface, software, room treatment, and","description":"A generic-by-category gear checklist (mic, mounting, monitoring, interface, software, room treatment, and\n    for video mode also camera/lighting/background) for one budget tier, with an approximate budget band. Use for\n    \"what should I buy to start a podcast on a $300 budget\", \"studio-tier video podcast gear list\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tier":{"description":"starter | intermediate | studio","examples":["intermediate"],"title":"Tier","type":"string"},"mode":{"default":"audio_only","description":"audio_only | video","title":"Mode","type":"string"}},"required":["tier"],"title":"equipment_tierArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/equipment_tier_list":{"post":{"operationId":"equipment_tier_list","summary":"All three budget tiers (starter, intermediate, studio) with a one-line summary and approximate budget band","description":"All three budget tiers (starter, intermediate, studio) with a one-line summary and approximate budget band\n    each. Use for \"what tiers of podcast gear do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"equipment_tier_listArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/room_acoustics_tips":{"post":{"operationId":"room_acoustics_tips","summary":"Room-acoustics tips grouped into reflection (first-reflection-point treatment), absorption (soft materials","description":"Room-acoustics tips grouped into reflection (first-reflection-point treatment), absorption (soft materials\n    vs. flutter echo), isolation (keeping outside noise out) and placement (where in the room to record). Use for\n    \"how do I stop my room sounding echoey\", \"how do I treat first reflection points\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"reflection | absorption | isolation | placement; omit for all.","title":"Category"}},"title":"room_acoustics_tipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/recording_format_recommendation":{"post":{"operationId":"recording_format_recommendation","summary":"Sample-rate, bit-depth, recording-container, delivery-codec and loudness (LUFS)/true-peak guidance for","description":"Sample-rate, bit-depth, recording-container, delivery-codec and loudness (LUFS)/true-peak guidance for\n    recording and exporting a podcast. Use for \"what sample rate should I record at\", \"what LUFS should my podcast\n    be\", \"should I record in 24-bit or 16-bit\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"mode":{"default":"audio_only","description":"audio_only | video","title":"Mode","type":"string"}},"title":"recording_format_recommendationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/remote_guest_workflow":{"post":{"operationId":"remote_guest_workflow","summary":"Explains a way to record a remote guest — recording the call itself, a double-ender (each side records","description":"Explains a way to record a remote guest — recording the call itself, a double-ender (each side records\n    locally and syncs in post), or browser-based multi-track capture — with the pros/cons of each. Use for \"how do\n    I get good audio from a remote guest\", \"what's a double-ender recording\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scenario":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"call_recorder | double_ender | hybrid_browser; omit to list all three.","title":"Scenario"}},"title":"remote_guest_workflowArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/mic_technique_tips":{"post":{"operationId":"mic_technique_tips","summary":"Concrete on-mic technique: proximity effect, working distance, off-axis angle for plosives, pop filter use,","description":"Concrete on-mic technique: proximity effect, working distance, off-axis angle for plosives, pop filter use,\n    gain staging targets, and monitoring while recording. Use for \"how close should I be to the mic\", \"why does my\n    voice sound different when I lean in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"mic_technique_tipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/video_framing_tips":{"post":{"operationId":"video_framing_tips","summary":"On-camera framing basics for a video podcast: eye-level camera, headroom, eye-line placement, working","description":"On-camera framing basics for a video podcast: eye-level camera, headroom, eye-line placement, working\n    distance for a flattering lens perspective, and where to look. Use for \"how should I frame myself on camera\n    for a podcast\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"video_framing_tipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/troubleshoot":{"post":{"operationId":"troubleshoot","summary":"Keyword-matches a recording symptom (echo, hum/buzz, clipping, plosives, sibilance, monitoring latency,","description":"Keyword-matches a recording symptom (echo, hum/buzz, clipping, plosives, sibilance, monitoring latency,\n    audio/video sync drift, missing remote-guest audio) to likely causes and fixes. Use for \"why does my recording\n    have a hum\", \"my audio and video are out of sync\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symptom":{"description":"A symptom in plain language.","examples":["my audio has an echo","popping p sounds","audio out of sync with video"],"minLength":1,"title":"Symptom","type":"string"}},"required":["symptom"],"title":"troubleshootArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/checklist_generator":{"post":{"operationId":"checklist_generator","summary":"Assembles an ordered pre-recording checklist for an audio-only, video, or remote-interview session, pulling","description":"Assembles an ordered pre-recording checklist for an audio-only, video, or remote-interview session, pulling\n    in the relevant level-check, room, framing and guest-sync steps. Use for \"give me a checklist before I hit\n    record\", \"pre-session checklist for a remote interview\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"setup_type":{"default":"audio_only","description":"audio_only | video | remote_interview","title":"Setup Type","type":"string"}},"title":"checklist_generatorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/podcast_glossary":{"post":{"operationId":"podcast_glossary","summary":"Defines core recording terms: XLR, phantom power, gain staging, proximity effect, pop filter, room tone,","description":"Defines core recording terms: XLR, phantom power, gain staging, proximity effect, pop filter, room tone,\n    cardioid, dynamic vs condenser mic, sample rate, bit depth, LUFS, true peak, DAW, double-ender. Use for \"what's\n    phantom power\", \"what does LUFS mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"podcast_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}