Agent access

Let your AI assistant run your podcasts

Podcasto speaks Model Context Protocol (MCP), so Claude, ChatGPT, Cursor, Codex or any MCP-capable client can browse, create and manage your podcasts — acting as you, inside your own plan limits and credit balance.

An AI assistant connected through an MCP gateway, guarded by a key and a shield, to a set of podcasts and a playing episode

Two doors in

Podcasto runs two MCP servers. One needs nothing at all; the other acts as you.

No account, no token

Discover public podcasts

Search the public directory, list published episodes and play them — exactly what an anonymous visitor sees on the website. Read-only and free.

https://app.podcasto.app/api/mcp/public

Public endpoint, Claude Code

claude mcp add --transport http podcasto-public https://app.podcasto.app/api/mcp/public
Your account

Work on your own podcasts

List, create and manage your podcasts, push content into an inbox and generate episodes — within your plan and your credit balance. Needs a personal access token or an OAuth connection.

https://app.podcasto.app/api/mcp

How it works

Your assistant sends a bearer token or OAuth credential to the Podcasto MCP server, which checks the token and its scopes, then acts on your podcasts as you, inside your plan.

Your assistant

Claude, ChatGPT, Cursor, Codex…

Podcasto MCP server

checks the token, then the scope

Your podcasts

episodes, inbox, credits

A bearer token identifies your agent

A personal access token or an OAuth-issued one, sent as an Authorization: Bearer header on every call.

Every call is scope-checked

The token's scopes decide which tools it can call. A call outside them is refused, naming the missing scope.

It runs as you — nothing more

Same entitlement, ownership and Telegram validation as the web app. An agent can't reach another user's data.

Your plan and credits still apply

An agent can't unlock a feature your plan disallows, and generating an episode still spends your credits.

Connecting from each client

ChatGPT and Claude connect with your Podcasto login. For token-based clients, copy the command and replace the placeholder with your personal token.

Connect with screenshots

Use your Podcasto login. No personal access token is needed for these connections.

Personal access token, sent as a bearer header.

Claude Code connection command

claude mcp add --transport http podcasto https://app.podcasto.app/api/mcp --header "Authorization: Bearer pk_..."

Security model, in plain words

Tokens are hashed at rest

Podcasto never stores your personal access token in a readable form — only a one-way hash and a short prefix to recognize it in your token list.

Revocation is immediate

Revoking a token on your Agent Access page takes effect on the next call — there's no caching window where a revoked token still works.

Admin access is PAT-only, re-checked every call

The admin scope requires being an admin both when a token is minted and when each admin tool is called. OAuth connections never carry it, regardless of role.

No destructive or payment actions

Nothing over MCP can delete an account, podcast or episode, or charge a card or move money. Generation spends the same credit balance you already manage.

FAQ

Full reference: scopes and tools

Everything an agent can ask for, and which scope unlocks it.

Scopes

A token can only call the tools its scopes cover. Grant the fewest scopes that get the job done.

ScopeGrants
podcasts:readRead podcasts
List your podcasts and read their settings.
podcasts:writeManage podcasts
Create, update, pause and resume your podcasts.
sources:pushAdd content to an inbox
Push text, notes and links into the manual inbox of your own podcasts, for a later episode to be written from.
episodes:readRead episodes
List episodes and read their status, audio URL and timeline.
episodes:generateGenerate episodes
Start episode generation. This spends your credits.
episodes:writeEdit episode scripts
Edit an episode's script and discard a script draft you no longer want (refunds credits, minus the draft fee).
credits:readRead credits
Read your credit balance and plan entitlements.
adminAdminister the platform
Operate admin tooling (health, users, failed episodes, runtime settings). Only available to admins, and re-checked on every call.

The admin scope is available only to personal access tokens, only while the holder is actually an admin — losing admin access invalidates any old admin token immediately. OAuth-issued access (Claude.ai, ChatGPT, Cursor connectors) never carries it, regardless of the account's role.

Tools

Every tool answers with a single JSON result. `tools/list` names only the tools the token's scopes allow; `get_me` lists the hidden ones the account could be granted, with the scope each needs. Every tool still checks its scope when called.

Public tools — no account needed

No token

Served from a separate endpoint, https://app.podcasto.app/api/mcp/public, with no sign-in at all. It sees only what the website already shows: public podcasts and published episodes, plus a playable audio link served by Podcasto itself — the same one the episode page uses. The app re-checks the episode on each request, though a copy already cached at the CDN can keep playing for a while after it stops being public.

