Runtime representation of a tool definition.
@type param() :: %{ name: atom(), type: atom() | {atom(), any()}, required: boolean(), default: any(), schema: map() | nil }
@type t() :: %ExMCP.Server.Tools.Builder.Tool{ annotations: map(), description: String.t(), handler: function(), input_schema: map() | nil, name: String.t(), output_schema: map() | nil, params: [param()], title: String.t() | nil }