MCP App Store
by KeenEthics

Overview

Tunio is a platform for running radio stations for businesses and creators: background music for venues, branded in-store radio and online stations. The Tunio plugin lets ChatGPT manage your stations through your own Tunio account. Ask in plain words and ChatGPT works with your account: - See your stations, what is playing now and what aired recently. - Build and change the content and music schedules: time slots, schedule profiles, instant playlists and music overrides. - Create and edit playlists, and organise jingles into bundles. - Create voiced announcements and jingles, and schedule them on air. - Get an air report for any period: plays by kind, top tracks and jingles, repeats, genres and gaps in the broadcast. You sign in with your Tunio account and approve access on the Tunio consent screen. ChatGPT acts as you and sees only your account. Tools that change data are marked as such, so ChatGPT asks before it runs them. Tunio is operated by Orange Solutions LLC (Yerevan, Armenia); see https://tunio.ai/en/terms-of-service.

Tools

add_jingle_to_bundle

ChatGPT
Add a jingle of the caller's library (GET /v1/jingles, or the jingle_id of a completed generation request) to a bundle. Jingles longer than 60 seconds are refused. Tunio public API: POST /v1/jingle-bundles/{bundle_id}/items

apply_schedule_profile_to_stream

ChatGPT
Replaces the selected schedules on the target stream with the profile's. The chosen layers are fully replaced, not merged. Slots whose playlist or content no longer exists are skipped and reported instead of failing the request. Tunio public API: POST /v1/schedule-profiles/{profile_id}/apply

clear_music_override

ChatGPT
Removes the stream's customer-driven override; the station falls back to its base music schedule. Tunio public API: DELETE /v1/stream/{stream_id}/override

copy_public_schedule_profile_into_library

ChatGPT
Imports a profile from the shared catalog as a private copy owned by the current user. Returns the copied profile; re-importing the same source returns the existing copy. Tunio public API: POST /v1/schedule-profiles-public/copy/{profile_id}

create_announcement

ChatGPT
Create a voiced announcement: Tunio renders the message with the chosen TTS voice (and the background, if any) in the background. The response has state voice_pending; poll GET /v1/announcements/{announcement_id}/status until the state is completed, then audio_url links to the finished audio on the CDN. Schedule it on a stream with POST /v1/announcements/schedules. Tunio public API: POST /v1/announcements

create_announcement_schedule

ChatGPT
Create a new schedule for an announcement Tunio public API: POST /v1/announcements/schedules

create_content_schedule_time_slot

ChatGPT
Create a single content schedule entry with conflict checking and force option Tunio public API: POST /v1/stream-schedule/content/slot

create_jingle_bundle

ChatGPT
Create an empty jingle bundle in the caller's library. Tunio public API: POST /v1/jingle-bundles

create_jingle_generation_request

ChatGPT
Queue a jingle for the generator the control panel uses: a voice over a generated music bed (full), music only (instrumental) or voice only (voice). Poll GET /v1/jingles/requests/{request_id} until the state is completed; the jingle is then a file of the caller's library (jingle_id, also listed by GET /v1/jingles) that can be added to bundles. Credits are charged once, only when generation succeeds (ledger type jingle_generation); a failed request costs nothing. Up to 20 requests may be pending or processing per account. Rate limited to 60 calls per minute per account across the jingle request endpoints. Tunio public API: POST /v1/jingles/requests

create_music_schedule_slot

ChatGPT
Adds a playlist to the stream music schedule Tunio public API: POST /v1/stream-music-schedule/slot

create_playlist

ChatGPT
Creates a new playlist (dynamic or static) Tunio public API: POST /v1/playlists

create_stream

ChatGPT
Creates a new stream for the API key owner Tunio public API: POST /v1/streams

create_tts_request

ChatGPT
Queue text for speech synthesis with a catalog voice or one of the caller's cloned voices. Poll GET /v1/tts/requests/{request_id} until the state is completed, then download audio_url. Credits are charged only when synthesis succeeds; up to 20 requests may be pending or processing per account. Rate limited to 60 calls per minute per account across the TTS request endpoints. Tunio public API: POST /v1/tts/requests

delete_announcement