ToolPurpose
search_podcastsno token
Search the public podcast directory by text and language.
list_public_episodesno token
List published episodes of public podcasts, newest first, with a paging cursor.
get_public_episodeno token
Read one published episode and get a playable audio URL — no account needed.
play_episodeno token
Same as get_public_episode, plus an inline player in clients that render MCP Apps.

User tools

ToolPurpose
get_meany valid token
Identity, plan, entitlements and (with credits:read) credit balance.
list_my_podcastspodcasts:read
List your podcasts and their basic status.
get_podcastpodcasts:read
Read one podcast, its sources, its public-feed status (URL, ready, missing[]) and every setting update_podcast can change.
preview_telegram_channelpodcasts:write
Check a Telegram channel is reachable before creating a podcast from it.
create_podcastpodcasts:write
Create a podcast from Telegram, RSS and/or inbox sources (counts against the plan's podcast limit; no credit charge).
update_podcastpodcasts:write
Change a podcast you own: title, description, language, schedule, duration, format, style, intro/outro, voices and the public-feed metadata incl. the feed switch (the plan may clamp or drop a field).
set_podcast_artworkpodcasts:write
Fetch an HTTPS image as the artwork: feed JPEG (≥1400 px) plus web cover.
generate_podcast_artworkpodcasts:write
Generate artwork from the title and description (daily cap per podcast, no credit charge).
add_podcast_sourcepodcasts:write
Add a Telegram channel, RSS feed or inbox to a podcast you own.
update_podcast_sourcepodcasts:write
Edit one existing source in place: its name, whether it collects, or its channel/feed.
remove_podcast_sourcepodcasts:write
Remove one content source from a podcast you own (never its last one).
pause_podcastpodcasts:write
Stop scheduled generation for a podcast.
resume_podcastpodcasts:write
Resume scheduled generation and clear the auto-pause failure streak.
delete_podcastpodcasts:write
Permanently delete a podcast you own with all its episodes (irreversible, no refund; needs confirm:true).
list_episodesepisodes:read
List a podcast’s episodes, newest first.
get_episodeepisodes:read
Read one episode’s status, audio URL (once published) and failure details.
generate_episodeepisodes:generate
Start generation for a podcast. Charges credits; requires confirm: true. Optional draft mode stops before audio for review.
get_episode_scriptepisodes:read
Read an episode's script text and the etag needed to edit or approve it.
update_episode_scriptepisodes:write
Replace an episode's script text, CASed on a required etag.
approve_episode_draftepisodes:generate
Accept a script draft and start synthesizing its audio. No extra charge.
discard_episode_draftepisodes:write
Close a script draft and refund its charge minus the draft fee. Irreversible.
update_episodeepisodes:write
Edit an episode's title and/or description. No charge.
regenerate_episode_audioepisodes:generate
Re-synthesize an episode’s audio from its saved script. Charges credits; requires confirm: true.
add_content_itemssources:push
Push text, notes or links into a podcast's manual inbox for its next episode.
list_inbox_itemssources:push
Read a podcast inbox — waiting, used or withdrawn items, and who submitted each.
update_inbox_itemsources:push
Correct the text, title or link of an inbox item that is still waiting.
discard_inbox_itemsources:push
Withdraw a waiting inbox item so the next episode skips it. Undone by restore.
restore_inbox_itemsources:push
Put a withdrawn or already-used inbox item back in the waiting queue.
get_credit_balancecredits:read
Read available, used and total credits.
get_credit_historycredits:read
List the credit ledger, newest first: charges, refunds, purchases, grants.

Admin tools

Admin-only

Require the admin scope and an admin account at call time. Only reachable via a personal access token — never via OAuth.

ToolPurpose
admin_system_healthadmin
Fast health subset: cron freshness, episode-outcome SLI, refund-queue depth.
admin_list_usersadmin
Newest-first user list with effective plan, role, credits and activity; truncated at a safety cap.
admin_list_podcastsadmin
List every podcast on the platform (basic fields, paginated).
admin_list_failed_episodesadmin
List failed episodes with failure class and timing.
admin_get_episode_logsadmin
Read processing log lines for one episode.
admin_generate_episodeadmin
Generate an episode without charging the owner’s credits. Requires confirm: true.
admin_regenerate_audioadmin
Re-run synthesis for an existing episode. Requires confirm: true.
admin_get_runtime_settingsadmin
Read managed runtime settings (value, source, bounds); secrets omitted.
admin_set_runtime_settingadmin
Update one managed runtime setting. Requires confirm: true; audit-logged.
admin_cost_summaryadmin
Per-episode production cost vs credits charged for a given month.

Ready to connect an agent?

Create a personal access token, or read the full reference above for the whole tool surface.