@chamade/mcp-server 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -10
- package/dist/index.js +11 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -90,16 +90,18 @@ With channel mode, transcripts, messages, and incoming calls are pushed to the a
|
|
|
90
90
|
|
|
91
91
|
| Tool | Description |
|
|
92
92
|
|------|-------------|
|
|
93
|
-
| `
|
|
94
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
93
|
+
| `chamade_call_join` | Join a voice meeting (platform + meeting_url). |
|
|
94
|
+
| `chamade_call_say` | Speak text aloud via TTS in the meeting. |
|
|
95
|
+
| `chamade_call_chat` | Send a text chat message in the meeting. |
|
|
96
|
+
| `chamade_call_status` | Get call state and new transcript lines (delta pattern). |
|
|
97
|
+
| `chamade_call_accept` | Answer a ringing inbound call (SIP, etc.). |
|
|
98
|
+
| `chamade_call_refuse` | Refuse/reject a ringing inbound call. |
|
|
99
|
+
| `chamade_call_typing` | Send a typing indicator in meeting chat. |
|
|
100
|
+
| `chamade_call_leave` | Hang up and leave the meeting. |
|
|
101
|
+
| `chamade_call_list` | List all active calls. |
|
|
102
|
+
| `chamade_inbox` | Check DM conversations (Discord, Telegram, Teams, WhatsApp, Slack). |
|
|
103
|
+
| `chamade_dm_chat` | Send a DM message by platform. |
|
|
104
|
+
| `chamade_dm_typing` | Send a typing indicator in DM by platform. |
|
|
103
105
|
| `chamade_account` | Check account status, plan, credit/quota, and platform readiness. |
|
|
104
106
|
|
|
105
107
|
## Resources
|
package/dist/index.js
CHANGED
|
@@ -92,7 +92,7 @@ const CHANNEL_PREAMBLE = [
|
|
|
92
92
|
"Transcripts, messages, and calls are pushed to you in real-time.",
|
|
93
93
|
"Do NOT poll chamade_call_status in a loop — you will be notified automatically.",
|
|
94
94
|
"When you receive transcript lines, respond using chamade_call_say (TTS) or chamade_call_chat (text).",
|
|
95
|
-
"When you receive a message, reply using chamade_dm_chat.",
|
|
95
|
+
"When you receive a message, ALWAYS reply using chamade_dm_chat — even if the message is a command you act on (e.g. 'join meeting X'). A short acknowledgment is enough.",
|
|
96
96
|
"When you receive an incoming call, use chamade_call_accept to pick up.",
|
|
97
97
|
"You can still call chamade_call_status manually to catch up on missed transcript.",
|
|
98
98
|
"",
|
|
@@ -131,6 +131,7 @@ const BASE_INSTRUCTIONS = [
|
|
|
131
131
|
"2. Before composing a reply, use chamade_dm_typing to show the user you are working on it.",
|
|
132
132
|
"3. Use chamade_dm_chat to reply — specify the platform (e.g. 'teams', 'discord').",
|
|
133
133
|
"4. When a call_invite event has a call_id, use chamade_call_say/chamade_call_status on that call.",
|
|
134
|
+
"IMPORTANT: ALWAYS reply to every DM with chamade_dm_chat, even if the message is a command you act on (e.g. 'join meeting X'). A short acknowledgment ('Joining the meeting now') is enough. If you don't reply, the user sees a typing indicator for 60 seconds followed by a timeout error.",
|
|
134
135
|
"",
|
|
135
136
|
"## Capabilities",
|
|
136
137
|
"Each call and conversation returns a capabilities array. Meaning:",
|
|
@@ -797,13 +798,18 @@ function channelWatchInbox() {
|
|
|
797
798
|
platform: data.platform || "",
|
|
798
799
|
});
|
|
799
800
|
break;
|
|
800
|
-
case "call_invite":
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
801
|
+
case "call_invite": {
|
|
802
|
+
const callState = data.state || "ringing";
|
|
803
|
+
const callAction = callState === "active"
|
|
804
|
+
? "Call is already active."
|
|
805
|
+
: "Use chamade_call_accept to pick up, or chamade_call_refuse to reject.";
|
|
806
|
+
await channelPush(`Incoming call${data.caller ? ` from ${data.caller}` : ""} on ${data.platform || "sip"}. Call ID: ${data.call_id}. ${callAction}`, { type: "call_invite", call_id: data.call_id || "" });
|
|
807
|
+
// Auto-watch if already active (auto_answer)
|
|
808
|
+
if (callState === "active" && data.call_id) {
|
|
804
809
|
channelWatchCall(data.call_id);
|
|
805
810
|
}
|
|
806
811
|
break;
|
|
812
|
+
}
|
|
807
813
|
case "dm_started":
|
|
808
814
|
await channelPush(`New conversation from ${data.remote_name || "unknown"} on ${data.platform}.`, {
|
|
809
815
|
type: "dm_started",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chamade/mcp-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "MCP server for Chamade — voice gateway for AI agents. Join Discord, Teams, Meet, Telegram, SIP, Zoom meetings and interact via speech and text. Supports Claude Code channel mode for push events.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|