---
title: "An example"
description: "Release notes to a published episode, step by step."
canonical: "https://poddub.com/docs/agents/example"
last-updated: "2026-10-29"
---

# An example

Release notes to a published episode, step by step.

You work in Claude Code in a product's repository, with poddub connected through your own key, capped at member. You ask: "turn the 2.4 release notes into a ten-minute dialogue for the Engineering team". This is what happens.

## 1. Find the team and the allowance

The agent calls [`list_teams`](/docs/agents/tools/list_teams) and finds Engineering among your teams. It calls [`get_allowance`](/docs/agents/tools/get_allowance) and tells you how many minutes and script generations are left this period.

## 2. Paste the release notes

It calls [`create_text_source`](/docs/agents/tools/create_text_source) with the Engineering team, a title such as "Release 2.4", the language and the section of the changelog. The source appears in the team's inbox in the app, as if you had pasted it. If the inbox is full for the plan, the agent is told so, with the cap and the count, and stops.

## 3. Start the episode

It calls [`create_episode`](/docs/agents/tools/create_episode) with the source, ten minutes and the dialogue format. poddub answers at once: the episode is being written.

> **If you never accepted the provider list**
>
> The call is refused with `consent_required`. poddub works with a list of providers, and you accept it once, in the app. The agent cannot accept it for you: it tells you, you open the app and accept, and it tries again.

## 4. Wait for the script

The agent calls [`get_episode`](/docs/agents/tools/get_episode) every 20 to 30 seconds until the episode is in review. Nothing is held open while it waits.

## 5. Read and shape the script

It calls [`get_script`](/docs/agents/tools/get_script) and checks names, versions and flags against the repository. Then:

* [`edit_turn`](/docs/agents/tools/edit_turn) fixes a wrong flag name in one line, by hand. The first line of every episode, the disclosure, cannot be changed, so the agent edits the lines after it.
* [`regenerate_turn`](/docs/agents/tools/regenerate_turn) has poddub write a line that rambles again. That spends one of the episode's rewrites.

Every change names the version of the script it read. If someone else changed the script in the meantime, the agent is told the latest version and reads it again.

## 6. You approve

The script is ready, and the agent says so. You open the episode in the app, read the script with the agent's changes, and approve it. Approving spends the organization's minutes and starts the audio. If an owner has allowed agents to approve in your organization, the agent can approve instead; otherwise this step is always yours.

## 7. Wait for the audio

The agent calls [`get_episode`](/docs/agents/tools/get_episode) again until the episode is ready. If making the audio failed, it can call [`retry_episode`](/docs/agents/tools/retry_episode).

## 8. Publish to the team

It calls [`publish_episode`](/docs/agents/tools/publish_episode) with no audience, which publishes to the team. The episode reaches everyone in Engineering, in the app and in their private feeds.

> **Publishing to the whole organization**
>
> With a key capped at member, asking for the whole organization is refused with `episode_visibility_forbidden`. The agent publishes to the team and tells you that an owner or admin can widen the audience in the app.

## 9. Share a link

A last [`get_episode`](/docs/agents/tools/get_episode) carries a link to listen. The agent can post it in the pull request or the chat, saying it stops working after a while. The team hears the episode in their feeds anyway.

The public show is never touched: putting an episode there is a person's step, in the app.

The same job without an agent, from the paste to the published episode, is [release notes as a podcast episode](/use-cases/release-notes).
