let esummary_url ?retstart ?retmax db ids =
  if List.length ids > 200 
  then raise (Invalid_argument "Entrez.esummary_url: cannot fetch more than 200 summaries") ;
  summary_base_url ^ "?" ^ parameters Option.([
    Some ("db", id_of_database db) ;
    Some ("id"String.concat ~sep:"," ids) ;
    Some ("version""2.0") ;
    map ~f:(fun i -> "retstart", string_of_int i) retstart ;
    map ~f:(fun i -> "retmax", string_of_int i) retmax ;
  ])