particle_podcast_list_episodes lists them with podcast_slug and transcript_status: "requestable", and particle_podcast_get_episode marks one requestable. Until it is transcribed, it has no transcript, speakers, entities, segments, clips or mentions.
The tool returns at once with the request’s state:
queued: waiting its turn.admitted: being transcribed.transcribed: the episode tools now serve its transcript.failed: it will not be transcribed.failure_reasonsays why, and the charge is refunded.
particle_podcast_get_transcription_request, which is free. Never call this tool again to poll. Once transcribed, the episode keeps its ID, and particle_podcast_get_episode, particle_podcast_find_mentions and particle_podcast_search_transcripts serve it.
This is the MCP form of POST /v1/podcasts/transcription/requests. It bills exactly as that endpoint does.
Billing
- The request that queues the episode is charged in USD at your plan’s transcription price. It is never drawn from your included requests, so it is charged even with requests left and still works once they run out. It needs overage billing turned on. Without it the tool answers
overage_required(orbilling_info_requiredwithout a payment method on file), and nothing is charged. - Every other outcome is billed as an ordinary lookup. That covers an episode your organization already requested (the existing request comes back), one another organization’s request already queued (you get your own request, tracking it), and one we already hold (no request is created, and
statesays where its transcript stands). - A request that fails, because the audio is gone or transcription timed out, is refunded.
pp_ API key, or an OAuth connection with the write scope. A keyless x402 payment cannot buy it, and the plugin connection does not offer it.
Inputs
Output
A## Transcription request block with the episode and podcast, **Episode slug:**, **Request ID:** (absent for an episode we already hold), **State:**, **Transcript:**, **Billed as:** (transcription or lookup), the request’s timestamps, and the next step to take. With output_format: "json" the same fields come back as JSON: request_id, episode_id, episode_slug, state, transcript_status, failure_reason, created_at, admitted_at, completed_at, refunded_at and billed.