-record(tool, { name :: binary(), description :: binary(), schema :: starflow@schema:schema(), output :: starflow@schema:schema(), apply :: fun((gleam@dynamic:dynamic_()) -> {ok, starflow@tool:tool_result()} | {error, list(gleam@dynamic:decode_error())}) }).