CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Chamade

chamade-io/mcp-server
15 toolsauthSTDIO, HTTPregistry active
Summary

Bridges AI agents into real meetings and DMs across Discord, Teams, Meet, Slack, Zoom, Telegram, WhatsApp, Nextcloud Talk, and SIP. You get tools to join calls, speak via TTS, send chat messages, read transcripts, and handle DMs with file attachments. The recommended path is hosted STT/TTS with your own ElevenLabs, Deepgram, OpenAI, or Cartesia key. If you already run a voice pipeline, Chamade exposes raw PCM over WebSocket and handles transport. File uploads work through pre-signed URLs to keep tool calls small. Push events for transcripts and incoming messages work in Claude Code with the channel flag, otherwise poll the inbox and call status tools. Currently free during early access.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

15 tools
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 alter...4 params

Join 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 alter...

Parameters* required
platformvalue
agent_namestring
default: AI Agent
meeting_urlstring
transcriptsboolean
default: false
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.1 params

Answer 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.

Parameters* required
call_idstring
chamade_call_refuseRefuse (reject) a ringing inbound call. The call is ended and the caller hears a disconnect.1 params

Refuse (reject) a ringing inbound call. The call is ended and the caller hears a disconnect.

Parameters* required
call_idstring
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 We...2 params

Speak 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 We...

Parameters* required
textstring
call_idstring
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 with...1 params

Cancel 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 with...

Parameters* required
call_idstring
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 — i...4 params

Send 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 — i...

Parameters* required
textstring
default:
call_idstring
attachmentsvalue
sender_namevalue
chamade_call_typingSend a typing indicator in the call's chat. Only works on platforms with 'typing' in capabilities.1 params

Send a typing indicator in the call's chat. Only works on platforms with 'typing' in capabilities.

Parameters* required
call_idstring
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.1 params

Get 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.

Parameters* required
call_idstring
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 time...1 params

Terminate 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 time...

Parameters* required
call_idstring
chamade_call_listList all active calls for the current user.

List all active calls for the current user.

No parameter schema in public metadata yet.

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_...4 params

Send 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_...

Parameters* required
textstring
default:
platformstring
attachmentsvalue
keep_typingboolean
default: false
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 a...2 params

Reserve 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 a...

Parameters* required
mimestring
default: application/octet-stream
namestring
default: file
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).1 params

Send 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).

Parameters* required
platformstring
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 operat...5 params

Check 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 operat...

Parameters* required
waitvalue
limitinteger
default: 20
platformvalue
call_event_cursorvalue
last_message_cursorvalue
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...

Check 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...

No parameter schema in public metadata yet.

@chamade/mcp-server

npm version npm downloads License: MIT

MCP (Model Context Protocol) server for Chamade — a voice and chat gateway that lets your AI agent join meetings and DMs on Discord, Microsoft Teams, Google Meet, Telegram, SIP, Zoom, Nextcloud Talk, Slack, and WhatsApp.

The recommended voice path is hosted STT/TTS with bring-your-own-key. Drop your own ElevenLabs / Deepgram / OpenAI / Cartesia API key in your dashboard once — Chamade runs the full speech pipeline on its side using that key. Transcripts flow in as call_transcript events, chamade_call_say speaks into the meeting. Free on Chamade's side; you only pay your provider. Your agent stays fully text-driven.

Already have a voice pipeline you want to keep (OpenAI Realtime, LiveKit Agents, Pipecat, Deepgram Voice Agent, a manual cascade)? Chamade also exposes the call's raw-PCM audio as a bidirectional WebSocket — BYO audio, Chamade transports, you run the speech layer. Either mode, same MCP tools for control.

File attachments work out of the box on DMs and meeting chat for Discord, Telegram, Slack, WhatsApp (incl. voice notes), and Nextcloud Talk. Use chamade_file_upload_url to mint a pre-signed no-auth upload URL, then pass the returned file_id in attachments on chamade_dm_chat or chamade_call_chat. Inbound files arrive on chamade_inbox as Chamade-signed URLs — your agent can curl them with no extra auth. Teams + Meet support is code-ready but gated until the respective platform certifications complete.

