sig
  type t
  val text : Server.Syntax.t -> Markdown.text
  val publish :
    page:Server.Doc.page ->
    name:string ->
    descr:Markdown.text ->
    synopsis:Server.Syntax.t ->
    ?details:Markdown.elements ->
    ?generated:(unit -> Markdown.elements) -> unit -> Server.Syntax.t
  val unit : Server.Syntax.t
  val any : Server.Syntax.t
  val int : Server.Syntax.t
  val ident : Server.Syntax.t
  val string : Server.Syntax.t
  val number : Server.Syntax.t
  val boolean : Server.Syntax.t
  val tag : string -> Server.Syntax.t
  val array : Server.Syntax.t -> Server.Syntax.t
  val tuple : Server.Syntax.t list -> Server.Syntax.t
  val union : Server.Syntax.t list -> Server.Syntax.t
  val option : Server.Syntax.t -> Server.Syntax.t
  val record : (string * Server.Syntax.t) list -> Server.Syntax.t
  val data : string -> Markdown.href -> Server.Syntax.t
  type tag = {
    tag_name : string;
    tag_label : Markdown.text;
    tag_descr : Markdown.text;
  }
  val define : Markdown.text -> Markdown.text -> Markdown.block_element
  val tags : ?title:string -> Server.Syntax.tag list -> Markdown.element
  type field = {
    fd_name : string;
    fd_syntax : Server.Syntax.t;
    fd_descr : Markdown.text;
  }
  val fields : ?title:string -> Server.Syntax.field list -> Markdown.element
end