ChatGPT
Delete an announcement by UUID Tunio public API: DELETE /v1/announcements/{announcement_id}

delete_announcement_schedule

ChatGPT
Delete an existing announcement schedule Tunio public API: DELETE /v1/announcements/schedules/{schedule_id}

delete_content_schedule_time_slot

ChatGPT
Delete a single content schedule entry by UUID Tunio public API: DELETE /v1/stream-schedule/content/slot/{slot_id}

delete_jingle_bundle

ChatGPT
Delete a jingle bundle, as the control panel does: its jingles are taken out of every bundle and music slot, and content schedule slots playing the bundle or its jingles are removed. The jingle files stay in the library. Tunio public API: DELETE /v1/jingle-bundles/{bundle_id}

delete_jingle_generation_request

ChatGPT
Delete a jingle request. A completed request's jingle is deleted with it, from the library and from every bundle. A request that is processing cannot be deleted until it finishes. Tunio public API: DELETE /v1/jingles/requests/{request_id}

delete_playlist

ChatGPT
Deletes a playlist by UUID Tunio public API: DELETE /v1/playlists/{playlist_id}

delete_podcast_episode

ChatGPT
Mark a podcast episode for deletion by UUID Tunio public API: DELETE /v1/podcast/{podcast_id}/episode/{episode_id}

delete_restream

ChatGPT
Stops the restream if it runs and deletes it. Tunio public API: DELETE /v1/stream/{stream_id}/restreams/{restream_id}

delete_schedule_profile

ChatGPT
Deletes a profile of the caller's library, including automatic snapshots. Streams keep their schedules. Tunio public API: DELETE /v1/schedule-profiles/{profile_id}

delete_tts_request

ChatGPT
Delete a TTS request and its audio file. A request deleted while processing is not charged. Tunio public API: DELETE /v1/tts/requests/{request_id}

get_announcement

ChatGPT
Get a single announcement by UUID Tunio public API: GET /v1/announcements/{announcement_id}

get_announcement_schedule

ChatGPT
Get a single announcement schedule by UUID Tunio public API: GET /v1/announcements/schedules/{schedule_id}

get_announcement_status

ChatGPT
Get the current state of an announcement. Once the voice is generated, audio_url links to the audio on the CDN: the finished mix, or the voice alone while there is no mix yet. Tunio public API: GET /v1/announcements/{announcement_id}/status

get_content_schedule_by_stream_uuid

ChatGPT
Get content schedule for specified radio stream Tunio public API: GET /v1/stream-schedule/content/{stream_id}

get_genres

ChatGPT
Returns all available genres Tunio public API: GET /v1/genres

get_jingle_bundle

ChatGPT
Get a jingle bundle with its jingles. Tunio public API: GET /v1/jingle-bundles/{bundle_id}

get_jingle_generation_request

ChatGPT
Get the state of a jingle request. Once completed, jingle_id and audio_url point at the generated jingle in the caller's library; it stays there until deleted. Tunio public API: GET /v1/jingles/requests/{request_id}

get_music_override

ChatGPT
Returns the override currently steering the stream (a manual override wins over automated ones), or null when none is active. Tunio public API: GET /v1/stream/{stream_id}/override

get_music_schedule

ChatGPT
Returns every music slot of the stream, ordered by day and start time. Times are in the stream's timezone. Tunio public API: GET /v1/stream-music-schedule/{stream_id}

get_playlist

ChatGPT
Returns a playlist by UUID Tunio public API: GET /v1/playlists/{playlist_id}

get_playlists

ChatGPT
Returns playlists for the current user (supports query/title search) Tunio public API: GET /v1/playlists

get_podcast_episodes

ChatGPT
Get list of episodes for a specific podcast Tunio public API: GET /v1/podcast/{podcast_id}/episodes

get_recognition_request_status

ChatGPT
Returns status for a recognition request by UUID Tunio public API: GET /v1/music-recognition/{request_id}/status

get_saved_schedule_profiles

ChatGPT
Returns every saved schedule profile available to the current user. A profile holds a music schedule, a content schedule, or both, and can be applied to any of the user's streams. Tunio public API: GET /v1/schedule-profiles

get_stream_air_report

