# `ExMCP.Server.Discover`
[🔗](https://github.com/azmaveth/ex_mcp/blob/v1.4.0/lib/ex_mcp/server/discover.ex#L1)

Assembles and validates `server/discover` results.

Discovery is the modern, stateless replacement for initialize-time server
metadata. The protocol mode controls the advertised preference order; rc.6
defaults servers to dual-era, modern-preferred discovery.

# `parse_error`

```elixir
@type parse_error() :: :result_must_be_object | {:invalid_discover_field, String.t()}
```

# `build`

```elixir
@spec build(map(), map(), keyword()) :: map()
```

Builds the body of a modern discovery result.

# `parse_result`

```elixir
@spec parse_result(term()) :: {:ok, map()} | {:error, parse_error()}
```

Validates and extracts a discovery result received by a client.

---

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