A client's request _meta declares its capabilities with elicitation set to an empty object, {}, and no mode keys inside it. How should a server interpret that declaration?
Select an answer to reveal the explanation.
Short Explanation
An empty elicitation object is old-school shorthand, and the spec decodes it as "form mode only." So you can ask that client for a form, but you can't send it to a URL. The trap is reading {} as "anything goes."
Full Explanation
Clients that support elicitation declare the elicitation capability in the io.modelcontextprotocol/clientCapabilities field of each request's _meta, normally with form and url keys inside it. For backward compatibility, the specification says an empty elicitation object is equivalent to declaring form mode only. It also says clients declaring the capability must support at least one mode, and servers must not send elicitation requests in a mode the client did not declare. A server seeing {} may therefore return form-mode elicitation inside an InputRequiredResult but must not send URL mode. Reading {} as support for both modes fails because the backward-compatible meaning is explicitly form only; URL mode was added later and must be declared. Reading {} as no elicitation support fails because the presence of the key is the declaration, and the empty object maps to form. Reading it as URL only inverts the rule and misplaces the schema: requestedSchema belongs in each form request, not in the capability. Exam caveat: if a request genuinely needs a capability the client did not declare, the server returns MissingRequiredClientCapability (-32021) rather than guessing. Operational check: send a tools/call with elicitation set to {} and confirm the server only ever returns form-mode requests.