ChatGPT
Summarises what aired on a stream over a period (default: the last 24 hours, at most 31 days). Use it to answer questions such as "how often does each jingle play", "are tracks repeating", "were there pauses on air" or "what share of the air is music". The report has: totals (plays, aired seconds, unique tracks, AI and uploaded music, skips); by_kind (music, jingle, announcement, weather, news, time, podcast, story...); timeline in the stream's time zone, hourly for up to 3 days and daily beyond; top_tracks and top_jingles with plays and the shortest / mean interval between repeats in seconds; repeats (music tracks played more than once, and how many came back within an hour); genres; transitions (crossfade, beatmatch, cut, skip...); gaps. A gap is time between the expected end of an item (its start plus its length) and the start of the next one, at least gap_seconds long: dead air, a stopped station, or a missing schedule. not_recorded lists what never reaches the history: overlay jingles (mixed on top of music) and silence filler. Tunio public API: GET /v1/stream/{stream_id}/air-report

get_stream_rotation_history

ChatGPT
Returns paginated rotation history for the provided stream Tunio public API: GET /v1/stream/{stream_id}/history

get_streams

ChatGPT
Returns user streams Tunio public API: GET /v1/streams

get_tts_models

ChatGPT
Get available TTS models for public use Tunio public API: GET /v1/tts/models

get_tts_request

ChatGPT
Get the state of a TTS request. audio_url is present only while the state is completed; the file is deleted and the state becomes expired 7 days after completion. Tunio public API: GET /v1/tts/requests/{request_id}

get_tuniospot_device_reports

ChatGPT
Get a paginated list of failover/restore reports submitted by the TunioSpot devices paired with a link, newest first. The link is addressed by its pin and must belong to the authenticated account. Each item carries the player's diagnostic payload expanded under extra with snake_case keys, for example extra.ping_ms and extra.audio_state. Tunio public API: GET /v1/spot-reports

get_user_context

ChatGPT
Returns user plan limits and accessible stations Tunio public API: GET /v1/user/context

list_announcement_backgrounds

ChatGPT
List the music beds an announcement can be mixed over. Pass background_id as background_uuid when creating or updating an announcement. With tts_duration, only backgrounds long enough for speech of that many seconds (plus the announcement padding) are returned. Tunio public API: GET /v1/announcements/backgrounds

list_announcement_schedules

ChatGPT
Get a list of announcement schedules for a specific announcement Tunio public API: GET /v1/announcements/list/{announcement}/schedules

list_announcements

ChatGPT
Get a paginated list of announcements with optional filters Tunio public API: GET /v1/announcements

list_jingle_bundles

ChatGPT
List the jingle bundles (jingle playlists) of the caller's library, newest first. bundle_id is the jingle_playlist_id the schedule and instant-playlist endpoints take. Tunio public API: GET /v1/jingle-bundles

list_jingle_generation_requests

ChatGPT
List the jingle requests of the caller's library, newest first, including the ones made in the control panel. Tunio public API: GET /v1/jingles/requests

list_library_jingles

ChatGPT
List the jingle files of the caller's library, newest first: uploaded in the control panel or generated with POST /v1/jingles/requests. Use jingle_id to add them to bundles. Tunio public API: GET /v1/jingles

list_public_schedule_profiles

ChatGPT
Returns every schedule profile published to the shared catalog. Copy one into your library with the copy endpoint, then apply it to a stream. Tunio public API: GET /v1/schedule-profiles-public

list_restream_backgrounds

ChatGPT
Looped video backgrounds a restream can show under the station's audio: the catalogue and the account's own uploads. resolutions are those a restream may send under the plan; pass uuid as background_id. Tunio public API: GET /v1/restream-backgrounds

list_station_restreams

ChatGPT
The station's restreams to external platforms (YouTube, Twitch, Kick, Facebook, VK, Rutube, Telegram, any RTMP server) with their live state: status is inactive, starting or running. A failing restream keeps status starting and carries error_code (target_rejected: the platform refuses the stream, usually a wrong or inactive stream key; target_unreachable: wrong server URL; audio_unavailable; video_unavailable; unknown), failed_attempts and last_running_at. The stream key is never returned, only key_hint (its last 4 characters). limits tells how many restreams the plan allows and the highest background resolution. Tunio public API: GET /v1/stream/{stream_id}/restreams

