Function calling de verdade
O cliente MCP transforma cada tool shiftz_* numa função que o modelo chama sozinho. Sem glue code, sem você escrever as chamadas REST na mão.
A Shiftz expõe um servidor MCP (Model Context Protocol) nativo de WhatsApp. Plugue Claude Code, Claude Desktop, Claude.ai, Cursor ou qualquer cliente MCP e o agente cria instâncias, envia mensagens e lê status em linguagem natural. Mesma apikey da API REST, mesmo escopo.
MCP é o padrão que conecta agentes de IA a ferramentas externas. O da Shiftz entrega o WhatsApp inteiro, sem você escrever uma linha de integração.
O cliente MCP transforma cada tool shiftz_* numa função que o modelo chama sozinho. Sem glue code, sem você escrever as chamadas REST na mão.
A autenticação usa a sua apikey no header Authorization: Bearer. Chave org-wide enxerga tudo; chave escopada por instância enxerga só uma.
O endpoint é remoto e sem estado. Roda em Claude.ai, Cursor e agentes em produção, sem instalar nada no seu servidor.
A conexão é a mesma pra todo cliente: aponte pro endpoint, mande a apikey no header Authorization e fale Streamable HTTP. Ache o seu abaixo e copie o comando.
O CLI do Claude conecta direto no endpoint, sem ponte. O escopo user deixa o Shiftz disponível em qualquer projeto seu.
claude mcp add --transport http --scope user shiftz \ https://api.shiftz.com.br/mcp \ --header "Authorization: Bearer shz_xxx.yyy"Versionável: no projeto, um .mcp.json aponta pra mesma URL e lê a chave de uma env (SHIFTZ_API_KEY), sem commitar o segredo. Na sessão, o comando /mcp mostra o status e as tools.
Os conectores nativos só fazem login OAuth, sem campo pra apikey fixa. Use a ponte mcp-remote (precisa de Node.js) no claude_desktop_config.json.
{ "mcpServers": { "shiftz": { "command": "npx", "args": [ "-y", "mcp-remote", "https://api.shiftz.com.br/mcp", "--header", "Authorization:Bearer shz_xxx.yyy" ] } }}Config em ~/Library/Application Support/Claude/ (macOS) ou %APPDATA%\Claude\ (Windows). Salve e reinicie o app. Se o npx no Windows cortar o espaço do header, mova o valor pra uma env AUTH.
Os conectores customizados do claude.ai usam OAuth, sem campo pra colar apikey. Como o /mcp autentica por Bearer hoje, ainda não dá pra adicionar direto no web: use Claude Code ou Claude Desktop por enquanto.
O Codex lê os MCP servers de ~/.codex/config.toml. O HTTP remoto é nativo atrás da flag experimental_use_rmcp_client.
experimental_use_rmcp_client = true [mcp_servers.shiftz]url = "https://api.shiftz.com.br/mcp"bearer_token_env_var = "SHIFTZ_API_KEY"Exporte SHIFTZ_API_KEY antes de abrir o Codex. Sem a flag (ou em versões antigas), use a ponte mcp-remote, igual ao Claude Desktop.
O Gemini CLI do Google conecta direto via HTTP. O jeito mais rápido é o comando gemini mcp add.
gemini mcp add --transport http --scope user \ --header "Authorization: Bearer shz_xxx.yyy" \ shiftz https://api.shiftz.com.br/mcpEditando o ~/.gemini/settings.json na mão, use o campo httpUrl. O campo url (sem http) seleciona o transport SSE, que é outro.
O OpenCode usa a chave mcp no opencode.json (na raiz do projeto ou em ~/.config/opencode/). Servidores remotos têm type: remote.
{ "$schema": "https://opencode.ai/config.json", "mcp": { "shiftz": { "type": "remote", "url": "https://api.shiftz.com.br/mcp", "enabled": true, "headers": { "Authorization": "Bearer {env:SHIFTZ_API_KEY}" } } }}A interpolação de env no OpenCode é {env:VAR}, não a sintaxe com cifrão. Se ele abrir OAuth ao tomar um 401, adicione "oauth": false no bloco do server.
O OpenClaw guarda os servers em ~/.openclaw/openclaw.json, sob mcp.servers. Dá pra adicionar pela CLI ou editando o arquivo.
openclaw mcp add shiftz \ --url https://api.shiftz.com.br/mcp \ --transport streamable-http \ --header "Authorization=Bearer shz_xxx.yyy"No --header do OpenClaw o separador é = (e não :). Rode openclaw mcp status pra confirmar o registro.
O Hermes Agent (Nous Research) lê os servers do bloco mcp_servers da config em YAML. Servidores remotos usam url + headers.
mcp_servers: shiftz: url: "https://api.shiftz.com.br/mcp" headers: Authorization: "Bearer shz_xxx.yyy"Depois de editar, recarregue com /reload-mcp dentro do Hermes. Campos opcionais por server: timeout e connect_timeout.
Construindo um cliente próprio ou só testando na unha? O handshake do MCP é um POST JSON-RPC initialize com a apikey no header.
curl -X POST https://api.shiftz.com.br/mcp \ -H "Authorization: Bearer shz_xxx.yyy" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'A resposta vem como event-stream com o serverInfo (name: shiftz). A partir daí, tools/list e tools/call seguem o mesmo POST.
Conectou? Aí é linguagem natural: "cria a instância marketing-01 e me dá o QR", "manda 'Olá' pro 5511999998888", "lista minhas instâncias e o estado de cada uma".
São mais de 40 tools shiftz_*, cobrindo toda a API /v2 como function calling. O agente chama em linguagem natural; o escopo da apikey decide o que ele enxerga.
Texto, mídia, áudio de voz, enquete, localização, contato, lista e reação.
shiftz_send_text, shiftz_send_media, shiftz_send_whatsapp_audio, shiftz_send_location, shiftz_send_poll, shiftz_send_reaction
Cria, conecta (QR ou pairing code), checa o estado e lista os seus números.
shiftz_create_instance, shiftz_connect_instance, shiftz_get_connection_state, shiftz_list_instances
Cria grupos, gerencia participantes e admins, e gera link de convite.
shiftz_create_group, shiftz_add_group_participants, shiftz_promote_group_admins, shiftz_group_invite_code
Lista chats, lê a agenda, valida números no WhatsApp e marca como lido.
shiftz_find_chats, shiftz_find_contacts, shiftz_check_whatsapp_numbers, shiftz_mark_message_as_read
Lê e atualiza nome, foto e status do número conectado.
shiftz_fetch_profile, shiftz_update_profile_name, shiftz_update_profile_picture, shiftz_update_profile_status
Configura webhooks e administra as chaves de API por escopo.
shiftz_set_webhook, shiftz_find_webhook, shiftz_create_apikey, shiftz_revoke_apikey
Cria a conta, pega a apikey e conecta seu cliente MCP em um comando. Trial de 7 dias, sem cartão.