ACP tool_call events for MCP tools contain no tool identity (title, rawInput empty)

, ,

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Summary: Custom ACP clients (voice interfaces, TUI wrappers, IDE integrations)
cannot display meaningful tool call information to users. Built-in tools
(Read, Shell, Grep, etc.) get proper titles and kinds, but MCP tools are
all shown as identical “MCP: tool” entries with no way to distinguish them.

Details:

When Cursor’s ACP agent invokes MCP server tools, the session/update
notifications for tool_call and tool_call_update contain no information
identifying which tool was called.
Observed behavior:
The tool_call event arrives as:
{
“sessionUpdate”: “tool_call”,
“toolCallId”: “call_4RpX0tBz…”,
“title”: “MCP: tool”,
“kind”: “other”,
“status”: “pending”,
“rawInput”: {}
}
Subsequent tool_call_update events contain only status changes and
rawOutput: {"success": true}. No update ever includes the tool name,
server name, input parameters, or any other identifying information.

Steps to Reproduce

  1. Start cursor-agent acp with an MCP server configured
  2. Create a session with mcpServers in session/new
  3. Send a prompt that triggers MCP tool calls
  4. Observe session/update notifications: tool_call has
    title: "MCP: tool", kind: "other", rawInput: {}

Expected Behavior

Per the ACP spec, rawInput should contain “the raw input parameters sent
to the tool” and title should be a “human-readable title describing what
the tool is doing.” For MCP tools, this should include:

  • title: the MCP tool name or title (e.g. “org: list_cherry_pick_candidates”)
  • rawInput: the actual parameters passed to tools/call
  • kind: mapped from MCP annotations.readOnlyHint (e.g. read vs other)
    The MCP tool definition includes name, title, description, and
    annotations fields. Cursor has access to all of these from the
    tools/list response. None of them are forwarded into ACP events.

Operating System

Windows 10/11

Version Information

  • Cursor CLI agent (latest as of 2026-03-25)
  • MCP SDK 1.27.1 with registerTool() using title and annotations
  • ACP protocolVersion 1
  • Windows 10, stdio transport

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hi @Lukas_Parsons,

Thanks for the detailed report. I’ve confirmed this is a server-side bug in the ACP agent, not a client-side rendering issue. The tool_call event is emitted before tool arguments are fully parsed, and a deduplication guard prevents it from being re-emitted once the full data is available. This affects all tool types, but MCP tools are worst-affected since their initial state is completely empty.

I reproduced this locally with a custom ACP client: even built-in tools show rawInput: {} despite completing successfully with actual parameters.

A related report exists at Cursor ACP raw input is missing. This is a known issue and our team is investigating.

may be this will help while we wait for the fix https://www.npmjs.com/package/cursor-acp-enriched