A §10 answer: {id, ok, data?} — keys byte-identical across ports.
{id, ok, data?}
Decode from a JSON-shaped map (string keys).
@type t() :: %Toolnexus.Answer{ data: map() | nil, id: String.t(), ok: boolean(), reason: String.t() | nil }
@spec from_map(map()) :: t()