# `ExMCP.FeatureFlags`
[🔗](https://github.com/azmaveth/ex_mcp/blob/v1.0.0/lib/ex_mcp/feature_flags.ex#L1)

Feature flag system for controlling rollout of new MCP features.

This module provides a centralized way to check if specific features
are enabled, allowing for gradual rollout and easy rollback.

# `all`

```elixir
@spec all() :: map()
```

Get all feature flags and their current status.

## Examples

    iex> ExMCP.FeatureFlags.all()
    %{
      protocol_version_header: false,
      structured_output: false,
      oauth2_auth: false,
      tasks: false
    }

# `enabled?`

```elixir
@spec enabled?(atom()) :: boolean()
```

Check if a specific feature is enabled.

## Features

* `:protocol_version_header` - Enforce MCP-Protocol-Version header validation
* `:structured_output` - Enable structured tool output with schema validation
* `:oauth2_auth` - Enable OAuth 2.1 authorization
* `:tasks` - Deprecated no-op retained for 1.x source compatibility. Modern
  Tasks use extension negotiation; the legacy capability is version-defined.

## Examples

    iex> ExMCP.FeatureFlags.enabled?(:protocol_version_header)
    false

    iex> Application.put_env(:ex_mcp, :protocol_version_required, true)
    iex> ExMCP.FeatureFlags.enabled?(:protocol_version_header)
    true

---

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