async def METHOD_NAME(query_dict):
    """
    Given a query_dict of the form
    {
        query_kind:tl_query,
        aggregation_unit:agg_unit
        ...
        sub_param:{
            query_kind: sub_query...}
    }
    returns the scope triplets of the query in the form "agg_unit:tl_query:sub_query".
    Will always return "agg_unit:tl_query:tl_query"
    Parameters
    ----------
    query_dict : dict
        Query to build the list of scopes from
    Raises
    ------
    MissingQueryKindError
        if "query_kind" is missing from `query_dict`
    BadQueryError
        If something else is wrong with `query_dict`
    """
    try:
        if "query_kind" not in query_dict.keys():
            raise MissingQueryKindError
        tl_query_name = query_dict["query_kind"]
        query_list = grab_on_key_list(query_dict, ["query_kind"])
    except Exception:
        raise BadQueryError
    agg_unit = await get_agg_unit(query_dict)
    return [f"{agg_unit}:{tl_query_name}:{query_name}" for query_name in query_list]