docs: def check_agency(
      feed: "Feed", *, as_df: bool = False, include_warnings: bool = False
  ) -> List:
      """
      Check that ``feed.agency`` follows the GTFS.
      Return a list of problems of the form described in
      :func:`check_table`;
      the list will be empty if no problems are found.
      """
      table = "agency"
      problems = []
  
      # Preliminary checks
      if feed.agency is None:
          problems.append(["error", "Missing table", table, []])
      else:
          f = feed.agency.copy()
          problems = check_for_required_columns(problems, table, f)
      if problems:
          return format_problems(problems, as_df=as_df)
  
      if include_warnings:
          problems = check_for_invalid_columns(problems, table, f)
  
      # Check service_id
      problems = check_column_id(
          problems, table, f, "agency_id", column_required=False
      )
  
      # Check agency_name
      problems = check_column(problems, table, f, "agency_name", valid_str)
  
      # Check agency_url
      problems = check_column(problems, table, f, "agency_url", valid_url)
  
      # Check agency_timezone
      problems = check_column(
          problems, table, f, "agency_timezone", valid_timezone
      )
  
      # Check agency_fare_url
      problems = check_column(
          problems, table, f, "agency_fare_url", valid_url, column_required=False
      )
  
      # Check agency_lang
      problems = check_column(
          problems, table, f, "agency_lang", valid_lang, column_required=False
      )
  
      # Check agency_phone
      problems = check_column(
          problems, table, f, "agency_phone", valid_str, column_required=False
      )
  
      # Check agency_email
      problems = check_column(
          problems, table, f, "agency_email", valid_email, column_required=False
      )
  
      return format_problems(problems, as_df=as_df)