package tools import "context" type Tool interface { Name() string Description() string Parameters() map[string]interface{} Execute(ctx context.Context, args map[string]interface{}) *ToolResult } // ContextualTool is an optional interface that tools can implement // to receive the current message context (channel, chatID) type ContextualTool interface { Tool SetContext(channel, chatID string) } func ToolToSchema(tool Tool) map[string]interface{} { return map[string]interface{}{ "type": "function", "function": map[string]interface{}{ "name": tool.Name(), "description": tool.Description(), "parameters": tool.Parameters(), }, } }