def METHOD_NAME(json_dict, grounder=None, with_coords=False):
    """Return INDRA Agents grounded to biological ontologies extracted
    from Eidos JSON-LD.
    Parameters
    ----------
    json_dict : dict
        The JSON-LD dict to be processed.
    grounder : Optional[function]
        A function which takes a text and an optional context as argument
        and returns a dict of groundings.
    with_coords : Optional[bool]
        If True, the Agents will have their coordinates returned along
        with them in a tuple. Default: False
    Returns
    -------
    list of indra.statements.Agent
        A list of INDRA Agents which are derived from concepts extracted
        by Eidos from text.
    """
    from .bio_processor import get_agent_bio
    if not json_dict:
        return []
    ep = EidosBioProcessor(json_dict, grounder=grounder)
    ep.extract_causal_relations()
    ep.extract_events()
    events = ep.get_all_events()
    agents = []
    for event in events:
        context = event.evidence[0].text
        agent = get_agent_bio(event.concept, context=context,
                              grounder=grounder)
        if with_coords:
            prov = event.evidence[0].annotations['provenance']
            pos = prov[0]['documentCharPositions']
            start_coord, end_coord = pos[0]['start'], pos[0]['end']
            # We make sure this is a proper coordinate, in which case
            # we add one to ensure consistency with coordinate boundaries
            # from other INDRA sources
            if isinstance(end_coord, int):
                end_coord += 1
            agents.append((agent, (start_coord, end_coord)))
        else:
            agents.append(agent)
    return agents