Configure o Tá Rodando (monitoramento HTTP + status page em português) pra este usuário, nesta sessão, do login até o alerta de teste. O usuário só faz o login e clica em Permitir no navegador; o resto é com você. Não peça chave de API nem mande o usuário pro painel. Servidor MCP: https://tarodando.com.br/mcp. O login cria a conta na hora, grátis e sem cartão. ## 1. Acesso 1. Se a tool ver_conta do servidor tarodando está nesta sessão, chame. Respondeu? Pule pra seção 2 (Trabalho). 2. A tool não existe, ou falhou por credencial (401, unauthorized, acesso revogado ou expirado, servidor que não montou)? Conexão velha não se conserta no meio da sessão: siga o login pelo navegador abaixo. Você tem terminal se consegue rodar comandos (Claude Code, Codex, Cursor, omp e afins). 3. Sem terminal (Claude.ai, ChatGPT)? Siga o passo do seu host em "Hosts sem terminal", no fim, e chame ver_conta. ### Login pelo navegador (quem tem terminal) 1. Peça o código (troque o client_name pelo nome do seu host; é o que aparece pro usuário na tela de Permitir e em "Apps conectados"). O bloco salva a resposta em ~/.config/tarodando/device.json só pra você e, se já existe um código pedido há menos de 9 minutos, reaproveita ele em vez de gerar outro: ```sh D=~/.config/tarodando; umask 077; mkdir -p "$D" [ -n "$(find "$D/device.json" -mmin -9 2>/dev/null)" ] || { curl -s -m 15 -X POST https://tarodando.com.br/oauth/device_authorization --data-urlencode "client_name=Claude Code" > "$D/device.json"; rm -f "$D/interval"; } grep -q device_code "$D/device.json" && grep -oE '"(user_code|verification_uri_complete)":"[^"]+"' "$D/device.json" || { cat "$D/device.json"; rm -f "$D/device.json"; } ``` 2. Abra verification_uri_complete no navegador do usuário (macOS: open; Linux: xdg-open; Windows: start "") e diga a ele: confira se o código na tela é o user_code e clique em Permitir; sem conta, o login cria na hora (pelo email leva uns minutos, tudo bem). Se não der pra abrir, mostre o link e o código. O código vale 10 minutos. Nunca mostre o device_code no chat. 3. Espere o Permitir com o bloco abaixo. Ele lê o código salvo, consulta por no máximo uns 80 s (respeita o interval e o slow_down) e grava o token em ~/.config/tarodando/token.json só pra você (nunca mostre o token no chat). Saiu "pendente", ou o comando caiu pelo limite de tempo do seu terminal? Rode o MESMO bloco de novo: ele retoma o mesmo código, e a tela que o usuário já tem aberta continua valendo. Não peça código novo (passo 1) enquanto não vier expired_token ou access_denied. ```sh D=~/.config/tarodando; umask 077; DC=$(sed -E 's/.*"device_code":"([^"]+)".*/\1/' "$D/device.json") I=$(cat "$D/interval" 2>/dev/null || sed -E 's/.*"interval":([0-9]+).*/\1/' "$D/device.json"); E=$(( $(date +%s) + 80 )) while [ $(( $(date +%s) + I )) -lt "$E" ]; do sleep "$I" R=$(curl -s -m 10 -X POST https://tarodando.com.br/oauth/token -d grant_type=urn:ietf:params:oauth:grant-type:device_code -d "device_code=$DC") case "$R" in *access_token*) printf '%s' "$R" > "$D/token.json"; sed -E 's/.*"client_id":"([^"]+)".*/\1/' "$D/device.json" > "$D/client_id"; rm -f "$D/device.json" "$D/interval"; echo conectado; break ;; *slow_down*) I=$((I+5)); echo "$I" > "$D/interval" ;; *authorization_pending*|"") ;; *) echo "$R"; rm -f "$D/device.json" "$D/interval"; break ;; esac done [ -f "$D/device.json" ] && echo pendente ``` 4. Chame as tools por HTTP (JSON-RPC, sem sessão). tools/list traz o schema de cada tool; troque o corpo por tools/call com name e arguments: ```sh T=$(sed -E 's/.*"access_token":"([^"]+)".*/\1/' ~/.config/tarodando/token.json) curl -s -X POST https://tarodando.com.br/mcp -H "Authorization: Bearer $T" -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ver_conta","arguments":{}}}' ``` - O access token vale 1 hora. Venceu (HTTP 401)? Renove sem o usuário: POST https://tarodando.com.br/oauth/token com grant_type=refresh_token, o refresh_token de ~/.config/tarodando/token.json e o client_id de ~/.config/tarodando/client_id, e grave a resposta nova no mesmo arquivo (umask 077). Se o refresh falhar, refaça o login pelo navegador. - Erro access_denied = o usuário clicou em Negar; expired_token = passaram os 10 minutos. Nos dois, pergunte se ele quer tentar de novo e recomece do passo 1 (o bloco 3 já apagou o código velho). Só a resposta da ver_conta prova o acesso. Não diga que está conectado antes dela. ## 2. Trabalho A ver_conta traz o plano, quantos monitores cabem e o onboarding (os primeiros passos, cada um com label e done). Siga até completar o que faz sentido pra este usuário: 1. O que monitorar: se está num repositório, procure as URLs públicas do projeto (README, configs de deploy, package.json, domínios citados; nunca leia nem mostre segredos). Senão, pergunte. Mostre a lista e confirme antes de criar; respeite quantos cabem no plano. 2. Crie os monitores (criar_monitor). URL falhando: confirme com o usuário antes de repetir com confirmar: true. 3. Status page: pergunte o nome e o endereço (subdomínio de tarodando.com.br). Nunca invente nem use o automático sem perguntar. Pergunte também quais monitores ficam públicos (nunca escolha por ele). Crie com configurar_status_page (name, slug e monitorIds) e organize em seções com estruturar_pagina. 4. Alertas: a conta já avisa no email do dono. Pergunte se o time quer também Slack, Discord, Google Chat ou webhook; se sim, criar_canal e vincular_canal. Mande o alerta de teste com testar_canal. 5. Feche com um resumo: o que está monitorado, o endereço da status page e quem é avisado. ## 3. Opcional: deixar conectado Com tudo feito, ofereça instalar o conector nativo do host, pra próxima sessão já começar com as tools. Não é necessário pra nada acima. ### Claude Code Caminho preferido: plugin. 1. Dentro do Claude Code, rode os dois comandos abaixo. O plugin instala o servidor MCP e as receitas /tarodando:monitorar-projeto, /tarodando:incidente e /tarodando:status. 2. Depois rode /mcp, escolha tarodando → Authenticate, faça login no Tá Rodando e clique em Permitir. ``` /plugin marketplace add tarodando/tarodando-agent /plugin install tarodando@tarodando ``` Fallback sem plugin: 1. Rode o comando abaixo no terminal (fora do Claude Code). 2. Depois reinicia o Claude Code (ou roda /mcp na sessão), escolhe tarodando → Authenticate, faz login no Tá Rodando e clica em Permitir. ``` claude mcp add --transport http tarodando https://tarodando.com.br/mcp ``` ### Codex 1. Rode o comando abaixo no terminal. O Codex detecta o OAuth e abre o navegador: faça login no Tá Rodando e clique em Permitir. 2. Não abriu o navegador? Rode codex mcp login tarodando. Depois abra uma sessão nova do Codex. ``` codex mcp add tarodando --url https://tarodando.com.br/mcp ``` ### Cursor 1. Em ~/.cursor/mcp.json (o Cursor abre o OAuth no primeiro uso): ``` { "mcpServers": { "tarodando": { "url": "https://tarodando.com.br/mcp" } } } ``` ## Hosts sem terminal ### Claude.ai 1. Customize → Connectors → + → Add custom connector. 2. URL: https://tarodando.com.br/mcp. Deixe OAuth Client ID e Secret (Advanced settings) em branco. 3. Clique em Add e depois em Connect, faça login no Tá Rodando e clique em Permitir. ### ChatGPT 1. Precisa de plano pago (Plus, Pro, Business…); em Business e Enterprise o admin do workspace precisa liberar o Developer mode antes. Settings → Apps → Advanced settings → ative o Developer mode. 2. Clique em Create e use a URL do servidor MCP: https://tarodando.com.br/mcp. A autenticação é OAuth, descoberta sozinha. 3. Faça login no Tá Rodando e clique em Permitir. A OpenAI muda o nome desses menus com frequência: se não achar, procure por Developer mode nas Settings.