///|
/// Fetch discovery without discarding cache hints, instructions or open metadata.
pub async fn MCPClient::discover_result(
  self : MCPClient,
) -> @types.DiscoverResult {
  let request = build_discover_request(
    self.next_request_id(),
    self.request_meta(),
  )
  let response = match self.backend {
    Modern => self.send_request(request)
    Legacy(legacy) =>
      legacy.send_raw(
        apply_legacy_meta_to_request(request, build_legacy_meta()),
      )
  }
  let value = parse_jsonrpc_response(response)
  let result = @types.DiscoverResult::from_json(value)
  self.server_capabilities = Some(result.capabilities)
  self.server_info = parse_server_info_from_result(value)
  result
}