Chamade is currently in early access: free, no subscription, no quota.

v4: hosted MCP + thin stdio shim

The Chamade MCP server is now hosted at https://mcp.chamade.io/mcp/ and speaks the Streamable HTTP transport. That's the single source of truth — every tool, every resource, every push event lives there.

  • If your MCP client supports Streamable HTTP (Claude Desktop recent, Claude Code, Cursor, Windsurf, …), configure it directly against the hosted endpoint. You don't need this npm package.
  • If your MCP client is stdio-only, install this package. Since v3 it's a ~160-line wrapper that spawns mcp-remote under the hood to bridge stdio to the hosted HTTP endpoint. Same tools, same push events, same latency. Zero drift because there is no parallel stdio implementation.

What changed in v4

v4 is a server-side wire-shape change picked up automatically by the shim. Headline items, full detail in docs/AGENTS.md:

  • Channels are now Agents. Per-bearer scoping is unchanged; the noun is agent everywhere on the wire and in tool descriptions.
  • account_id is the canonical join key. Used identically in chamade_dm_chat, chamade_call_join, event payloads, and reply XML tag attributes.
  • Event payload v2. data carries account_id + from + from_name (sender_* fields removed) and a pre-stuffed agent_context.{accounts, active_calls} snapshot so the agent always knows what it's on without an extra round-trip.
  • Explicit-target XML tags. Reply XML can now address conversations / calls outside the current reply context (<dm platform=…>, <call_say call_id=…>, …) for cross-target initiation.
  • Auto-MCP attachment. Providers with native MCP-as-tool support (OpenAI Responses, Anthropic Managed Agents, Foundry) receive the Chamade MCP server pre-injected with a per-agent bearer.

Earlier versions of this package (v2.x and below) shipped a full native stdio server that implemented the 13 tools locally in TypeScript against Chamade's REST API. v3+ replaces that with a shim — please upgrade to avoid maintaining two surfaces that slowly diverge.

Quick start

Option A — HTTP direct (preferred)

If your client speaks Streamable HTTP, skip this package entirely:

{
  "mcpServers": {
    "chamade": {
      "type": "http",
      "url": "https://mcp.chamade.io/mcp/",
      "headers": {
        "Authorization": "Bearer chmd_..."
      }
    }
  }
}

Option B — stdio shim (this package)

For stdio-only clients:

{
  "mcpServers": {
    "chamade": {
      "command": "npx",
      "args": ["-y", "@chamade/mcp-server@3"],
      "env": {
        "CHAMADE_API_KEY": "chmd_..."
      }
    }
  }
}

CHAMADE_API_KEY is required. Get a real one at https://chamade.io/dashboard → API keys and paste the full chmd_… value (≥ 40 chars after the prefix). If the env var is missing, empty, or still contains a placeholder like chmd_..., the shim refuses to start instead of silently falling back to OAuth — that fallback path loops on refresh-and-revoke and is not a viable auth method for this server.

Configuration

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows). Use Option A or B above.

Claude Code

.mcp.json at the root of your project. Use Option A (HTTP direct) for the best experience.

For real-time push events (transcripts, incoming DMs, ringing calls, WhatsApp dm_delivered flush), launch Claude Code with the channel flag every time:

claude --dangerously-load-development-channels server:chamade --continue

The flag is a per-launch client-side opt-in mandated by Claude Code for MCP channels not yet on the Anthropic allowlist — it's not dangerous, it's just the standard opt-in for experimental channels during the research preview. The server name after server: must match the key in your .mcp.json. Without the flag, tools still work but push events are silently ignored — you have to poll chamade_inbox and chamade_call_status to see new activity.

Cursor / Windsurf / OpenClaw

Same format. Path varies by client: .cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, ~/.openclaw/config.json. Use Option A if the client supports HTTP, otherwise Option B.

Tools

