An MCP tool definition as advertised by tools/list.
tools/list
annotations accepts snake_case atom keys (:read_only_hint, :destructive_hint, :idempotent_hint, :open_world_hint, :title) and renders them in the camelCase wire format.
annotations
:read_only_hint
:destructive_hint
:idempotent_hint
:open_world_hint
:title
@type t() :: %Noizu.MCP.Types.Tool{ annotations: map() | keyword() | nil, description: String.t() | nil, icons: [map()] | nil, input_schema: map(), meta: map() | nil, name: String.t(), output_schema: map() | nil, title: String.t() | nil }
@spec from_map(map()) :: t()
@spec to_map(t()) :: map()