Generic wrapper for any function:
results, err := middleware.ToolCall(ctx, "web_search",
func() ([]Result, error) {
return searchService.Search(query)
},
middleware.WithToolType("search"),
)
Convenience wrappers for common patterns:
results, _ := middleware.SearchToolCall(ctx, "web_search", query, searchFn)
rows, _ := middleware.DatabaseToolCall(ctx, "user_query", sql, queryFn)
data, _ := middleware.APIToolCall(ctx, "weather_api", "GET", url, apiFn)