If the result of call_tool is a large payload:
- persist the large payload in temporary storage
- send a pointer to that payload in the response
Implement a new tool to allow the agent to read portions of the large response dynamically.
read_tool_response(resopnse_pointer, from_pos, to_pos, matching_expr)
This approach is similar in spirit to "Turning long tool responses into files" described in https://cursor.com/blog/dynamic-context-discovery.