onSamplingRequest method
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();
};
}