Skip to main content
O club é exposto como um servidor MCP: um agente conectado lista cursos, acompanha alunos, responde comentários, monta campanhas e cria conteúdo — com as mesmas regras do painel.
É um servidor Streamable HTTP sem estado: cada chamada é um POST independente, e o GET (o fluxo aberto do servidor para o cliente) responde 405, como a especificação prevê para quem não o oferece.

O que o agente pode fazer

Uma conexão vale para um club, age em nome de uma pessoa e com o papel que ela tem nele. Nada fica maior do que a própria pessoa: quem não administra o club continua sem administrar pelo agente, e o plano do club vale igual — recurso fora do plano responde 402. Toda ferramenta executa as mesmas operações desta API, pelo mesmo caminho do painel: escopo, papel, plano, limites e validação são os de sempre. Quem do time pode conectar é um ajuste do club (agent_access, em Configurações e em Ajustes › Integrações): ninguém, só quem administra (o padrão) ou todo o time. Ele vale a cada chamada: fechar corta os agentes na hora, e reabrir os devolve.

Conectar por OAuth

Clientes que falam OAuth (Claude, ChatGPT, Cursor, VS Code, o Inspector do MCP) só precisam do endereço. Na primeira chamada o servidor responde 401 apontando para os metadados, e o cliente conduz o resto sozinho:
  1. descobre o servidor de autorização em /.well-known/oauth-protected-resource/mcp (RFC 9728) e os endpoints em /.well-known/oauth-authorization-server (RFC 8414);
  2. se registra em /oauth/register (RFC 7591);
  3. abre o navegador em /oauth/authorize, que leva à tela de consentimento do painel — é ali que a pessoa escolhe o club e o que concede;
  4. troca o código por token em /oauth/token, com PKCE.
O token de acesso vale uma hora e o de renovação, 60 dias a partir do último uso — o agente em uso nunca pede login de novo. O de renovação gira a cada uso: apresentar um que já foi trocado derruba a conexão inteira, porque é o sinal de que ele vazou.
PKCE com S256 é obrigatório. O endereço de retorno precisa ser https, o loopback (http://127.0.0.1 ou http://localhost, em qualquer porta) ou o esquema do aplicativo (cursor://…), e é comparado exatamente com o registrado.

Chave de API

Para o agente que não faz OAuth — uma automação no n8n, um script, um cliente configurado à mão —, crie uma chave em Ajustes › Integrações (ou por Criar chave de API) e mande-a no cabeçalho:
A chave aparece uma vez, age em nome de quem a criou, no club onde foi criada, e pode ter prazo ou não. Até 20 por club.

Quando o acesso cai

A conexão e a chave param de valer, na chamada seguinte, quando:
  • alguém a revoga em Ajustes › Integrações (quem administra revoga qualquer uma do club);
  • o ajuste do club deixa de permitir agentes para aquela pessoa — aqui a conexão fica parada, e volta a responder se o ajuste for reaberto;
  • a pessoa sai do club ou é removida do time;
  • a senha da pessoa é redefinida pelo link de e-mail — quem recupera uma conta não pode deixar para trás um agente que outra pessoa conectou com ela;
  • o prazo da chave, ou os 60 dias sem uso da conexão, passam.

As ferramentas

A lista de verdade é a que o servidor devolve em tools/list, com o schema de entrada de cada ferramenta tirado deste contrato. ✎ marca as que escrevem (escopo write). As que o aluno sente — enviar e-mail, publicar em público, revogar acesso, ligar certificado — vêm marcadas como destrutivas, e o cliente pede confirmação antes de executá-las.

O que não está ao alcance de nenhum agente

Por desenho, e não por falta de ferramenta: emitir, listar ou revogar credenciais; entrar na área do aluno como o aluno; ver ou trocar a senha dele; convidar ou remover alguém do time; mudar plano, cobrança ou domínio; conectar plataforma de venda ou webhook de saída (o segredo passaria pelo modelo); anonimizar aluno; apagar mídia; importar alunos em lote. Esses ficam no painel, com uma pessoa na frente.

Erros

Erro de uma operação volta como resultado da ferramenta com isError, em texto que o modelo lê e corrige: erro 422 (invalid_block): …. Os códigos são os desta API — ver Erros. Argumento que não está no schema é recusado antes de chegar à operação, com o nome do campo. O servidor tem teto de 300 chamadas por minuto por conexão, por cima do teto de escrita do club (Limites).