# `ExUtcp.Config`
[🔗](https://github.com/universal-tool-calling-protocol/elixir-utcp/blob/main/lib/ex_utcp/config.ex#L1)

Configuration management for UTCP client.

Handles variable substitution, environment variable loading, and provider configuration.

# `get_variable`

```elixir
@spec get_variable(ExUtcp.Types.client_config(), String.t()) ::
  {:ok, String.t()} | {:error, ExUtcp.Types.variable_not_found()}
```

Gets a variable value from the configuration, checking in order:
1. Inline variables
2. Loaded variable sources
3. System environment variables

# `load_from_env_file`

```elixir
@spec load_from_env_file(String.t()) ::
  {:ok, %{required(String.t()) =&gt; String.t()}} | {:error, any()}
```

Loads variables from a .env file.

# `new`

```elixir
@spec new(keyword()) :: ExUtcp.Types.client_config()
```

Creates a new client configuration with default values.

# `substitute_variables`

```elixir
@spec substitute_variables(ExUtcp.Types.client_config(), any()) :: any()
```

Substitutes variables in a value using the pattern ${VAR} or $VAR.

---

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