Podcast MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PODCAST_WHISPER_MODEL | No | Whisper model to use as the machine default (e.g. small.en). | |
| PODCAST_MCP_NISQA_MODEL | No | Path to an unpacked NISQA weights directory if neural NISQA is needed. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| episode_createC | Create a new episode project in a workspace directory and return its path. |
| track_addC | Add an audio track to the project from a media file. |
| track_add_empty_toolC | Add an empty (silent placeholder) track to the project. |
| track_set_media_toolC | Replace the media file backing an existing track. |
| track_set_meta_toolC | Update a track's label, role, or speaker metadata. |
| track_set_volume_toolA | Set a track's saved volume in dB (-60 to +12), on top of its staging gain. The mix plays the track at |
| track_set_mute_toolA | Mute or unmute a track in the saved mix. Play and bounce leave a muted track out at once, and the premix after the next re-mix (Refresh). The track stays on the timeline: edits and analysis still cover it. Undoable. Solo is a per-listener GUI control, not saved. |
| track_remove_toolC | Remove a track from the project. |
| track_reorder_toolC | Move a track to a new position in the track order. |
| transcribe_trackA | Transcribe one track, or all dialogue tracks when track_id is omitted, into word-level timestamps. Runs even when a transcript exists, but reuses the ASR disk cache when the audio, model and prompt are unchanged (the pipeline's force_transcribe skips that cache). Replaces only those transcripts (others and extra-source transcripts are kept) and warns when it replaces a hand-edited one; the pipeline's transcribe_tracks step reuses existing transcripts instead. |
| get_transcriptC | Fetch the transcript, combined or per-track, in text or JSON format. |
| get_transcript_vocabulary_toolC | Read project terms, guest names, revision, and re-transcription status. |
| set_transcript_vocabulary_toolA | Replace vocabulary using the revision returned by get_transcript_vocabulary_tool. Pass null only when that read returned a null revision. A stale revision rejects the write; the existing show title and other transcript context stay unchanged. This changes future transcription prompts, not existing transcript words. |
| export_transcriptC | Export the transcript as Markdown and return the file path. |
| precorrect_transcript_toolB | Apply automatic transcript precorrections; dry_run previews without changing words. |
| transcript_refine_status_toolB | Report the transcript-refine gate status (blocking approve_edits while open). |
| transcript_refine_brief_toolB | Return the transcript-refine brief: what to review before marking done. |
| transcript_refine_done_toolC | Mark transcript refinement done, with optional notes. |
| transcript_refine_waive_toolC | Waive transcript refinement with a recorded reason. |
| align_status_toolB | Report the conversation-clock alignment acceptance gate status (pending/done/waived). |
| align_brief_toolB | Return the alignment acceptance brief: what the agent must check before marking done. |
| align_done_toolC | Mark the conversation-clock alignment acceptance gate done, with optional notes. |
| align_waive_toolC | Waive the alignment acceptance gate with a recorded reason. |
| build_edit_contextB | Build the JSON edit-planning context: utterances with word indexes for cut_* tools. |
| search_transcript_toolC | Search the transcript for text, optionally scoped to a track or speaker. |
| propose_range_mute_toolA | Propose an exact range mute for host review, with replay-safe command identity. Pass a serialized ExactRangeTarget from bleed preview or the range editor. This never applies audio or approves the proposal. Reuse command_id only when retrying the same target. The host auditions and approves or rejects it. |
| propose_range_cut_toolA | Propose an exact range cut for host review (Studio range Cut), replay-safe.
|
| cut_time_range_toolB | Stage a pending cut of a time range on a track; applies after approve_edits. |
| cut_text_match_toolB | Stage a pending cut for the first text match, or every match with match_all=True. |
| cut_utterance_toolC | Stage a pending cut of one utterance by its index. |
| cut_words_toolC | Stage a pending cut of a word-index range on a track. |
| apply_edit_plan_toolC | Stage cuts from an edit-plan list; applied entries undergo fresh cut assessment. |
| preview_inaudible_cut_toolA | Dry-run local inaudible-cut snap (~±80ms) for a proposed range. Not a multi-second narrative handoff planner. For leave-a-beat / clean-up-the-
transition / punchline-to-pivot bounds use |
| suggest_handoff_cut_toolA | Propose retain-then-snap ripple bounds for a narrative handoff. Omit track_id and speaker to require quiet across every dialogue lane, including muted lanes. Either selector limits analysis to one lane. Use when cleaning up a transition, leaving a beat, or punchline-to-pivot —
not word timestamps and not |
| join_quality_toolC | Score an existing or proposed cut join for audibility artifacts (clicks, glitches). |
| join_qa_sweep_toolC | Score all joins on a track (or the whole project) for QA review. |
| join_label_toolC | Record a pass/fail label for a join to train the join-quality ranker. |
| list_edit_decisions_toolB | List pending decisions; use list_applied_edits_tool for archived approved edits. |
| approve_edits_toolA | Approve pending edits by id (or every pending proposal), applying them to the timeline. To give every pending sound its own suggested action at once, use
|
| apply_suggested_actions_toolA | Apply every pending sound's own suggested action in one undo step. Each tighten proposal carries a To change one sound after the batch (say a cut to leave) without undoing the rest, call
again with |
| reject_edits_toolB | Reject pending edits by id, discarding them without applying. |
| update_pending_edit_toolB | Adjust the start/end bounds of a pending edit before approval.
|
| revert_applied_edit_toolB | Restore an ordinary source mute; clip removals require whole-action History Undo. |
| edit_impact_report_toolC | Report pending-review and applied edits, with seconds cut in total and by track. |
| propose_editsA | Propose filler/pause tighten edits for review (does not apply them). Returns a JSON object |
| apply_editsC | Auto-apply non-review REMOVE/MUTE decisions whose reason starts filler: or pause:. |
| strip_silence_toolB | Rebuild a track from speech islands between detected silences. Silence is audio under the track's own audibility floor (its voice floor) plus
|
| ripple_delete_toolA | Ripple-delete a timeline range across every dialogue track. Default inaudible opt absorbs trailing quiet air to ~0.4s before the next
word. For punchline-to-pivot / leave-a-beat handoffs, call
|
| ripple_delete_text_toolB | Ripple-delete the first timeline span matching a transcript text query. The matched speaker's words are the cut; other tracks' speech in the span needs
confirmation.
The automatic audio checks hold a harsh or other-speaker cut and name the finding;
|
| move_segment_toolC | Cut a timeline segment and reinsert it at a new time (ripple move). |
| move_clips_toolA | Move clips in session time and/or onto another track (no neighbor ripple).
|
| move_by_text_toolC | Move a transcript-matched segment before or after another transcript match. |
| insert_gap_toolB | Open pure silence on the timeline (split + shift). Do not use to fake a beat after a tight handoff unless the user asks —
prefer keeping existing room tone via |
| fade_joins_toolC | Add fades at edit joins on a track; dry_run previews without applying. |
| crossfade_joins_toolC | Add crossfades at edit joins on a track; dry_run previews without applying. |
| set_clip_fade_toolB | Set the fade-in and fade-out duration of a single clip. Dialogue fades cap at |
| set_join_mode_toolA | Set join_in_mode on one clip: fade | crossfade | cut (TOOL_TIMEBASE: na). Mode only: fades are untouched, so a crossfade with no fades renders as a plain
join; the result's |
| set_clip_join_toolA | Set the join between two neighbouring clips: mode plus fades (TOOL_TIMEBASE: na).
|
| trim_clip_edge_toolA | Move one clip's
|
| roll_clip_join_toolA | Roll the join between two neighbouring clips by Positive moves the join later: the left clip gains material and the right clip
starts later in its source, so the pair keeps its length and later clips stay put.
Same operation as the Studio roll seam ( |
| shorten_gaps_toolA | Shorten word gaps longer than max_gap_sec across the timeline. Each shortened pause ripples every dialogue track; another speaker talking in a
pause needs confirmation. A ripple that cuts another track's speech stays unchanged
until you repeat with |
| split_clip_toolB | Split clip(s) at a timeline timecode. Pass |
| delete_clips_toolA | Delete whole clips by id, as the Studio clip Delete and Ripple delete do.
|
| duplicate_segment_toolC | Duplicate a timeline segment at a new time. |
| copy_segment_toolA | Copy Read-only. Returns |
| paste_segment_toolA | Paste a
|
| list_clips_toolA | List clips in timeline order for one track or all tracks when track_id is omitted. |
| list_applied_edits_toolC | List applied edits in a timeline window. |
| render_status_toolC | Report stem freshness and whether dialogue balance measurements are stale. |
| fill_with_room_tone_toolC | Fill a track's silences with its own room tone. |
| add_chapter_toolC | Add a chapter marker at a timeline time. |
| remove_chapter_toolC | Remove a chapter marker by title. |
| list_chapters_toolC | List chapter markers in timeline order. |
| check_loudness_toolC | Measure LUFS and report artifact and dialogue-balance staleness without refreshing.
|
| correct_transcript_toolA | Fix the text of one transcript word without changing its timing. Pass |
| correct_transcript_phrase_toolB | Replace a word range's text with corrected phrase text. Pass |
| set_word_suppressed_toolB | Toggle suppressed on one per-track word (TOOL_TIMEBASE: source). Pass |
| set_word_automatic_toolA | Clear one word's suppression lock; A word set directly by |
| set_words_ignored_toolA | Strike through and mute (or restore) a word range at render, without a cut. Text-and-audio hide (#633): unlike suppress, the words stay in the combined
transcript; only their audio is muted, computed at render time and never
written to Pass |
| set_word_timing_toolA | Set one transcript word's start and end in source seconds (Studio Adjust word timing).
|
| find_replace_transcript_toolA | Replace a literal word or phrase everywhere in the transcript (Studio Find and replace). Matches whole words across every track and recording; punctuation around a word is
kept. |
| apply_transcript_cleanup_toolB | Batch word + phrase fixes in one undoable history step.
|
| low_confidence_words_toolB | List words below a confidence threshold for human review. |
| verify_transcript_toolC | Apply bulk corrections and mark words verified on a track's transcript. |
| add_effect_toolC | Add an effect (or preset) to a track or speaker's effect chain. |
| remove_effect_toolC | Remove an effect from a track or speaker's effect chain. |
| set_effect_bypass_toolC | Toggle bypass on one chain effect by index (TOOL_TIMEBASE: na). |
| list_effects_toolC | List the effect chain for a track or speaker. |
| analyze_cleanup_toolC | Analyze a track for cleanup opportunities (silence, clicks, hum). |
| audio_diagnostics_toolC | Run audio diagnostics (clipping, hum, level) on a time window. |
| recommend_fades_toolC | Recommend fades at joins to hide edit artifacts. |
| apply_fade_recommendations_toolC | Apply a list of fade recommendations (from |
| low_audibility_words_toolC | List words too quiet to hear relative to the mix. |
| apply_low_audibility_suppression_toolC | Suppress low-audibility transcript words, optionally only |
| gate_overreach_toolC | Report where noise gating muted speech on a track. |
| audibility_map_toolC | Return per-word audibility scores for a track or speaker. |
| flagged_words_toolC | List words flagged for review (suppressed, low-audibility, or bleed). |
| reconciliation_status_toolC | Report transcript/timeline reconciliation status (stale vs current). |
| reconcile_transcript_toolC | Re-run transcript/timeline reconciliation; dry_run previews without applying. |
| bleed_words_toolC | List words contaminated by another speaker's microphone bleed. |
| apply_bleed_suppression_toolC | Suppress mic-bleed words (dry_run previews without applying). |
| overlap_duplicates_toolC | Find duplicate words across tracks in an overlap window. |
| apply_transcript_gate_toolB | Apply an acoustic bleed plan to fresh dialogue stems and persist its source scope. Retained speech and unresolved audio stay open. Later renders reuse the plan's policy and scope. Supported local retained-bleed alignment runs by default and respects saved timing choices. Alignment can trigger normal transcript reconciliation. |
| mute_off_speaker_toolA | Mute a track wherever another speaker is talking and its own speaker is not. Use after transcript reconcile on a call recording whose track still carries another
person's voice. A stretch is muted when another dialogue track has words there, this
track has none, and this track holds nothing louder than a copy of that speaker.
Each stretch is a visible muted region in Studio (Restore brings it back); History
undoes the whole command. Preview with |
| align_retained_bleed_toolB | Align supported complete direct phrases locally while keeping uncertain audio intact. Preview with apply=False. Saved manual/declined decisions take priority. Legacy placement overrides require an explicit timeline window. |
| set_retained_bleed_alignment_mode_toolB | Save a timing choice for an applied decision or a proposal from the same window. Manual and declined choices prevent later automatic correction; auto resets that choice. |
| propose_social_clips_toolC | Propose short-form social clips for a platform, limited to max_clips. |
| list_social_clips_toolC | List proposed social clips, optionally filtered by approved status. |
| approve_social_clips_toolC | Approve social clips by id. |
| reject_social_clips_toolC | Reject social clips by id. |
| social_clip_report_toolB | Return a Markdown listing of social clip candidates. |
| export_social_clips_toolB | Export specified clips, or all approved and non-review-required drafts when IDs are omitted. |
| add_comment_toolA | Add a timeline review comment (instant or span). Times are timeline seconds (session/deliverable clock), like chapters - not source-media time. Use search_transcript_tool's timeline_start/end when anchoring to dialogue. track_ids / action_texts are optional string lists. Empty track_ids = session-wide. Undoable via history. Pass edit_decision_id to open the single Ask thread for a pending cut (unique per decision; later notes must use add_comment_reply_tool). |
| list_comments_toolA | List timeline review comments sorted by timeline_start. Pass include_resolved=false for an agent work queue, or open_actions_only=true for incomplete action items. Each row includes id, body, author, track_ids, action_items, resolved_*. |
| get_comment_toolB | Fetch one timeline comment by id (full action_items and resolve metadata). |
| update_comment_toolB | Update comment body, tracks, and/or timeline anchor. Times are timeline seconds.
|
| resolve_comment_toolA | Mark a comment resolved (or reopen with resolved=false). Always pass by= identity (e.g. "agent" or the human name). Records resolved_by / resolved_at. Prefer resolving after action items are done. |
| add_comment_action_toolC | Append an action item TODO to an existing comment. |
| add_comment_reply_toolC | Append a flat reply under an existing timeline comment (threaded discussion). |
| set_comment_action_done_toolB | Check or uncheck a comment action item; records completed_by / completed_at. Agents should pass by="agent" (or a stable agent label) when finishing work. |
| delete_comment_toolC | Delete a timeline review comment (undoable via history). |
| publish_review_version_toolA | Freeze the current premix/mastered mix as a review version under artifacts/review/. Comments created while a version is active stamp review_version_id. prefer: "premix" (default) or "mastered". Refuses a project with no mix yet (code no_mix: Refresh first), a premix that's stale vs the project (Refresh first) or a master not mastered from the current premix (export first). |
| list_review_versions_toolC | List frozen review mix versions (includes active flag). |
| set_active_review_version_toolC | Set or clear review.active_version_id (pass null/omit to clear). |
| pipeline_runA | Run the production pipeline. Optional skip_steps (step names) / config (object) override yaml. When use_working_set is true (default), also reads/writes the GUI session
working set so agents and Sharecut Studio share the same visible config.
Omit |
| pipeline_get_config_toolB | Return effective pipeline config, step metadata, and param schema (same as GUI).
|
| pipeline_set_config_toolC | Update the shared GUI/agent pipeline working set (visible params). |
| pipeline_analyze_toolC | Heuristic Analyze: propose pipeline param patches from audio diagnostics. |
| set_envelopeA | Set the volume automation envelope for a track from Submits a |
| render_previewC | Render a preview mix and return its status and path. |
| render_finalC | Render the final mastered export and return its path. |
| export_audio_toolB | Encode mastered audio to export/ using pipeline.yaml formats, or All or nothing: files replace |
| bounce_audio_toolA | Bounce selected (or all) stems to export/bounces/ without mastering. Times are timeline seconds. |
| history_undoA | Undo the last project mutation (timeline, transcript, or settings). Pass expected_head_id (history_status_tool's head_id) to undo only the change you looked at: if another edit landed since, the call refuses with error_code history_stale and nothing changes. |
| history_redoB | Redo the last undone project mutation. expected_head_id guards it like history_undo (error_code history_stale). |
| history_listC | List the project's history entries (index, label, mutation type). |
| history_status_toolB | Report history cursor, total, undo/redo availability, and current label. |
| history_goto_toolC | Jump the project state to a history index. |
| history_diff_toolC | Diff two history indices, showing what changed between them. |
| history_recordB | Record a named history checkpoint for the current project state. |
| play_audio_toolC | Extract and optionally play audio (processed:, track:, premix, export). |
| play_transcript_query_toolC | Search transcript for query and play that span (NL: play where they talk about X). |
| audition_context_toolA | Caption each dialogue track in a timeline window + clip-skew / render freshness.
|
| play_compose_toolB | Mix selected tracks for a timeline window and optionally play (no project mutation).
|
| play_ab_toolA | Extract the same range at two history indices, then play A→gap→B once. Prefer this over history_goto → play → goto → play for before/after probes.
Leaves the history cursor on |
| play_ab_wavs_toolB | Play two existing WAVs back-to-back with a short silence gap (one concat). |
| play_pending_preview_toolB | Hear Current vs Suggested vs A/B full mix for a pending remove or mute. Suggested renders the window after approving the edit on a snapshot: the same ripple, paced pad, fades and mute that approving ships. Splits have no Suggested side. Does not mutate the project. |
| record_state_toolB | Read the live recording-room snapshot (roster, take clock, consent). |
| record_start_toolC | Host Start for the current record room (blocked until guests consent). |
| record_pause_toolC | Host Pause for the current take. |
| record_resume_toolC | Host Resume for a paused take. |
| record_stop_toolD | Host Stop for the current take. |
| record_marker_toolB | Host Marker: stamp the open take now; record_land_tool lands it as a comment. |
| record_land_toolC | Land saved full-quality recordings and live comments on the timeline. |
| record_discard_take_toolB | Delete a terminal take (refused while its full-quality recordings are still saving to the project). |
| get_session_state_toolB | Read shared DAW/agent session state (playhead, region, mode, selection). |
| get_session_presence_toolB | Who is in the Sharecut Studio session: display names, cursor, selection, viewport, transport, follow relationships.
|
| seek_session_toolC | Seek the open DAW playhead (no OS audio). Optional selection highlights a modifier. |
| set_session_selection_toolC | Highlight a DAW modifier: selection {kind, id?, track_id?, time?}; null or omit to clear. |
| set_session_playing_toolB | Start or pause DAW browser transport (no OS audio). |
| stop_session_toolB | Pause DAW transport in place and clear the highlight region (GUI Stop / K also returns to the play start; this tool does not). |
| set_session_mode_toolC | Set DAW audition mode: mix | fx | raw. |
| set_session_region_toolC | Highlight a timeline region in the DAW; optionally start browser playback. |
| ingest_import_folder_toolC | Scan a recorder export folder and write ingest.yaml (audio-only, no copy). |
| ingest_suggest_alignment_toolC | Propose session_start offsets for multitrack ingest before consolidate. |
| ingest_verify_alignment_toolC | Audit consolidated dialogue tracks with VAD overlap on a timeline window. |
| play_compare_toolC | Play each dialogue track then premix for the same timeline range. |
| speaker_doctor_toolB | Check the speaker-identification backend is configured and working. |
| speaker_enroll_toolC | Enroll voiceprints from a segment, a whole track, or every media-backed track. |
| speaker_profiles_toolB | List enrolled speaker voiceprint profiles. |
| speaker_score_toolC | Score how strongly a time window matches the expected speaker. |
| speaker_compare_window_toolC | Compare speaker identity across tracks in a time window. |
| speaker_compare_pair_toolC | Compare the voices in two time windows to check they are the same speaker. |
| speaker_label_toolC | Assign the window's speaker label on a track (dry_run by default). |
| speaker_set_count_toolC | Set the expected number of speakers in the project. |
| speaker_attribute_toolC | Attribute speaker labels across the project from voiceprints (dry_run by default). |
| speaker_gate_track_toolB | Suppress transcript words from other speakers on home tracks; use apply_transcript_gate_tool to mute audio. |
| speaker_split_toolA | Split a one-track recording of several speakers into a lane per speaker (dry_run by default). Needs the speaker count (or one set with speaker_set_count_tool). |
| speaker_move_lane_span_toolB | Move a source span from one speaker-split lane to a sibling lane (one undo step). TOOL_TIMEBASE: source. |
| open_gui_toolA | Start the read-only DAW web viewer (background) and return its URL. Idempotent: if a healthy viewer is already listening on host:port, reuses it
and optionally opens the browser to this project. Requires the |
| create_review_share_toolB | Create a review share URL (Anyone with the link by default). role: review-link role, as in Google Docs. viewer views and plays; commenter also comments and suggests edits that wait for an editor or the host; editor also edits directly and approves or rejects suggestions. with_mcp: also mint an MCP URL ({base}/mcp/{token}/mcp) with the role's powers. general_access: link (default) or restricted (ACL + sign-in). require_sign_in: force login even on link shares. invite_emails: comma-separated emails to add to the ACL. |
| create_record_room_toolC | Mint a recording room: guest + producer /rec/ links (design: docs/recording-session.md). |
| revoke_record_room_toolC | End a recording room: revoke guest and producer tokens. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 183 tools
With 183 tools, there are many overlapping clusters: multiple cut/ripple tools (cut_time_range_tool, cut_text_match_tool, ripple_delete_tool, delete_clips_tool), speaker tools (speaker_enroll_tool, speaker_label_tool, speaker_split_tool), and comment tools (add_comment_tool, add_comment_reply_tool, add_comment_action_tool). The descriptions do not sufficiently distinguish when to use which, causing high risk of misselection.
Most tools use snake_case, but some include a _tool suffix while others do not (e.g., apply_edits, transcribe_track, get_transcript, propose_edits, episode_create, track_add). Verb styles vary between verb_noun and noun_verb, and the suffix is applied inconsistently across 183 names.
183 tools is far beyond the typical 3-15 range and creates an unwieldy surface. Even for a complex domain like podcast production, this many tools suggests poor scoping and will overwhelm agents.
The surface covers an enormous range: recording, editing, transcription, speaker ID, effects, rendering, export, comments, review, pipeline, history, etc. Most CRUD and lifecycle operations appear present, though there may be minor gaps (e.g., no list_episodes or delete_project).