onSamplingRequest method

void onSamplingRequest(
  1. Future<CreateMessageResult> handler(
    1. CreateMessageRequestParams request
    )
)

Register a handler for server-initiated sampling/createMessage requests. The driver app (Claude Desktop / Claude Code / a vibe-style IDE) fulfils the prompt with its own LLM and returns the spec CreateMessageResult (role, content, model, optional stopReason).

The client answers only when it declared sampling in its ClientCapabilities (ClientCapabilities(sampling: true)); otherwise the request is refused, as the specification requires.

Implementation

void onSamplingRequest(
  Future<CreateMessageResult> Function(CreateMessageRequestParams request) handler,
) {
  _requestHandlers['sampling/createMessage'] = (params) async {
    final result = await handler(CreateMessageRequestParams.fromJson(params));
    return result.toJson();
  };
}