list_tts_requests

ChatGPT
Get the caller's TTS requests, newest first. Tunio public API: GET /v1/tts/requests

public_station_listing

ChatGPT
One page of the stations anyone may listen to - not private, online, with a cover - live broadcasts first and then by listeners. With stream_id, that one station if it is in the listing. Tunio public API: GET /v1/streams/public

remove_jingle_from_bundle

ChatGPT
Remove a jingle from a bundle; content schedule slots playing that bundle entry are removed too. The jingle file stays in the library. Tunio public API: DELETE /v1/jingle-bundles/{bundle_id}/items/{jingle_id}

rename_jingle_bundle

ChatGPT
Change the title of a jingle bundle. Tunio public API: PATCH /v1/jingle-bundles/{bundle_id}

replace_content_schedule

ChatGPT
Replaces every content slot of the stream with the given set, atomically. Every referenced item must belong to the caller's library, and no two slots of the set may start at the same time on the same day (the rule of the single-slot endpoint, applied to the whole set). With dry_run=true nothing is written: the response says whether the set is valid, lists the conflicts and the diff against the current schedule. With dry_run=false a conflicting set is refused with 409 and nothing is written. A valid set is applied after the stream's current schedule (music and content) is saved as a private schedule profile, returned as snapshot_profile_id; apply it with POST /v1/schedule-profiles/{profile_id}/apply to roll back. The last 20 automatic snapshots per stream are kept. Slots that do not change keep their slot_id. Tunio public API: PUT /v1/stream-schedule/content/{stream_id}

replace_music_schedule

ChatGPT
Replaces every music slot of the stream with the given set, atomically. Every playlist and jingle bundle must belong to the caller's library, and no two slots of the set may overlap on the same day (the rule of the single-slot endpoint, applied to the whole set). With dry_run=true nothing is written: the response says whether the set is valid, lists the conflicts and the diff against the current schedule. With dry_run=false a conflicting set is refused with 409 and nothing is written. A valid set is applied after the stream's current schedule (music and content) is saved as a private schedule profile, returned as snapshot_profile_id; apply it with POST /v1/schedule-profiles/{profile_id}/apply to roll back. The last 20 automatic snapshots per stream are kept. Slots that do not change keep their slot_id. Tunio public API: PUT /v1/stream-music-schedule/{stream_id}

save_stream_schedule_as_profile

ChatGPT
Captures the stream's current music and/or content schedule into a new private profile of the caller's library, with self-contained playlist snapshots. Apply it later with POST /v1/schedule-profiles/{profile_id}/apply, for example to roll a schedule back. Tunio public API: POST /v1/schedule-profiles

set_instant_playlist

ChatGPT
Sets the instant playlist for a stream Tunio public API: POST /v1/stream/{stream_id}/instant-playlist

set_music_override

ChatGPT
Overrides the current music selection with an ad-hoc dynamic filter spec (genres, BPM range, languages, instrumental, music source, collection) for an optional TTL in minutes (clamped to 10..1440, default 60). It supersedes the base music schedule until it expires or is cleared; announcements and jingles keep running. Any subset of filters may be set, but at least one is required. A manual override wins over automated (POS) ones. Tunio public API: POST /v1/stream/{stream_id}/override

skip_current_track

ChatGPT
Skip the currently playing track on a stream Tunio public API: POST /v1/stream/{stream_id}/skip

start_restream

ChatGPT
Starts a saved restream that is switched off. Tunio public API: POST /v1/stream/{stream_id}/restreams/{restream_id}/start

stop_restream

ChatGPT
Switches a restream off; it stays saved and can be started again. Tunio public API: POST /v1/stream/{stream_id}/restreams/{restream_id}/stop

update_announcement

ChatGPT
Update an existing announcement by UUID Tunio public API: PUT /v1/announcements/{announcement_id}

update_announcement_schedule

ChatGPT
Update the interval of an existing schedule Tunio public API: PATCH /v1/announcements/schedules/{schedule_id}

update_playlist

ChatGPT
Updates a playlist by UUID Tunio public API: PATCH /v1/playlists/{playlist_id}

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps