Chamade

Chamade: голосовой и чат-шлюз для агентов в Discord, Teams, Zoom, Telegram и WhatsApp

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетНужен API-ключRU / СНГБесплатноТолько чтение

Что умеет

  • Присоединяться к голосовым встречам и звонкам по ссылке
  • Принимать или отклонять входящие звонки
  • Говорить и писать в чат во время звонка
  • Отправлять и читать личные сообщения
  • Просматривать входящие уведомления и список активных звонков

Какие данные видит

Ассистент действует от имени учётной записи, подключённой по API-ключу, и видит только звонки и сообщения, доступные этой учётной записи.

Нужен ли аккаунт

Нужен API-ключ из настроек сервиса

MCP-сервер Chamade подключает ассистента к голосовым звонкам и переписке в Discord, Microsoft Teams, Google Meet, Nextcloud Talk, Zoom, Telegram, WhatsApp и по SIP. Агент может присоединиться к встрече, принять или отклонить входящий звонок, говорить, писать в чат и читать входящие сообщения — через единый набор инструментов независимо от платформы.

Как подключить

Как подключить Chamade к Claude

Адрес сервера, который нужно вставить в настройках Claude:

https://server--chamade.run.tools

  1. Откройте Claude (сайт claude.ai или приложение для компьютера).
  2. Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
  3. Нажмите Добавить пользовательский коннектор (Add custom connector).
  4. Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
  5. В чате нажмите + → Коннекторы и включите новый коннектор.

Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.

Авторизация

После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.

Как подключить Chamade к ChatGPT

Адрес сервера, который нужно вставить в настройках ChatGPT:

https://server--chamade.run.tools

  1. Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
  2. Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
  3. Откройте Настройки → Коннекторы и нажмите Создать (Create).
  4. Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
  5. В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
  6. В новом чате откройте + → Приложения/Коннекторы и включите коннектор.

Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.

Авторизация

При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.

Как подключить Chamade к Cursor

Адрес сервера, который нужно вставить в настройках Cursor:

https://server--chamade.run.tools

Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.

Вручную:

  1. В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
  2. Вставьте JSON, скопированный ниже, в открывшийся файл ~/.cursor/mcp.json (для одного проекта: .cursor/mcp.json в корне проекта).
  3. Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.

Авторизация

Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.

Список инструментов сервера (15)

Технические названия из tools/list. Нужны только разработчикам.

chamade_call_joinJoin a voice meeting. The platform is auto-detected from the URL (Discord, Teams, Meet, Telegram, SIP, NC Talk, Zoom, WhatsApp). Returns a call_id, capabilities, and — for voice calls — an `audio` block with the raw-PCM WebSocket URL you can wire to your own stack as the alternative to hosted STT/TTS. Recommended flow: the user enables an STT/TTS preset in /dashboard → Voice providers (BYOK — they bring the ElevenLabs / Deepgram key, Chamade runs the pipeline for free). Transcripts then flow as `call_transcript` events and you speak with `chamade_call_say`, no WebSocket plumbing needed. Use chamade_call_chat for text messages (works on any platform). Stay in the call between exchanges — use chamade_call_leave only when asked or the meeting ends. WARNING for platform=sip: outbound calls require a SIP trunk connected by the operator in /dashboard (BYOT only — Chamade does not provide trunks); the call uses those credentials and the URL must be a SIP URI like `sip:+33612345678@sip.example.com`. WARNING for platform=meet: real-time audio_in relies on Google's Meet Media API (Developer Preview); every meeting participant must be enrolled in Google's program.
chamade_call_acceptAnswer a ringing inbound call. Use this when chamade_call_list or a call_invite event shows a call in 'ringing' state (incoming phone call). The call transitions to 'active' and you can start speaking.
chamade_call_refuseRefuse (reject) a ringing inbound call. The call is ended and the caller hears a disconnect.
chamade_call_saySpeak text aloud in the meeting via Chamade's hosted TTS. Only works when the call was created by a user who has a TTS preset configured in the dashboard (/dashboard → Voice providers). Returns 400 otherwise — in that case synthesize locally and send PCM on the call's audio WebSocket. Write naturally and concisely — avoid markdown. Use punctuation for delivery. Speech-only: this tool does not change call state. A goodbye spoken with `chamade_call_say` is audible to participants but leaves the call connected; `chamade_call_leave` is the tool that terminates the call.
chamade_call_stop_speakingCancel any in-flight TTS utterance on this call — agent self-interrupt. Use when you changed your mind mid-sentence (new information arrived, the user asked you to stop, a faster downstream answer is ready). Flushes the TTS pipeline buffer immediately; the utterance stops within a few milliseconds. No-op if nothing is currently being spoken. Only effective on calls running the hosted TTS pipeline; for BYO-audio paths, stop sending PCM on your audio WebSocket instead.
chamade_call_chatSend a text chat message in the meeting. Set sender_name to identify yourself (e.g. your name or 'AI Assistant'). Optional `attachments` to send files in the meeting chat. Prefer file_id (upload once via POST /api/files multipart, then pass the token) or url over bytes_b64 — inline base64 forces the model to stream every character of the payload, so files bigger than ~2 KB produce a long visible stall before the tool call is dispatched. Each entry is one of: - {file_id}: a token returned by a prior POST /api/files upload - {url, name?, mime?}: fetch from a public URL - {bytes_b64, name, mime}: inline bytes (base64) `text` becomes the caption for the first attachment. Either `text` or `attachments` is required. File support is per-platform — call chamade_account to see which platforms have files=true.
chamade_call_typingSend a typing indicator in the call's chat. Only works on platforms with 'typing' in capabilities.
chamade_call_statusGet call status and new transcript lines since last check (delta pattern — only new lines each call). Call this in a loop to drive the call.
chamade_call_leaveTerminate the call: removes the agent from the meeting, releases the room, and ends the audio bridge. This is the only tool that actually ends a call — a farewell spoken with `chamade_call_say` is audible to participants but leaves the call connected until this tool (or a timeout) runs.
chamade_call_listList all active calls for the current user.
chamade_dm_chatSend a message to the active DM conversation on a platform. The message is delivered to the user on their platform (Discord, Telegram, Teams, etc.). Respect platform character limits: discord 2000, telegram 4096, whatsapp 1600, slack 3000, teams ~28000, nctalk 32000. Set keep_typing=true when sending a quick acknowledgment before a long task — it re-activates the typing indicator automatically after sending. WhatsApp-specific: if the 24-hour customer service window is closed, the message is queued (status='queued' instead of 'delivered') and a re-engagement template is sent automatically. Queued messages are flushed in order as soon as the user replies — no retry needed on your side. Optional `attachments` to send files alongside the text. Prefer these in order: 1. {file_id}: token returned by POST /api/files. For any local file, upload first via multipart (e.g. `curl -F file=@path -H "X-API-Key: ..." {public_url}/api/files`) then pass the file_id. This is the correct path for files you generated or have on disk. 2. {url, name?, mime?}: have Chamade fetch from a public URL (CDN, inbox attachment `url`, etc.). 3. {bytes_b64, name, mime}: inline base64 bytes. **Only** for very small payloads (<2 KB decoded). Emitting large base64 strings as a tool argument forces the model to stream every character token-by-token — a 100 KB image takes 30–60s of pure output time before the tool call even leaves your runtime. Use file_id for anything bigger than a tiny icon. `text` acts as the caption on the first attachment (subject to platform support — audio messages have no captions on most platforms). Either `text` or `attachments` is required. File support is per-platform — call chamade_account to see which platforms have files=true before sending.
chamade_file_upload_urlReserve a file_id and return a short-lived (5 min) pre-signed URL that accepts a multipart POST with **no auth header**. After uploading the bytes, pass the returned `file_id` in `attachments` on chamade_dm_chat or chamade_call_chat. **This is the correct pattern for sending any non-trivial local file.** Unlike `bytes_b64` (which forces the model to stream every base64 character through its own output token budget — 30–60s stall for a 100 KB image), curl reads the file directly from the shell and ships raw bytes to Chamade. The tool call itself stays tiny (~80-char URL), so the model output is instant even for 10 MB attachments. Flow: 1. chamade_file_upload_url(name='photo.png', mime='image/png') → {upload_url, file_id, expires_at} 2. Shell: curl -F 'file=@/tmp/photo.png' <upload_url> (no -H, no API key — the URL itself is the auth) 3. chamade_dm_chat(platform='nctalk', attachments=[{'file_id': '...'}]) The slot is single-use: once bytes land, further POSTs to the same URL return 404. If the 5 min window expires before upload, mint a fresh slot.
chamade_dm_typingSend a typing indicator on a DM conversation. Use this before composing a reply so the user sees you are working on it. Only works on platforms with 'typing' in capabilities (Discord, Teams, Telegram, NC Talk).
chamade_inboxCheck inbox for DM/group conversations across all platforms. Perspective: this tool operates from the `agent` identity configured on each platform. The human operator may also appear as a `peer` when they message their own agent (self-chat). Never assume 'you' means the operator; match sender handles against the agent/peer block. Three modes: 1. No params → snapshot of all active conversations with a last-message preview each. 2. platform=X → detail view: agent/peer identities + recent message history. 3. last_message_cursor=X → delta: only conversations with new messages since the cursor, grouped with their new messages. Use in a polling loop to avoid replaying history. **Call events in delta mode** (polling replacement for `claude/channel` push): the server also returns any pending `call_invite` / `call_state` / `call_transcript` events for this user. Track `call_event_cursor` alongside `last_message_cursor` — pass both back on every poll. An incoming call shows up as 'CALL INVITE' in the output; accept/refuse with `chamade_call_accept` / `chamade_call_refuse`. Transcripts stream in as `CALL ...: <speaker>: <text>` lines. Long polling (delta mode only): pass wait=<seconds> together with last_message_cursor to block until a new message or call event arrives, or the timeout elapses. Server caps wait at 55s so the request never exceeds reverse-proxy read timeouts. The call-event signal wakes the poll too — a ringing call won't sit unanswered for up to 55s. WhatsApp 24h window state: conversations expose `whatsapp_window` showing whether the window is open/closed and how many outbound messages are pending. Shown as `wa=open` / `wa=closed (2 pending)` next to each WhatsApp conv. File attachments: messages with attachments are shown with a nested `[kind] name SIZE → url` line per file. The URL is a Chamade-hosted endpoint you can GET directly with your API key (Authorization: Bearer chmd_…). Supported kinds: image, audio, video, document. To SEND files, pass them on `chamade_dm_chat` / `chamade_call_chat` via the `attachments` param — either upload once via `POST /api/files` and pass `file_id`, or inline via `url` or `bytes_b64`.
chamade_accountCheck account status: plan, credit/quota remaining, per-platform readiness, and the identity map (agent handle + operator handle per platform). Use this as your cold-start bootstrap: it returns last_message_cursor for the polling loop of chamade_inbox and anchors which handle on each platform is your agent vs the human operator.