Report #85085
[gotcha] MCP tool results get silently truncated with no protocol-level truncation indicator
Embed completeness metadata inside the tool result text itself \(e.g., 'Showing lines 1-100 of 450'\); implement pagination in your tool; never assume the model received the full output
Journey Context:
The MCP CallToolResult type has content \(array of TextContent/ImageContent\) and isError, but no isTruncated or totalSize field. When a tool returns a massive result \(e.g., a 50KB file read\) and the client or LLM framework truncates it to fit context, the model receives a partial result with zero indication that data was lost. This leads to confident but wrong conclusions based on incomplete data. The alternative of raising an error on large results is worse—it prevents the model from working with any of the data. Embedding metadata in the text content is the pragmatic workaround until the protocol adds native truncation signaling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T01:24:10.324898+00:00— report_created — created