MCP tool reference
The Jellypod MCP tools, common resource arguments, and migration from the previous tool names.
Connect to https://mcp.jellypod.com/mcp and call tools/list to read the current
input and output schemas. The tool set changes in place on this endpoint. Refresh
cached tool definitions before updating an existing integration. REST endpoint
names and request bodies remain unchanged.
Tools
| Tool | Purpose |
|---|---|
get_creation_options | Discover product settings or available voices. |
list_resources | Find podcasts, episodes, hosts, Sources, Videos, Shorts, or Voiceovers. |
get_resource | Retrieve a resource, including available progress, delivery, and transcript information. |
generate_episode | Create a podcast episode from a brief or supplied script. |
generate_video | Create a Video from a prompt and optional research Sources. |
generate_short | Create a Short from a prompt and optional research Sources. |
generate_voiceover | Narrate prepared document or image Sources. |
retry_generation | Start another authorized generation attempt for a failed Video, Short, or Voiceover. |
create_source | Add a URL, YouTube video, or text Source. |
request_source_upload | Request a direct file upload or an interactive picker with a Studio fallback. |
complete_source_upload | Complete an uploaded Source and start processing. |
save_podcast | Create or update a podcast. |
save_host | Create or update a narrator Host. |
update_episode | Update episode details. |
set_episode_publication | Publish, schedule, or unpublish an episode. |
get_analytics | Retrieve podcast or episode analytics. |
generate_cover_art | Generate cover art for supported podcast content. |
delete_resource | Delete a supported resource, preserving confirmation checks for live content. |
Grouped tools use explicit kind and id arguments. The resource kinds are
podcast, episode, host, source, video, short, and voiceover; each
tool's schema restricts which kinds it supports. Do not infer that a kind
supported by a read tool is also supported by a destructive tool.
list_resources takes kind, with optional cursor, limit, and podcast_id
for episode lists. Episode filters use episode_status; Source filters use
source_status and source_type. Results return rows, hasMore, and
nextCursor; pass nextCursor as cursor for the next page.
get_resource returns an envelope with kind, id, and
resource, plus progress, delivery, transcript, or studio_url when
applicable. Keep resource and progress fields in their returned shape rather
than assuming all products share one status enum. For polling, read
progress.poll_after_seconds. Product delivery uses url; episode delivery
uses audio_url and video_url.
For episode transcripts, set transcript_format to json, srt, or vtt.
transcript_limit bounds words for JSON or characters for captions; continue
with transcript.next_offset as transcript_offset until it is null. Omit
transcript fields during ordinary progress polling.
delete_resource supports only podcasts, episodes, hosts, and Sources. Use
force: true for published or scheduled content only after explicit user
confirmation. Podcast deletion cascades to its episodes. retry_generation
supports only Videos, Shorts, and Voiceovers.
save_podcast and save_host use mode: "create" or "update", with id
required for an update. Their other input fields are at the top level.
set_episode_publication uses id and mode: "publish", "schedule", or
"unpublish"; scheduling also requires scheduled_time.
Use generate_episode with mode: "brief" for generated content or
mode: "script" for supplied narration. Read the mode-specific schema before
calling it. For complete sequences, see the agent guide.
request_source_upload uses mode: "direct" by default, requiring file name,
MIME type, and size. mode: "picker" needs no file metadata and returns a
handoff with studio_url; its source and upload fields are absent until a
file is uploaded. Preparation is automatic in both modes. Pass the completed
upload’s Source ID to generation; it waits for Source processing as needed.
Source reads and lists omit metadata by default. To inspect it, call
get_resource with kind: "source" and include_source_metadata: true.
source_metadata contains a JSON text chunk, total characters, and
next_offset. Pass that offset as metadata_offset and concatenate the chunks
before parsing JSON. metadata_limit defaults to 1,000 characters (maximum
4,000). Leave metadata out when polling Source readiness.
Both podcast and episode analytics include analytics_enabled. When false,
zero counters mean tracking is disabled, not measured inactivity. complete
indicates whether enabled tracking data is complete.
A script request rejected with generation_preflight_rejected has not started
generation. Resolve the budget or rate limit, then submit a new idempotency key.
Resending the old key repeats that rejection. For uncertain acceptance, retain
the original key and inspect the resource; do not submit a new one.
Migration from the previous tools
Replace each previous tool with the call below, and validate its arguments against the newly discovered schema. Existing saved resource IDs remain usable. Old tool names are not aliases on the MCP endpoint.
| Previous tool | Current call |
|---|---|
complete_source_upload | complete_source_upload; refresh its schema |
create_host | save_host with mode: "create" |
create_podcast | save_podcast with mode: "create" |
create_source | create_source; refresh its schema |
delete_episode | delete_resource with kind: "episode", id |
delete_host | delete_resource with kind: "host", id |
delete_podcast | delete_resource with kind: "podcast", id |
delete_source | delete_resource with kind: "source", id |
generate_cover_art | generate_cover_art; refresh its schema |
generate_episode | generate_episode with mode: "brief" |
generate_short | generate_short; refresh its schema |
generate_video | generate_video; refresh its schema |
generate_voiceover | generate_voiceover; refresh its schema |
get_episode | get_resource with kind: "episode", id |
get_episode_analytics | get_analytics with kind: "episode", id |
get_episode_transcript | get_resource with kind: "episode", id, and transcript_format (json, srt, or vtt) |
get_host | get_resource with kind: "host", id |
get_podcast | get_resource with kind: "podcast", id |
get_podcast_analytics | get_analytics with kind: "podcast", id |
get_short | get_resource with kind: "short", id |
get_short_download | get_resource with kind: "short", id |
get_short_options | get_creation_options with product: "short", section: "settings" |
get_short_status | get_resource with kind: "short", id |
get_video | get_resource with kind: "video", id |
get_video_download | get_resource with kind: "video", id |
get_video_options | get_creation_options with product: "video", section: "settings" |
get_video_status | get_resource with kind: "video", id |
get_voiceover | get_resource with kind: "voiceover", id |
get_voiceover_download | get_resource with kind: "voiceover", id |
get_voiceover_options | get_creation_options with product: "voiceover", section: "settings" |
get_voiceover_status | get_resource with kind: "voiceover", id |
import_script | generate_episode with mode: "script" |
list_episodes | list_resources with kind: "episode" |
list_hosts | list_resources with kind: "host" |
list_podcasts | list_resources with kind: "podcast" |
list_shorts | list_resources with kind: "short" |
list_sources | list_resources with kind: "source" |
list_videos | list_resources with kind: "video" |
list_voiceovers | list_resources with kind: "voiceover" |
list_voices | get_creation_options with the intended product and section: "voices" |
publish_episode | set_episode_publication with mode: "publish", id; use mode: "schedule" and scheduled_time for scheduling |
request_source_upload | request_source_upload; refresh its schema |
retry_short | retry_generation with kind: "short", id, and a new idempotency_key |
retry_video | retry_generation with kind: "video", id, and a new idempotency_key |
retry_voiceover | retry_generation with kind: "voiceover", id, and a new idempotency_key |
unpublish_episode | set_episode_publication with mode: "unpublish", id |
update_episode | update_episode; refresh its schema |
update_host | save_host with mode: "update", id |
update_podcast | save_podcast with mode: "update", id |
Was this page helpful?