# `Backplane.McpProtocol.Server.Modern.RequestContext`

Validated, request-local context for the stateless modern server path.

The protocol envelope remains separate from transport state. In particular,
the protocol version and client capabilities must be present in the body even
when equivalent HTTP headers are available.

# `t`

```elixir
@type t() :: %Backplane.McpProtocol.Server.Modern.RequestContext{
  assigns: map(),
  auth: term(),
  client_capabilities: map(),
  client_info: map() | nil,
  headers: %{optional(String.t()) =&gt; String.t()},
  input_responses: map() | nil,
  log_level: String.t() | nil,
  method: String.t(),
  profile: Backplane.McpProtocol.Protocol.Profile.t(),
  progress_token: String.t() | number() | nil,
  protocol_version: String.t(),
  remote_ip: :inet.ip_address() | nil,
  request: map(),
  request_id: String.t() | integer(),
  request_meta: map(),
  request_state: String.t() | nil,
  transport: atom()
}
```

# `build`

```elixir
@spec build(Backplane.McpProtocol.Protocol.Profile.t(), map(), map()) ::
  {:ok, t()} | {:error, Backplane.McpProtocol.MCP.Error.t()}
```

# `to_server_context`

```elixir
@spec to_server_context(t()) :: Backplane.McpProtocol.Server.Context.t()
```

---

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