# `ExMCP.ACP.Agent.Transport`
[🔗](https://github.com/azmaveth/ex_mcp/blob/v1.0.0/lib/ex_mcp/acp/agent/transport.ex#L1)

Transport behaviour for ACP agent runtimes.

This mirrors the pull-based `ExMCP.Transport` shape, but is named from the
agent side because stdio agents read from this process' stdin/stdout instead
of spawning a child process.

# `message`

```elixir
@type message() :: String.t()
```

# `opts`

```elixir
@type opts() :: keyword()
```

# `state`

```elixir
@type state() :: any()
```

# `close`

```elixir
@callback close(state()) :: :ok
```

# `connect`

```elixir
@callback connect(opts()) :: {:ok, state()} | {:error, any()}
```

# `connected?`
*optional* 

```elixir
@callback connected?(state()) :: boolean()
```

# `receive_message`

```elixir
@callback receive_message(state()) :: {:ok, message(), state()} | {:error, any()}
```

# `send_message`

```elixir
@callback send_message(message(), state()) :: {:ok, state()} | {:error, any()}
```

---

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