@@ -94,11 +94,11 @@ type serializedCheckResults struct {
9494// newToolResult creates a CallToolResult for the passed object handling any json marshaling errors
9595func newToolResult (obj any , err error ) (* mcp.CallToolResult , error ) {
9696 if err != nil {
97- return nil , err
97+ return mcp . NewToolResultErrorFromErr ( "operation failed" , err ), nil
9898 }
9999 data , err := json .Marshal (obj )
100100 if err != nil {
101- return nil , err
101+ return mcp . NewToolResultErrorFromErr ( "failed to marshal response" , err ), nil
102102 }
103103 return mcp .NewToolResultText (string (data )), nil
104104}
@@ -215,7 +215,7 @@ var rootCmd = &cobra.Command{
215215 func (ctx context.Context , req mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
216216 resp , err := client .ListServices (nil )
217217 if err != nil {
218- return nil , err
218+ return mcp . NewToolResultErrorFromErr ( "failed to list components" , err ), nil
219219 }
220220 var components []serializedComponent
221221 for _ , node := range resp .Nodes {
@@ -250,7 +250,7 @@ var rootCmd = &cobra.Command{
250250 func (ctx context.Context , req mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
251251 resp , err := client .ListInfrastructure (nil )
252252 if err != nil {
253- return nil , err
253+ return mcp . NewToolResultErrorFromErr ( "failed to list infrastructure" , err ), nil
254254 }
255255 var infrastructureResources []serializedInfrastructureResource
256256 for _ , node := range resp .Nodes {
@@ -320,11 +320,11 @@ var rootCmd = &cobra.Command{
320320 func (ctx context.Context , req mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
321321 resourceTypeString , err := req .RequireString ("resourceType" )
322322 if err != nil {
323- return nil , err
323+ return mcp . NewToolResultError ( "resourceType parameter is required" ), nil
324324 }
325325 identifier , err := req .RequireString ("identifier" )
326326 if err != nil {
327- return nil , err
327+ return mcp . NewToolResultError ( "identifier parameter is required" ), nil
328328 }
329329 resourceType := opslevel .AliasOwnerTypeEnum (resourceTypeString )
330330 resp , err := client .GetAliasableResource (resourceType , identifier )
@@ -376,7 +376,7 @@ var rootCmd = &cobra.Command{
376376 func (ctx context.Context , req mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
377377 id , err := req .RequireString ("id" )
378378 if err != nil {
379- return nil , err
379+ return mcp . NewToolResultError ( "id parameter is required" ), nil
380380 }
381381 resp , err := client .GetDocument (opslevel .ID (id ))
382382 return newToolResult (resp , err )
@@ -399,7 +399,7 @@ var rootCmd = &cobra.Command{
399399 func (ctx context.Context , req mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
400400 serviceId , err := req .RequireString ("serviceId" )
401401 if err != nil {
402- return nil , err
402+ return mcp . NewToolResultError ( "serviceId parameter is required" ), nil
403403 }
404404 service := opslevel.Service {
405405 ServiceId : opslevel.ServiceId {
@@ -428,7 +428,7 @@ var rootCmd = &cobra.Command{
428428 func (ctx context.Context , req mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
429429 resp , err := client .ListChecks (nil )
430430 if err != nil {
431- return nil , err
431+ return mcp . NewToolResultErrorFromErr ( "failed to list checks" , err ), nil
432432 }
433433 var checks []serializedCheck
434434 for _ , node := range resp .Nodes {
@@ -463,19 +463,19 @@ var rootCmd = &cobra.Command{
463463 func (ctx context.Context , req mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
464464 serviceId , err := req .RequireString ("serviceId" )
465465 if err != nil {
466- return nil , err
466+ return mcp . NewToolResultError ( "serviceId parameter is required" ), nil
467467 }
468468 service , err := client .GetService (serviceId )
469469 if err != nil {
470- return nil , err
470+ return mcp . NewToolResultErrorFromErr ( "failed to get service" , err ), nil
471471 }
472472 if service .Id == "" {
473- return nil , fmt .Errorf ("service with id %s not found" , serviceId )
473+ return mcp . NewToolResultError ( fmt .Sprintf ("service with id %s not found" , serviceId )), nil
474474 }
475475
476476 stats , err := service .GetServiceStats (client )
477477 if err != nil {
478- return nil , err
478+ return mcp . NewToolResultErrorFromErr ( "failed to get service stats" , err ), nil
479479 }
480480
481481 result := serializedCheckResults {
0 commit comments