Agent Skills

LigueLead

Send SMS, SMS Flash, and voice calls in Brazil via LigueLead API. Brazilian CPaaS with BRL pricing and PIX payments.

Install

Install and configure the MCP from https://github.com/liguelead/mcp now. Follow the repository's installation instructions, ask me for anything you can't complete yourself, and verify its tools load.
README

📱 LigueLead MCP Server

MCP Server for sending SMS, SMS Flash, voice calls, and RCS in Brazil via the LigueLead API. Enable Claude, Cursor, Windsurf, and any MCP-compatible AI agent to send real communications — no code, no complex setup.

🇧🇷 Brazilian CPaaS · BRL pricing · PIX payments · PT-BR support


Available tools

ToolDescription
send_smsSend SMS or SMS Flash campaign to Brazilian phone numbers
list_voice_uploadsList all uploaded voice audio files
get_voice_uploadGet details of a specific voice upload
upload_voice_audioUpload MP3/WAV audio for voice campaigns
send_voice_messageSend a voice campaign to a list of phones
list_rcs_agentsList RCS agents (sender brands) and their review status
create_rcs_template_textCreate a plain-text RCS template
create_rcs_template_mediaCreate an RCS template with image/video
create_rcs_template_cardCreate a rich card RCS template with buttons
create_rcs_template_carouselCreate a carousel RCS template (2-10 cards)
send_rcsSend an RCS campaign (template-based or freeform)

Quick start

Option 1: npx (recommended)

No installation needed — just add to your MCP client config:

