<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_endpoint_w_server_list(endpoint_id):
 """ A helper for handling endpoint server list lookups correctly accounting for various endpoint types. - Raises click.UsageError when used on Shares - Returns (<get_endpoint_response>, "S3") for S3 endpoints - Returns (<get_endpoint_response>, <server_list_response>) for all other Endpoints """

    client = get_client()

    endpoint = client.get_endpoint(endpoint_id)

    if endpoint["host_endpoint_id"]:  # not GCS -- this is a share endpoint
        raise click.UsageError(
            dedent(
                u"""\
            {id} ({0}) is a share and does not have servers.

            To see details of the share, use
                globus endpoint show {id}

            To list the servers on the share's host endpoint, use
                globus endpoint server list {host_endpoint_id}
        """
            ).format(display_name_or_cname(endpoint), **endpoint.data)
        )

    if endpoint["s3_url"]:  # not GCS -- legacy S3 endpoint type
        return (endpoint, "S3")

    else:
        return (endpoint, client.endpoint_server_list(endpoint_id))