# `Raxol.AgentClientProtocol.Schema.ToolKind`
[🔗](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#L1)

Categories of tools that can be invoked. An open enum: the ACP schema
documents `"other"` as its explicit default, so an unrecognized wire
value decodes to `:other` rather than failing (no `String.to_atom/1` is
ever used -- every value is an explicit, whitelisted clause).

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

# `t`

```elixir
@type t() ::
  :read
  | :edit
  | :delete
  | :move
  | :search
  | :execute
  | :think
  | :fetch
  | :switch_mode
  | :other
```

# `decode`

```elixir
@spec decode(term()) :: t()
```

Total and infallible: any unrecognized wire value decodes to the documented default, `:other`.

# `default`

```elixir
@spec default() :: t()
```

# `default?`

```elixir
@spec default?(t()) :: boolean()
```

# `encode`

```elixir
@spec encode(t()) :: String.t()
```

---

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