Midway through a tools/call, a server determines that the user must confirm a charge before it can continue. The client declared elicitation. Which sequence follows under revision 2026-07-28?
Select an answer to reveal the explanation.
Short Explanation
In this revision the server doesn't phone you mid-call; it hands back a note saying 'need this first.' You get asked, and the client re-sends the call with your answer and a fresh id. The old server-initiated request is the trap.
Full Explanation
Revision 2026-07-28 introduced multi round-trip requests. When a server needs more input to finish tools/call, resources/read or prompts/get, it responds with an InputRequiredResult whose resultType is input_required and whose inputRequests map contains, here, an elicitation/create request; it may also include an opaque requestState. The client presents the elicitation to the user, collects an accept, decline or cancel response, and retries the original request with matching inputResponses and the echoed requestState. The retry MUST use a different JSON-RPC id, because the initial request and the retry are independent requests, and the server can complete the call from what the retry carries. Server-initiated elicitation/create requests describe earlier revisions; the specification calls removing them a breaking change, and servers must never send JSON-RPC requests. Streaming a question and taking an answer on the same request id also reflects the old pattern; on Streamable HTTP the response stream may carry only request-related notifications and the final response. Returning isError true asks the model, not the user, which bypasses human consent for a financial decision. Exam caveat: servers must not include an elicitation request unless the client declared that capability. Operational check: trace the exchange and confirm an input_required result, a user prompt, and a retry with inputResponses under a new id.