Hi everyone,
We’ve come across an interesting behavior while integrating a custom MCP server with ChatGPT, and we’re trying to understand whether this is expected or a bug.
From our investigation, it appears that the model is not always given the exact raw response returned by an MCP tool. Instead, for larger responses, ChatGPT may present the model with a reduced representation where some fields are omitted.
Here’s what we observed.
Setup
We have a custom MCP server. One of our tools, get_funnel_steps, returns a list of funnel steps. Each step includes a pageId field.
We’ve verified multiple times (using our server logs and direct MCP inspection) that the MCP server always returns pageId for every step.
Observed behavior
When ChatGPT calls get_funnel_steps on funnels with many steps, the model later claims that pageId is missing from the tool response and therefore cannot perform follow-up operations that require it.
However:
the raw MCP response does contain pageId;
if ChatGPT later calls get_funnel_step for a single step, it immediately sees pageId and successfully uses it.
This suggests that the MCP server is behaving correctly, but ChatGPT is not exposing the full tool response to the model.
What we found
By asking ChatGPT about its reasoning, it appears that the model is not always given the raw MCP response.
Instead, the connector seems to preprocess large tool outputs and may omit fields that it considers non-essential before passing the result to the model.
In other words:
MCP server → returns complete JSON (including pageId)
ChatGPT connector → appears to produce a reduced representation
LLM reasons over the reduced representation instead of the original response
This only seems to happen with larger listing responses. Smaller responses (such as get_funnel_step) work correctly.
Questions
- Is this field filtering behavior expected?
- Is there any documentation describing which fields may be omitted before the model receives a tool response?
- Is there a way for MCP servers to mark fields as mandatory so they are never removed?
- Should clients avoid relying on IDs contained in list responses because they may not always be visible to the model?
From our perspective this is difficult to reason about because:
the MCP server returns correct data;
MCP Inspector shows the correct data;
but ChatGPT behaves as if some fields never existed.
We can provide a shared ChatGPT conversation demonstrating the behavior if that would help.
Thanks!