{
  "mcpServers": {
    "liguelead": {
      "command": "npx",
      "args": ["-y", "@liguelead/mcp-server"],
      "env": {
        "LIGUELEAD_API_TOKEN": "your-token",
        "LIGUELEAD_APP_ID": "your-app-id",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Option 2: Clone & build

git clone https://github.com/liguelead/mcp.git
cd mcp
npm install
cp .env.example .env  # Edit with your credentials
npm run build
npm start

The server starts at http://localhost:3000 by default.

Getting your credentials

  1. Go to areadocliente.liguelead.app.br
  2. Navigate to Integrações → API Token
  3. Create an App and copy the API Token and App ID

Transports

TransportUse caseEnv var
Streamable HTTP (default)Remote server, any MCP clientTRANSPORT=http
stdioLocal — Claude Desktop / Claude Code / CursorTRANSPORT=stdio

Client configuration

Claude Desktop (stdio)

Edit claude_desktop_config.json:

{
  "mcpServers": {
    "liguelead": {
      "command": "npx",
      "args": ["-y", "@liguelead/mcp-server"],
      "env": {
        "LIGUELEAD_API_TOKEN": "your-token",
        "LIGUELEAD_APP_ID": "your-app-id",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Claude Code

claude mcp add -s user liguelead \
  -e LIGUELEAD_API_TOKEN=your-token \
  -e LIGUELEAD_APP_ID=your-app-id \
  -e TRANSPORT=stdio \
  -- npx -y @liguelead/mcp-server

Cursor / Windsurf

Add to your MCP settings with the same configuration as Claude Desktop above.

Remote HTTP server

Any MCP client that supports Streamable HTTP can connect via:

POST https://your-server.com/mcp

Credentials stay on the server — the client doesn't need them.

mcp-remote bridge

For clients that don't support HTTP natively (e.g., Claude Desktop connecting to a remote server):

{
  "mcpServers": {
    "liguelead": {
      "command": "npx",
      "args": ["mcp-remote", "https://your-server.com/mcp"]
    }
  }
}

Deploy

Docker

docker build -t liguelead-mcp .
docker run -d -p 3000:3000 \
  -e LIGUELEAD_API_TOKEN=your-token \
  -e LIGUELEAD_APP_ID=your-app-id \
  liguelead-mcp

Railway / Render

  1. Connect the Git repository
  2. Set environment variables: LIGUELEAD_API_TOKEN, LIGUELEAD_APP_ID
  3. Build command: npm install && npm run build
  4. Start command: npm start

Credential security

ScenarioWhere credentials live
stdio (local)Environment variables in client config
HTTP (remote)Environment variables on the server
Docker-e flags or orchestrator secrets
CI/CDProvider secrets (GitHub Actions, etc.)

⚠️ Credentials are NEVER committed to code. The .env file is in .gitignore.

Webhook

Setup

  1. Go to areadocliente.liguelead.app.br
  2. Navigate to Integrações → API Token → Webhook URL
  3. Enter your public HTTPS endpoint URL
  4. Save

A single URL receives notifications for all channels (SMS, SMS Flash, Voice, RCS).

Query received webhooks

curl http://localhost:3000/webhooks

Returns:

{
  "total": 42,
  "webhooks": [...]
}

⚠️ CRITICAL: LigueLead does NOT retry failed webhooks. If your endpoint is down, the webhook is lost permanently.

Phone number format

Brazilian phone numbers are accepted in three formats:

FormatExampleDigits
National (recommended)1199999999911
International+551199999999914 chars
DDI without +551199999999913

SMS limits

PartCharactersCredits
1st partup to 1601 credit
Additional partsevery 152 chars1 credit each
Maximum total1,600 chars~11 credits

🚫 SMS Flash does NOT allow URLs in message content.

Voice call limits

  • Supported formats: MP3 and WAV (no AAC/M4A)
  • Max file size: 50 MB (recommended: 5–10 MB)
  • Billing: Up to 30s = 1 credit; over 30s = 2 credits
  • Dialing window: 08:00–21:44 (America/Sao_Paulo). Requests after 21:45 are queued until 08:00.

RCS templates & limits

RCS campaigns are built from a template registered via one of the create_rcs_template_* tools, then sent with send_rcs using the returned template_id (or as a freeform, template-less message).

Template typeToolNotes
Textcreate_rcs_template_textPlain text, no media/buttons
Mediacreate_rcs_template_mediaImage or short video (media_url or media_file, mutually exclusive)
Rich cardcreate_rcs_template_cardOptional media + 1-4 buttons (reply, open_url, dial_call)
Carouselcreate_rcs_template_carousel2-10 rich cards; all cards must declare the same button count/type/order
  • body max 1,600 chars; supports {{N}} variable placeholders, overridable via default_variables (template) or template_variables (send time)
  • media_file accepts a base64 data URI, max 5 MB decoded
  • fallback_message (max 306 chars) is the SMS sent if RCS delivery fails
  • send_rcs freeform message is capped at 306 chars (mutually exclusive with template_id) — reused as the SMS fallback
  • send_rcs freeform message requires agent_id (see list_rcs_agents); template sends must omit it, since the template carries its own agent
  • Async operation — returns 202 when queued; delivery status arrives via the configured webhook

Rate limits

LimitValue
Requests per minute600,000
Simultaneous requests10,000
Recipients per request10,000

Project structure

liguelead-mcp/
├── src/
│   ├── index.ts          # Entry point — HTTP or stdio
│   ├── config.ts          # Env var validation (Zod) + .env loader
│   ├── lib/
│   │   ├── api-client.ts  # HTTP client for LigueLead API
│   │   ├── validators.ts  # Phone/RCS schemas (Zod)
│   │   └── webhook.ts     # Webhook handler + GET /webhooks
│   └── tools/
│       ├── sms.ts         # Tool: send_sms
│       ├── voice.ts       # Tools: voice (list/get/upload/send)
│       └── rcs.ts         # Tools: RCS (templates + send_rcs)
├── skill/                  # Claude Code Skill
│   └── SKILL.md
├── .env.example
├── Dockerfile
├── LICENSE
├── package.json
├── server.json
├── glama.json
└── README.md

Troubleshooting

ProblemSolution
LIGUELEAD_API_TOKEN is requiredSet up .env or environment variables
401 UnauthorizedCheck api-token and app-id in LigueLead panel
429 Too Many RequestsRate limit exceeded — wait for reset
Upload rejectedOnly MP3 and WAV accepted (no AAC/M4A)
Stale buildrm -rf dist && npm run build

License

MIT



🇧🇷 Documentação em Português

LigueLead MCP Server

MCP Server para a API da LigueLead — SMS, SMS Flash, Campanhas de Voz e RCS no Brasil.

Permite que Claude, Cursor, Windsurf e qualquer agente de IA compatível com MCP enviem comunicações reais — sem código, sem setup complexo.

CPaaS Brasileiro · Preço em BRL · Pagamento via PIX · Suporte em PT-BR

Início rápido

Opção 1: npx (recomendado)

Sem instalação — basta adicionar à config do seu cliente MCP:

{
  "mcpServers": {
    "liguelead": {
      "command": "npx",
      "args": ["-y", "@liguelead/mcp-server"],
      "env": {
        "LIGUELEAD_API_TOKEN": "seu-token",
        "LIGUELEAD_APP_ID": "seu-app-id",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Opção 2: Clone & build

git clone https://github.com/liguelead/mcp.git
cd mcp
npm install
cp .env.example .env  # Edite com suas credenciais
npm run build
npm start

Obtendo suas credenciais

  1. Acesse areadocliente.liguelead.app.br
  2. Vá em Integrações → API Token
  3. Crie um App e copie o API Token e App ID

Tools disponíveis

ToolDescrição
send_smsEnvia campanha de SMS ou SMS Flash para números brasileiros
list_voice_uploadsLista todos os áudios enviados
get_voice_uploadDetalhes de um áudio específico
upload_voice_audioUpload de áudio MP3/WAV para campanhas de voz
send_voice_messageDispara campanha de voz para lista de telefones
list_rcs_agentsLista os agentes de RCS (marcas remetentes) e o status de aprovação
create_rcs_template_textCria um template de RCS somente texto
create_rcs_template_mediaCria um template de RCS com imagem/vídeo
create_rcs_template_cardCria um template de RCS com rich card e botões
create_rcs_template_carouselCria um template de RCS carrossel (2-10 cards)
send_rcsDispara uma campanha de RCS (com template ou texto livre)

Configuração por cliente MCP

Claude Desktop (stdio)

Edite claude_desktop_config.json:

{
  "mcpServers": {
    "liguelead": {
      "command": "npx",
      "args": ["-y", "@liguelead/mcp-server"],
      "env": {
        "LIGUELEAD_API_TOKEN": "seu-token",
        "LIGUELEAD_APP_ID": "seu-app-id",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Claude Code

claude mcp add -s user liguelead \
  -e LIGUELEAD_API_TOKEN=seu-token \
  -e LIGUELEAD_APP_ID=seu-app-id \
  -e TRANSPORT=stdio \
  -- npx -y @liguelead/mcp-server

Formato de números de telefone

FormatoExemploDígitos
Nacional (recomendado)1199999999911
Internacional+551199999999914 chars
DDI sem +551199999999913

Limites de SMS

ParteCaracteresCréditos
1ª parteaté 1601 crédito
Partes adicionaisa cada 152 chars1 crédito cada
Máximo total1.600 chars~11 créditos

🚫 SMS Flash NÃO permite URLs no conteúdo da mensagem.

Limites de voz

  • Formatos suportados: MP3 e WAV (AAC e M4A não são suportados)
  • Tamanho máximo: 50 MB (recomendado: 5–10 MB)
  • Cobrança: Até 30s = 1 crédito; acima de 30s = 2 créditos
  • Janela de discagem: 08h00–21h44 (America/Sao_Paulo). Requests após 21h45 ficam na fila até as 08h00.

Templates e limites de RCS

Uma campanha de RCS é criada a partir de um template registrado com uma das tools create_rcs_template_*, e enviada com send_rcs usando o template_id retornado (ou como mensagem livre, sem template).

Tipo de templateToolObservações
Textocreate_rcs_template_textSomente texto, sem mídia/botões
Mídiacreate_rcs_template_mediaImagem ou vídeo curto (media_url ou media_file, mutuamente exclusivos)
Rich cardcreate_rcs_template_cardMídia opcional + 1-4 botões (reply, open_url, dial_call)
Carrosselcreate_rcs_template_carousel2-10 rich cards; todos os cards devem declarar o mesmo número/tipo/ordem de botões
  • body até 1.600 chars; suporta placeholders {{N}}, sobrescrevíveis via default_variables (template) ou template_variables (no envio)
  • media_file aceita um data URI em base64, máximo 5 MB decodificado
  • fallback_message (máx 306 chars) é o SMS enviado caso a entrega via RCS falhe
  • O message livre do send_rcs é limitado a 306 chars (mutuamente exclusivo com template_id) — reaproveitado como fallback de SMS
  • O message livre do send_rcs exige agent_id (veja list_rcs_agents); no envio com template ele não deve ser enviado, pois o template já tem o agente dele
  • Operação assíncrona — retorna 202 ao ser enfileirada; o status chega pelo webhook configurado

Webhook

  1. Acesse areadocliente.liguelead.app.br
  2. Vá em Integrações → API Token → Webhook URL
  3. Insira a URL HTTPS do seu endpoint
  4. Salve

Uma única URL recebe notificações de todos os canais (SMS, SMS Flash, Voz, RCS).

⚠️ CRÍTICO: LigueLead NÃO faz retry. Se o endpoint falhar, o webhook é perdido permanentemente.

Search skills and MCP servers

Search across 31,816 skills and MCPs