ToolDescription
chamade_call_joinJoin a voice meeting (platform + meeting_url).
chamade_call_saySpeak text aloud via TTS in the meeting.
chamade_call_chatSend a text chat message in the meeting. Optional attachments: [{file_id} | {url} | {bytes_b64, name, mime}] to send files along with the text; text becomes the caption when both are set. 25 MB cap per attachment.
chamade_call_statusGet call state and new transcript lines (delta pattern).
chamade_call_acceptAnswer a ringing inbound call (SIP, etc.).
chamade_call_refuseRefuse/reject a ringing inbound call.
chamade_call_typingSend a typing indicator in meeting chat.
chamade_call_leaveHang up and leave the meeting.
chamade_call_listList all active calls.
chamade_inboxCheck DM conversations (Discord, Telegram, Teams, WhatsApp, Slack, NC Talk). Shows WhatsApp 24h window state inline. Inbound file attachments arrive as attachments[] on each message, with Chamade-signed URLs.
chamade_dm_chatSend a DM message by platform. Optional attachments: [{file_id} | {url} | {bytes_b64, name, mime}] to send files; text becomes the caption. On WhatsApp outside the 24h window, returns 202 queued and auto-fires a re-engagement template.
chamade_dm_typingSend a typing indicator in DM by platform.
chamade_file_upload_urlMint a short-lived (5 min) pre-signed upload URL. Your shell / agent curl -F file=@path <url> with no auth header (URL itself is the auth), then pass the returned file_id in attachments: [{file_id}] on a subsequent send. Recommended path for any non-trivial local file — a shell-streamed upload keeps the tool call tiny instead of forcing every base64 character through the model's output budget.
chamade_accountCheck account status, plan, credit/quota, and per-platform readiness (incl. a files bool per platform).

Resources

URI templateDescription
chamade://calls/{call_id}/transcriptLive transcript. Each read returns only new lines since the last read (delta pattern). Channel-mode clients also receive push notifications for every new line.

Channel mode (push events)

Channel mode pushes DM messages, incoming SIP calls, transcript lines, call state changes, and WhatsApp dm_delivered flush events directly into the agent's context — no polling.

Server side — nothing to configure. The hosted Chamade MCP server always declares the experimental.claude/channel capability during the initialize handshake. The v2.x --channel arg / CHAMADE_CHANNEL=1 env var are gone.

Client side — Claude Code needs a per-launch flag. Claude Code only processes notifications/claude/channel from MCP servers you've explicitly opted in:

claude --dangerously-load-development-channels server:chamade --continue

Required every launch. Without it, Chamade tools still work but push events are silently dropped client-side — the agent has to poll chamade_inbox and chamade_call_status to see new activity.

Other MCP clients (Claude Desktop, Cursor, Windsurf) currently do not have a channel receiver and will silently ignore push notifications. They still work in polling mode via chamade_inbox with last_message_cursor + optional wait for long-polling.

Environment variables (shim only)

Only the stdio shim uses these. Direct HTTP config has everything in JSON.

VariableRequiredDefaultDescription
CHAMADE_API_KEYYes—API key (chmd_*, ≥ 40 chars of entropy) from chamade.io/dashboard. The shim validates the shape at startup and exits 1 on placeholders or missing values; there is no OAuth fallback.
CHAMADE_URLNohttps://chamade.ioChamade instance URL. The shim derives the MCP endpoint automatically: https://chamade.io → https://mcp.chamade.io/mcp/, https://dev.chamade.io → https://mcp.dev.chamade.io/mcp/.
CHAMADE_MCP_URLNo—Explicit MCP endpoint override. Skip unless you're running a custom proxy.

The v2.x --channel CLI flag is silently accepted for backwards-compat, but it's a no-op — channel mode is always on in v3.

