A client calls a tool on a server that cannot complete the call without asking the user a question, but the request's clientCapabilities in _meta does not declare elicitation. What should the server return?
Select an answer to reveal the explanation.
Short Explanation
The server can't ask you a question through a client that never said it could relay one. So it returns -32021 and lists what's missing. Sending the elicitation anyway is the trap.
Full Explanation
In the stateless 2026-07-28 revision, a server learns what the client can do only from io.modelcontextprotocol/clientCapabilities in each request's _meta. The specification says a server MUST NOT rely on capabilities the client has not declared, and if processing a request requires a capability the client did not include, the server MUST return a MissingRequiredClientCapabilityError, code -32021, whose data.requiredCapabilities lists the missing capabilities. On HTTP, the response status MUST be 400 Bad Request. Returning an InputRequiredResult with an elicitation request violates the multi round-trip rule that servers MUST NOT send input requests the client has not declared support for. A tool execution error with isError true is meant for problems the model can correct by adjusting arguments, such as a bad date; the model cannot grant the client a capability, so this misroutes the failure. UnsupportedProtocolVersion, code -32022, applies when the server does not implement the requested protocol version, and nothing in the scenario concerns versions; falling back to initialize would also be a legacy path. Exam caveat: -32021 sits in the -32020 to -32099 sub-range reserved for codes defined by the MCP specification. Operational check: send the call without elicitation in clientCapabilities and confirm the server answers with -32021 naming elicitation in requiredCapabilities, and with HTTP 400 on Streamable HTTP.