MCP Server

Escola de Rádio TV & Web (ER+)

br.com.escoladeradio.www/public
Education Media & Content Public & reachable MCP 2026-07-28

What this MCP does

Provides read-only access to a Brazilian radio school's courses, classes, teachers, podcasts, blog, services, and availability.

check_availability
Vagas restantes em um curso
Checa vagas restantes na PRÓXIMA turma de um curso. Mescla matrículas reais no Supabase com a curva de marketing (computeEffectiveSlots) e nunca mostra mais vagas do que realmente existem. Se soldOut=true, oriente o usuário a entrar na lista de espera pelo WhatsApp da secretaria.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "Slug do curso. Ex: 'narracao-esportiva'."}}, 'additionalProperties': False}
get_blog_post
Detalhe de post (markdown)
Detalhe completo de um post do blog incluindo o corpo em markdown (convertido do PortableText do Sanity). Útil pra LLMs lerem o conteúdo na íntegra.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Slug do post.'}}, 'additionalProperties': False}
get_course
Detalhe de curso
Retorna detalhe COMPLETO de um curso: descrição, módulos/programa, professores, preço, parcelamento, duração, certificação (DRT?), próxima turma, vagas (mescladas com matrículas reais), depoimentos, FAQ específico. Use list_courses pra descobrir o slug.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "Slug do curso (kebab-case). Ex: 'locucao-profissionalizante', 'narracao-esportiva', 'podcast-express'."}}, 'additionalProperties': False}
get_podcast_episode
Detalhe de episódio
Detalhe completo de um episódio: áudio (URL .mp3), excerpt, convidados, tópicos, links citados e transcrição (quando disponível).
Read only Idempotent
Input schema
{'type': 'object', 'required': ['podcast_slug', 'episode_slug'], 'properties': {'episode_slug': {'type': 'string', 'description': 'Slug do episódio.'}, 'podcast_slug': {'type': 'string', 'description': 'Slug da série.'}}, 'additionalProperties': False}
get_teacher
Detalhe de professor
Detalhe de um professor: bio completa, foto e lista dos cursos que ele leciona atualmente.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': "Slug do professor. Ex: 'ruy-jobim'."}}, 'additionalProperties': False}
list_blog_posts
Listar posts do blog
Lista posts publicados do blog editorial da ER+. Opcionalmente filtra por categoria.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Máximo de posts (default 20).'}, 'category_slug': {'type': 'string', 'description': 'Slug da categoria (opcional).'}}, 'additionalProperties': False}
list_courses
Listar cursos
Lista TODOS os cursos ativos da escola (resumido). Opcionalmente filtra por modalidade. Modalidades: 'profissionalizante' (formação completa com DRT), 'livre' (Express, especialização curta), 'ead' (online assíncrono). Use get_course com o slug pra detalhe completo.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'modalidade': {'enum': ['profissionalizante', 'livre', 'ead'], 'type': 'string', 'description': 'Filtra por modalidade (opcional).'}}, 'additionalProperties': False}
list_podcast_episodes
Listar episódios de podcast
Lista episódios publicados, ordenados do mais novo pro mais antigo. Opcionalmente filtra por série (parâmetro podcast_slug).
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Máximo de episódios (default 20).'}, 'podcast_slug': {'type': 'string', 'description': "Slug da série (opcional). Ex: 'tom-em-tom'."}}, 'additionalProperties': False}
list_podcast_series
Listar séries de podcast
Lista todas as séries de podcast da ER+ com contagem de episódios, host e links externos (Spotify, YouTube, Apple Podcasts).
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
list_services
Listar serviços além dos cursos
Lista serviços oferecidos pela ER+ ALÉM dos cursos regulares: 'demo' (gravação de demo profissional com Ruy, R$ 350), 'mentoria' (mentoria 1:1 com Ruy, R$ 250/h), 'b2b' (treinamentos corporativos pra empresas). Use quando aluno perguntar sobre demo, mentoria, treinamento empresarial. Pra cursos regulares, use list_courses.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'type': {'enum': ['demo', 'mentoria', 'b2b', 'all'], 'type': 'string', 'description': "Filtra por tipo de serviço (opcional, default 'all')."}}, 'additionalProperties': False}
list_teachers
Listar professores
Lista todos os professores ATIVOS da escola, com nome, função e descrição curta.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
list_upcoming_classes
Próximas turmas
Lista turmas com data_inicio futura (a partir de hoje), ordenadas por data crescente. Use isso pra responder 'que cursos têm turma marcada?' ou 'qual a próxima turma de X?'. Pra vagas em tempo real, use check_availability.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Máximo de turmas a retornar (default 20).'}}, 'additionalProperties': False}
radio_now_playing
Rádio ER+: o que está tocando
Retorna o que está tocando AGORA na Rádio Escola de Rádio (rádio web 24h da escola): música atual, próxima, ouvintes conectados, link do stream e como ouvir. Use quando perguntarem sobre a rádio da escola, o que está no ar, ou como escutar.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
school_info
Informações da escola
Retorna informações institucionais da Escola de Rádio: CNPJ, endereço, contatos, horários, modalidades de curso oferecidas. Bom ponto de partida pra entender o que a escola é.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
search
Buscar conteúdo (cursos, posts, episódios)
Busca textual cross-content: cursos, posts do blog e episódios de podcast. Retorna até `limit` resultados de cada tipo.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['q'], 'properties': {'q': {'type': 'string', 'description': 'Termo de busca.'}, 'limit': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Resultados por categoria (default 10).'}}, 'additionalProperties': False}
Added
radio_now_playing
Sept. 17, 2026, 7:58 a.m.
Added
list_services
Sept. 17, 2026, 7:58 a.m.
Added
search
Sept. 17, 2026, 7:58 a.m.
Added
get_blog_post
Sept. 17, 2026, 7:58 a.m.
Added
list_blog_posts
Sept. 17, 2026, 7:58 a.m.
Added
get_podcast_episode
Sept. 17, 2026, 7:58 a.m.
Added
list_podcast_episodes
Sept. 17, 2026, 7:58 a.m.
Added
list_podcast_series
Sept. 17, 2026, 7:58 a.m.
Added
get_teacher
Sept. 17, 2026, 7:58 a.m.
Added
list_teachers
Sept. 17, 2026, 7:58 a.m.
Added
list_upcoming_classes
Sept. 17, 2026, 7:58 a.m.
Added
check_availability
Sept. 17, 2026, 7:58 a.m.
Added
get_course
Sept. 17, 2026, 7:58 a.m.
Added
list_courses
Sept. 17, 2026, 7:58 a.m.
Added
school_info
Sept. 17, 2026, 7:58 a.m.