From ec0e42b03413d7b8af7daa61f0e200fb7dd106a1 Mon Sep 17 00:00:00 2001 From: Minwoo Kim <158142406+IT-Gentleman@users.noreply.github.com> Date: Fri, 6 Mar 2026 19:23:09 +0900 Subject: [PATCH] fix: correct misleading send_message tool description for scheduled tasks (#729) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The send_message tool description incorrectly stated that a scheduled task's final output is not delivered to the user, instructing agents to use the MCP tool for any communication. In reality, task-scheduler.ts unconditionally forwards the agent's result to the user via a streaming output callback (deps.sendMessage), which is a direct call to the channel layer — entirely separate from the MCP tool path. This caused agents following the description to call send_message explicitly, resulting in duplicate messages: once via MCP and once via the native streaming callback. - Remove the incorrect note from the send_message tool description - Fix the misleading comment at task-scheduler.ts which attributed result delivery to the MCP tool rather than the streaming callback --- container/agent-runner/src/ipc-mcp-stdio.ts | 2 +- src/task-scheduler.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/container/agent-runner/src/ipc-mcp-stdio.ts b/container/agent-runner/src/ipc-mcp-stdio.ts index d95abb6..9de0138 100644 --- a/container/agent-runner/src/ipc-mcp-stdio.ts +++ b/container/agent-runner/src/ipc-mcp-stdio.ts @@ -41,7 +41,7 @@ const server = new McpServer({ server.tool( 'send_message', - "Send a message to the user or group immediately while you're still running. Use this for progress updates or to send multiple messages. You can call this multiple times. Note: when running as a scheduled task, your final output is NOT sent to the user — use this tool if you need to communicate with the user or group.", + "Send a message to the user or group immediately while you're still running. Use this for progress updates or to send multiple messages. You can call this multiple times.", { text: z.string().describe('The message text to send'), sender: z.string().optional().describe('Your role/identity name (e.g. "Researcher"). When set, messages appear from a dedicated bot in Telegram.'), diff --git a/src/task-scheduler.ts b/src/task-scheduler.ts index 8c533c7..f216e12 100644 --- a/src/task-scheduler.ts +++ b/src/task-scheduler.ts @@ -203,7 +203,7 @@ async function runTask( if (output.status === 'error') { error = output.error || 'Unknown error'; } else if (output.result) { - // Messages are sent via MCP tool (IPC), result text is just logged + // Result was already forwarded to the user via the streaming callback above result = output.result; }