This documents the current behavior of HexChat's IRC URL support.
Described in psuedo ABNF:
url = scheme "://" location [ ":" port ] [ "/" channel [ "?" key ] ]
scheme = ("irc" / "ircs")
; ircs indicates use TLS
location = (hostname / network-name)
hostname = *CHAR
; Well its a DNS hostname...
port = *DIGIT
; default port is 6667 and 6697 for TLS
network-name = *CHAR
; Entry in hexchat's network list e.g. "freenode"
; this will override the the TLS/port options
; and it will disable autojoin and instead join
; specified channel/key only. (ascii case insensitive)
channel = [ "#" ] *CHAR
; If leading # is not present one will be prepended
key = *CHAR