@@ -327,6 +327,55 @@ func (*GTTOrdersTool) Handler(manager *kc.Manager) server.ToolHandlerFunc {
327
327
}
328
328
}
329
329
330
+ type OrderTradesTool struct {}
331
+
332
+ func (* OrderTradesTool ) Tool () mcp.Tool {
333
+ return mcp .NewTool ("get_order_trades" ,
334
+ mcp .WithDescription ("Get trades for a specific order" ),
335
+ mcp .WithString ("order_id" ,
336
+ mcp .Description ("ID of the order to fetch trades for" ),
337
+ mcp .Required (),
338
+ ),
339
+ )
340
+ }
341
+
342
+ func (* OrderTradesTool ) Handler (manager * kc.Manager ) server.ToolHandlerFunc {
343
+ return func (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
344
+ sess := server .ClientSessionFromContext (ctx )
345
+
346
+ kc , err := manager .GetSession (sess .SessionID ())
347
+ if err != nil {
348
+ log .Println ("error getting session" , err )
349
+ return nil , err
350
+ }
351
+
352
+ args := request .GetArguments ()
353
+ orderID := assertString (args ["order_id" ])
354
+
355
+ orderTrades , err := kc .Kite .Client .GetOrderTrades (orderID )
356
+ if err != nil {
357
+ log .Println ("error getting order trades" , err )
358
+ return nil , err
359
+ }
360
+
361
+ v , err := json .Marshal (orderTrades )
362
+ if err != nil {
363
+ log .Println ("error marshalling order trades" , err )
364
+ return nil , err
365
+ }
366
+
367
+ orderTradesJSON := string (v )
368
+ return & mcp.CallToolResult {
369
+ Content : []mcp.Content {
370
+ mcp.TextContent {
371
+ Type : "text" ,
372
+ Text : orderTradesJSON ,
373
+ },
374
+ },
375
+ }, nil
376
+ }
377
+ }
378
+
330
379
type OrderHistoryTool struct {}
331
380
332
381
func (* OrderHistoryTool ) Tool () mcp.Tool {
0 commit comments