ExMCP.Client.EraProbe (ex_mcp v1.0.0-rc.8)

Copy Markdown View Source

Performs the side-effect-free server/discover probe used to establish a modern MCP connection before any application request is sent.

The probe owns its short timeout and returns the post-probe transport state, allowing the connection manager to either settle on modern or make an explicit, policy-controlled legacy fallback decision.

Summary

Functions

Runs a bounded modern discovery probe over a connected transport.

Types

failure()

@type failure() ::
  {:invalid_probe_request, term()}
  | {:transport_error, term()}
  | {:probe_timeout, term()}
  | {:http_probe_rejected, map()}
  | {:json_rpc_error, map()}
  | {:unexpected_response, term()}
  | {:invalid_discover_result, term()}
  | {:no_mutually_supported_modern_version, map()}

result()

@type result() :: %{
  protocol_version: String.t(),
  server_info: map() | nil,
  server_capabilities: map(),
  discovery: map()
}

Functions

probe(transport_mod, transport_state, opts)

@spec probe(module(), term(), keyword()) ::
  {:ok, result(), term()} | {:error, failure(), term()}

Runs a bounded modern discovery probe over a connected transport.