Fiquei com uma dúvida no MCP remoto: como o transcribe_audio recebe o arquivo? O servidor não enxerga o disco de quem usa, então se o áudio entrar como base64 no argumento da tool ele passa pelo contexto do modelo, e poucos minutos de áudio já viram muito mais token do que cabe. Um jeito comum é a tool devolver uma URL de upload assinada, o agente sobe o arquivo com curl e depois chama a análise passando só o id.
No esboço de verificação do webhook eu incluiria a checagem do t, recusando timestamp com mais de uns 5 minutos. Sem isso, quem capturar uma requisição válida consegue reenviar ela depois.