# `Raxol.AgentClientProtocol.Schema.ToolCallContent`
[🔗](https://github.com/DROOdotFOO/raxol-agent/blob/raxol_agent_client_protocol-v0.1.0/packages/raxol_agent_client_protocol/lib/raxol/agent_client_protocol/schema/tool_call.ex#L313)

Content produced by a tool call: a tagged union discriminated by a
`"type"` wire key (`content` | `diff` | `terminal`).

Ported from the MIT `f1729/agent_client_protocol` (c) 2025 f1729; see NOTICE.md.

# `t`

```elixir
@type t() ::
  {:content, Raxol.AgentClientProtocol.Schema.ToolCallContentWrapper.t()}
  | {:diff, Raxol.AgentClientProtocol.Schema.Diff.t()}
  | {:terminal, Raxol.AgentClientProtocol.Schema.ToolCallTerminal.t()}
```

# `content`

```elixir
@spec content(Raxol.AgentClientProtocol.Schema.ToolCallContentWrapper.t()) :: t()
```

# `diff`

```elixir
@spec diff(Raxol.AgentClientProtocol.Schema.Diff.t()) :: t()
```

# `from_json`

```elixir
@spec from_json(term()) :: {:ok, t()} | {:error, term()}
```

Total: never raises. An unrecognized/missing `"type"`, or a variant body
that fails to decode, returns `{:error, _}`. Callers decoding a
`ToolCallContent` list (`ToolCall.content`, `ToolCallUpdateFields.content`)
skip items that error rather than failing the whole list.

# `terminal`

```elixir
@spec terminal(Raxol.AgentClientProtocol.Schema.ToolCallTerminal.t()) :: t()
```

# `to_json`

```elixir
@spec to_json(t()) :: map()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
