@@ -198,6 +198,10 @@ private JsonRpcResponse handleToolsCall(
198198 var operationName = req .getParams ().getMember ("name" ).asString ();
199199 var tool = tools .get (operationName );
200200
201+ if (tool == null ) {
202+ return createErrorResponse (req , "No such tool: " + operationName );
203+ }
204+
201205 // Check if this tool should be dispatched to a proxy
202206 if (tool .proxy () != null ) {
203207 // Forward the request to the proxy
@@ -360,16 +364,27 @@ private JsonRpcResponse createSuccessResponse(Document id, SerializableShape val
360364 }
361365
362366 private JsonRpcResponse createErrorResponse (JsonRpcRequest req , Exception exception ) {
367+ return createErrorResponse (req , exception , true ); //TODO change the default to false.
368+ }
369+
370+ private JsonRpcResponse createErrorResponse (JsonRpcRequest req , Exception exception , boolean sendStackTrace ) {
363371 String s ;
364- try (var sw = new StringWriter ();
365- var pw = new PrintWriter (sw )) {
366- exception .printStackTrace (pw );
367- s = sw .toString ().replace ("\n " , "| " );
368- } catch (Exception e ) {
369- LOG .error ("Error encoding response" , e );
370- throw new RuntimeException (e );
372+ if (sendStackTrace ) {
373+ try (var sw = new StringWriter ();
374+ var pw = new PrintWriter (sw )) {
375+ exception .printStackTrace (pw );
376+ s = sw .toString ().replace ("\n " , "| " );
377+ } catch (Exception e ) {
378+ LOG .error ("Error encoding response" , e );
379+ throw new RuntimeException (e );
380+ }
381+ } else {
382+ s = exception .getMessage ();
371383 }
384+ return createErrorResponse (req , s );
385+ }
372386
387+ private JsonRpcResponse createErrorResponse (JsonRpcRequest req , String s ) {
373388 var error = JsonRpcErrorResponse .builder ()
374389 .code (500 )
375390 .message (s )
0 commit comments