Supported platforms

  • Discord — voice channels (shared bot or bring your own), text, files (send + receive, 25 MB)
  • Microsoft Teams — voice meetings + text DM, requires OAuth connection on dashboard. Files code-ready, gated behind AppSource cert.
  • Google Meet — voice (audio_in) + chat text, requires OAuth connection on dashboard (see note below). Files code-ready, gated behind Google OAuth verification.
  • Telegram — DM text + files (send + receive). No voice.
  • Zoom — voice + meeting chat, pass meeting URL (pending Zoom Marketplace approval — tester access on request). No files.
  • SIP / Phone — voice only, pass phone number or SIP URI. No files.
  • Nextcloud Talk — voice + text + files (send on any addon version, receive needs addon ≥ 2.4.0)
  • WhatsApp — DM text + files (send + receive, incl. voice notes as raw audio). No voice calls.

⚠️ Google Meet voice — beta limitation. Real-time audio capture on Meet relies on Google's Meet Media API, currently in Developer Preview. Every meeting participant must be individually enrolled — if anyone isn't, audio capture fails. Calendar integration and in-meeting chat work normally for everyone. For production voice use cases, prefer Teams, Discord, Nextcloud Talk, or SIP.

How it works

Agent (Claude Desktop, Cursor, …)
  │ MCP (Streamable HTTP, Authorization: Bearer chmd_*)
  ▼
mcp.chamade.io                       (hosted by Chamade)
  │
  ▼
Chamade API                           (chamade.io)
  │
  ▼
Maquisard bridge                      (transports audio; forwards to your
                                       STT/TTS provider when BYOK preset set)
  │
  ▼
Discord / Teams / Meet / …

With Option B (stdio shim), the client doesn't speak HTTP; the shim sits in between as a transport adapter:

Agent (stdio-only client)
  │ stdio JSON-RPC
  ▼
@chamade/mcp-server@3                 (this package, ~160 LOC)
  │ spawns
  ▼
mcp-remote                            (local subprocess)
  │ Streamable HTTP, Bearer chmd_*
  ▼
mcp.chamade.io                        (hosted)

Development

npm install
npm run dev     # runs with tsx (hot reload, src/index.ts)
npm run build   # compiles to dist/
npm test        # unit tests for deriveMcpUrl + buildRemoteArgs

The shim itself is tiny (see src/index.ts). Full MCP tool behavior is tested in the parent Chamade repo under tests/e2e/test_mcp_http.py, which drives the hosted server directly — that's the source of truth for tool semantics.

Documentation

  • MCP server docs — setup for every major client
  • Push mode docs — how real-time push events work (stateful sessions)
  • Agents — bearer × platform scoping (one agent per key / OAuth client)
  • Full API reference — every tool, every endpoint, LLM-formatted
  • Setup guide — step-by-step onboarding for agents

Issues & feedback

  • Bug or feature request: open an issue
  • Direct contact: contact@nafis.io
  • In-app: every Chamade dashboard has a "Send feedback" button

License

MIT — see LICENSE.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Categories
Communication & Messaging
Registryactive
Package@chamade/mcp-server
TransportSTDIO, HTTP
AuthRequired
UpdatedJun 4, 2026
View on GitHub

Related Communication & Messaging MCP Servers

View all →
Microsoft 365 Teams

io.github.mindstone/mcp-server-microsoft-teams

Microsoft 365 Teams via Graph: list chats, read/send messages, list teams/channels, presence.
8
Outlook Email

com.mintmcp/outlook-email

A MCP server for Outlook email that lets you search, read, and draft emails and replies.
8
Resend Email MCP

helbertparanhos/resend-email-mcp

Complete Resend email MCP: full API coverage + debug layer (deliverability, DNS, bounces).
Email Mcp

marlinjai/email-mcp

Unified email MCP server for Gmail, Outlook, iCloud, and IMAP with batch operations
13
Email (IMAP/SMTP)

io.github.mindstone/mcp-server-email-imap

Email IMAP/SMTP MCP server: iCloud, Gmail, Yahoo, Outlook, and custom IMAP providers
8
HTML Email Playbook

io.github.osamahassouna/email-playbook-mcp

Teaches AI to write HTML email that renders in Outlook, Gmail, and Apple Mail. 19 rules, 6 comps.