Mutator
Crie e teste formatos que transformam uma foto de produto ou site em vídeos para TikTok e Instagram, e leia os resultados. Não pode publicar.
Servidor MCP hospedado
npx add-mcp 'https://mutator.app/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Servidor MCP
Conecte um agente de IA — Claude, ChatGPT, Cursor, qualquer coisa que fale Model Context Protocol — a um workspace Mutator, para que ele possa encontrar automações, testá-las, ler o que aconteceu e relatar o que saiu.
Endpoint: https://mutator.app/mcp
A única coisa que você precisa saber
Nenhuma ferramenta neste servidor pode publicar nada.
Isso não é um escopo que você possa ampliar ou uma permissão que você possa conceder. É a forma do servidor. Um agente pode construir uma execução, observá-la, ler o que saiu e contar para você; uma pessoa abre o Mutator e decide se algo disso chega a uma conta real.
A API pública também não pode, desde que as aprovações foram removidas em 20 de setembro de 2026: uma execução não publica nada, e uma postagem só existe depois que uma pessoa coloca um arquivo específico na agenda de uma conta específica, no Mutator, com o nome dela na decisão. Não existe chave de nenhum escopo que alcance isso. Veja o que o marketing pode afirmar sobre isso, e o que foi dito às revisões da plataforma.
Conectando
Duas formas de acesso, e ambas alcançam exatamente as mesmas ferramentas:
- OAuth, para clientes que recebem apenas o endereço: conectores Claude e ChatGPT, Claude Code, e qualquer cliente que siga a especificação de autorização MCP. O cliente abre o Mutator no navegador, o proprietário do workspace faz login, escolhe o workspace e decide se ele pode iniciar execuções.
- Uma chave de API como token bearer, para clientes configurados com um cabeçalho: as mesmas chaves que a API pública usa, criadas em Configurações → Chaves de API. Veja a documentação da API pública, que diz o que uma chave alcança em cada plano.
Qualquer um dos dois precisa do proprietário do workspace, em qualquer plano pago. read alcança todas as ferramentas exceto as quatro que escrevem: mutator_start_run, mutator_create_automation, mutator_save_automation_graph e mutator_set_schedule. Dê acesso somente leitura, a menos que o agente realmente precise construir ou executar coisas. Nada de qualquer forma pode publicar.
Claude ou ChatGPT
No Claude, adicione um conector personalizado em Configurações → Conectores. No ChatGPT, adicione um conector com OAuth. Cole https://mutator.app/mcp e nada mais, depois aprove na janela que o Mutator abrir. Aplicativos conectados são listados em Configurações → Chaves de API, onde cada um pode ser desconectado.
Claude Code
claude mcp add --transport http mutator https://mutator.app/mcp
Depois execute /mcp no Claude Code e faça login. Para usar uma chave, adicione --header "Authorization: Bearer loop_sk_..." ao comando.
Qualquer coisa com configuração JSON
{
"mcpServers": {
"mutator": {
"type": "http",
"url": "https://mutator.app/mcp",
"headers": { "Authorization": "Bearer loop_sk_..." }
}
}
}
Como o OAuth funciona aqui
O Mutator é seu próprio servidor de autorização e /mcp seu único recurso protegido, seguindo a especificação de autorização MCP (2025-06-18 e posteriores):
- Uma requisição sem chave ou token recebe
401comWWW-Authenticate: Bearer resource_metadata="https://mutator.app/.well-known/oauth-protected-resource/mcp". O handshake incluído: um cliente que recebeu um200deinitializenunca ofereceria login. - Metadados:
/.well-known/oauth-protected-resource(RFC 9728) e/.well-known/oauth-authorization-server(RFC 8414). - Clientes se registram em
/oauth/register(RFC 7591). Clientes públicos usam apenas PKCE; um cliente que não nomeia método de autenticação recebe um segredo. /oauth/authorizeusa o fluxo de código com PKCE (S256apenas) e umresourcedehttps://mutator.app/mcp(RFC 8707). A pessoa aprova em/connect, que mostra para onde a resposta será enviada. O nome de um aplicativo é sua própria afirmação; o endereço de redirecionamento é fixado quando ele se registra./oauth/tokenemite um token de acesso por uma hora e um token de atualização por 90 dias, rotacionado a cada uso. Um token de atualização apresentado novamente depois de ter sido trocado encerra a conexão./oauth/revoke(RFC 7009) também a encerra.- Um token de acesso é aceito apenas em
/mcp, nunca por/api/v1, e para de funcionar no momento em que a conexão é revogada ou o workspace sai de um plano pago, como uma chave.
Verifique se funciona pedindo ao agente para chamar mutator_whoami, ou a partir de um shell:
curl -s https://mutator.app/mcp -H "Authorization: Bearer loop_sk_..." -H "content-type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
GET https://mutator.app/mcp não precisa de chave ou token e retorna uma descrição do servidor e suas ferramentas — útil para verificar acessibilidade e para qualquer coisa que catalogue servidores MCP.
Essa mesma URL abre uma página no navegador. Um endereço serve para ambos: uma requisição pedindo text/html recebe a página, e tudo o mais — um POST, ou um GET enviando */* ou application/json — recebe o protocolo. Nada mudou no endpoint para um cliente que já o usava.
Construindo uma automação
Um agente lê o vocabulário antes de escrever: mutator_list_brands para a marca à qual a automação pertence, mutator_list_step_types para os passos que existem, mutator_list_formats para os formatos de conteúdo e mutator_list_connections para a conta que um passo de publicação deve nomear — não existe campo "postar no TikTok", apenas "postar nesta conexão, que por acaso é o TikTok".
Depois mutator_create_automation com um grafo de nós { key, type, position, config } e arestas { sourceKey, targetKey }. A maioria das configurações tem padrões, então config: {} geralmente é suficiente. Dois ramos saindo de um passo é como a mesma ideia é produzida de duas formas.
Um grafo inválido é salvo mesmo assim, com os problemas retornados como issues. Isso é deliberado: meio construído é um estado normal para um rascunho, e falhar a chamada inteira perderia o trabalho. Duas configurações são recusadas imediatamente no salvamento, em vez de na execução, porque o executor as recusa horas depois, quando alguém já ativou e foi embora — várias versões de um vídeo, e um lote de imagens que não seja 1 ou exatamente 4.
Ferramentas
| Ferramenta | Escopo | O que faz |
|---|---|---|
mutator_whoami | leitura | Qual workspace esta chave alcança e o que ela pode fazer |
mutator_list_automations | leitura | Toda automação com id, nome e status |
mutator_get_automation | leitura | Uma automação: status, agenda, limites de gasto |
mutator_list_runs | leitura | Execuções recentes de uma automação |
mutator_get_run | leitura | Uma execução, com detalhe por passo |
mutator_list_approvals | leitura | Sempre vazio: aprovações foram removidas |
mutator_get_analytics | leitura | Como o conteúdo publicado se saiu |
mutator_get_spend_limits | leitura | Tetos diários e mensais, e o que resta |
mutator_start_run | escrita | Iniciar uma execução. Seco por padrão |
mutator_list_brands | leitura | As marcas às quais uma automação pode pertencer |
mutator_list_connections | leitura | Contas conectadas, e o id que um passo de publicação precisa |
mutator_list_formats | leitura | Os formatos de conteúdo, e os nichos que eles atendem |
mutator_list_step_types | leitura | Todo passo a partir do qual uma automação pode ser construída |
mutator_create_automation | escrita | Criar uma automação. Somente rascunho |
mutator_save_automation_graph | escrita | Substituir seus passos. Somente rascunho |
mutator_set_schedule | escrita | Definir quando ela executaria. Salvo desligado |
Seco por padrão
mutator_start_run executa seco a menos que o chamador passe dryRun: false. Uma execução seca pula a publicação (e o agendamento de repetição), não a geração. Ela não é gratuita: create e understand ignoram dryRun, então uma execução seca faz as mesmas chamadas de geração pagas que uma execução real faz, custa os mesmos créditos ou cobranças do provedor, e é verificada contra os mesmos limites de gasto (src/server/engine/runs.ts, o comentário acima de assertSpendWithinCaps).
A API pública deixa dryRun indefinido e deixa o mecanismo decidir, o que é certo para uma integração que alguém escreveu de propósito. Aqui o chamador é um modelo que pode ter inferido a chamada inteira de uma frase, então a leitura segura do silêncio é "teste": o que quer que ele gere para antes de qualquer conta social. Isso limita o que uma chamada equivocada pode publicar, não o que ela pode gastar, e é por isso que a descrição da ferramenta diz ao modelo para iniciar uma execução apenas quando o usuário quiser uma.
idempotencyKey é obrigatório, 8–80 caracteres, e com namespace por chave no caminho. Repetir com o mesmo valor retorna a execução original em vez de iniciar uma segunda.
O que este servidor não é
- Não é um ativador. Um agente pode construir uma automação e salvá-la como rascunho. Ele não pode ligar uma. Isso é seguro porque um rascunho genuinamente não pode executar — não tem versão ativa, o agendador dispara apenas automações ativas, e
createRunrecusa todo gatilho excetotesta menos que a automação esteja ativa, o que nenhuma chave de API pode definir. A ativação é onde uma pessoa lê o que foi construído e assume responsabilidade por isso, então permanece no Mutator. - Não é um publicador. Acima.
- Não é um serviço de tendências. Não há dados de viralidade, tendências ou descoberta neste produto.
mutator_list_formatsretorna um catálogo escrito à mão, e um nicho o ordena em vez de filtrá-lo. Um agente solicitado por "formatos virais" pode oferecer estes; ele não pode dizer que qualquer um deles está em tendência. - Não tem estado. Nenhum id de sessão é emitido, então qualquer réplica responde a qualquer requisição e um deploy não perde nada. Cada chamada carrega sua própria chave.
Notas de implementação
O servidor fala JSON-RPC diretamente em vez de usar o SDK oficial. MCP é JSON-RPC 2.0 com quatro métodos que importam para um servidor somente de ferramentas — initialize, tools/list, tools/call, ping — e o valor do SDK está em transportes que assumem um processo de longa duração dono de um socket. Um manipulador de rota Next não é nenhum dos dois.
Autenticação, limitação de taxa e modelagem de erros são compartilhadas com a API pública, e o endpoint não carrega escopo próprio: alcançá-lo precisa apenas de uma chave ou token válido, e as ferramentas de escrita verificam o escopo elas mesmas no momento da chamada. Exigir write na porta bloquearia chaves somente leitura de initialize.
Sem cabeçalhos CORS, deliberadamente. Todo cliente MCP que importa conecta de um servidor ou processo de desktop, e a autenticação é um token bearer em vez de um cookie, então não há nada para um navegador ser enganado a enviar.
As versões de protocolo faladas são 2025-06-18, 2025-03-26 e 2024-11-05. Uma versão desconhecida é respondida com a mais recente em vez de recusada.