requestClientElicitation method
Server-initiated request: ask the connected client to elicit input
from the user (spec 2025-06-18 elicitation/create).
params follows the spec ElicitRequest.params shape:
message (string) + requestedSchema (restricted JSON Schema —
flat object, primitive properties only).
Returns the spec ElicitResult map: action (accept /
decline / cancel) plus content when accepted.
Client must advertise the elicitation capability.
Implementation
Future<Map<String, dynamic>> requestClientElicitation(
String sessionId,
Map<String, dynamic> params, {
Duration timeout = const Duration(seconds: 120),
}) async {
final session = _sessions[sessionId];
if (session == null) {
throw StateError('Unknown sessionId: $sessionId');
}
final clientHasElicitation = session.capabilities?['elicitation'] != null;
if (!clientHasElicitation) {
throw McpError(
'Client does not advertise the `elicitation` capability',
code: ErrorCode.methodNotFound,
);
}
final result = await _sendRequestToClient(
sessionId, 'elicitation/create', params, timeout: timeout);
return result is Map<String, dynamic>
? result
: Map<String, dynamic>.from(result as Map);
}