A server rejects a client's resources/read and the JSON-RPC error carries a data.requiredCapabilities field listing elicitation. On HTTP the status is 400. Which error is this, and what does it tell the client?
Select an answer to reveal the explanation.
Short Explanation
The server's telling you this request needs a client feature, like answering questions, that you never declared. That's -32021, and requiredCapabilities names exactly what's missing. The trap is confusing it with a version or header problem.
Full Explanation
In the stateless 2026-07-28 protocol, every request declares the client's capabilities in io.modelcontextprotocol/clientCapabilities, and a server must not rely on capabilities the client has not declared. When processing a request requires such a capability, the server must return MissingRequiredClientCapabilityError, code -32021, with data.requiredCapabilities listing what is missing; on HTTP the status must be 400 Bad Request. Here the server needs elicitation to complete the read but the client did not declare it, so the client must either declare the capability on a retry, if it can support it, or accept that the request cannot proceed. UnsupportedProtocolVersion, -32022, concerns the version string and carries a supported list, not capabilities. HeaderMismatch, -32020, arises when mirrored HTTP headers such as Mcp-Method or Mcp-Name disagree with the body; capabilities are not mirrored into headers. clientInfo is optional, so omitting it is not an error, and a missing required field yields a plain -32602 without requiredCapabilities. Exam caveat: declaring a capability is a promise to honor it; do not add elicitation just to bypass the error. Operational check: confirm the client's error handler reads requiredCapabilities and reports the missing feature to the user or developer.