# `ExAthena.Capabilities`
[🔗](https://github.com/udin-io/ex_athena/blob/v0.7.1/lib/ex_athena/capabilities.ex#L1)

Provider-capability map shape.

Each provider declares what it can do so the agent loop (shipping in Phase 2)
can choose the right tool-call protocol and fall back gracefully when a
provider lies about its capabilities.

All keys are optional; missing keys are treated as `false` / `nil`.

# `t`

```elixir
@type t() :: %{
  optional(:native_tool_calls) =&gt; boolean(),
  optional(:streaming) =&gt; boolean(),
  optional(:json_mode) =&gt; boolean(),
  optional(:structured_output) =&gt; boolean(),
  optional(:max_tokens) =&gt; pos_integer(),
  optional(:supports_resume) =&gt; boolean(),
  optional(:supports_system_prompt) =&gt; boolean(),
  optional(:supports_temperature) =&gt; boolean()
}
```

---

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