# This file was auto-generated by Fern from our API Definition.

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class SandboxMcpServer(str, enum.Enum):
    """
    Supported MCP servers for sandboxing
    """

    JIRA = "jira"
    GITHUB = "github"
    SALESFORCE = "salesforce"
    HUBSPOT = "hubspot"
    NOTION = "notion"
    AIRTABLE = "airtable"
    LINEAR = "linear"
    ASANA = "asana"
    GOOGLE_SHEETS = "google_sheets"
    GOOGLE_DRIVE = "google_drive"
    GOOGLE_DOCS = "google_docs"
    GMAIL = "gmail"
    GOOGLE_CALENDAR = "google_calendar"
    GOOGLE_FORMS = "google_forms"
    CLICKUP = "clickup"
    CLOSE = "close"
    MONDAY = "monday"
    MOTION = "motion"
    ONEDRIVE = "onedrive"
    MICROSOFT_TEAMS = "microsoft_teams"
    OUTLOOK_MAIL = "outlook_mail"
    CAL_COM = "cal.com"
    QUICKBOOKS = "quickbooks"
    MONEYBIRD = "moneybird"
    DROPBOX = "dropbox"
    SHOPIFY = "shopify"
    WOOCOMMERCE = "woocommerce"
    OUTLOOK_CALENDAR = "outlook_calendar"
    RESEND = "resend"
    WORDPRESS = "wordpress"
    MEM0 = "mem0"
    SUPABASE = "supabase"
    SLACK = "slack"
    CONFLUENCE = "confluence"
    DISCORD = "discord"
    SNOWFLAKE = "snowflake"
    GOOGLE_CLOUD = "google_cloud"
    POSTGRES = "postgres"
    MONGODB = "mongodb"
    LOCAL_DEV = "local_dev"
    LOCALMEMORY = "localmemory"
    ARXIV_LATEX = "arxiv_latex"
    CALCULATOR = "calculator"
    CLINICALTRIALSGOV = "clinicaltrialsgov"
    MET_MUSEUM = "met_museum"
    OPEN_LIBRARY = "open_library"
    OSM = "osm"
    PUBMED = "pubmed"
    US_WEATHER = "us_weather"
    WHOIS = "whois"
    WIKIPEDIA = "wikipedia"
    WEATHER = "weather"
    TWELVEDATA = "twelvedata"
    NATIONAL_PARKS = "national_parks"
    LARA_TRANSLATE = "lara_translate"
    E2B = "e2b"
    CONTEXT7 = "context7"
    ALCHEMY = "alchemy"
    WEIGHTS_AND_BIASES = "weights_and_biases"

    def visit(
        self,
        jira: typing.Callable[[], T_Result],
        github: typing.Callable[[], T_Result],
        salesforce: typing.Callable[[], T_Result],
        hubspot: typing.Callable[[], T_Result],
        notion: typing.Callable[[], T_Result],
        airtable: typing.Callable[[], T_Result],
        linear: typing.Callable[[], T_Result],
        asana: typing.Callable[[], T_Result],
        google_sheets: typing.Callable[[], T_Result],
        google_drive: typing.Callable[[], T_Result],
        google_docs: typing.Callable[[], T_Result],
        gmail: typing.Callable[[], T_Result],
        google_calendar: typing.Callable[[], T_Result],
        google_forms: typing.Callable[[], T_Result],
        clickup: typing.Callable[[], T_Result],
        close: typing.Callable[[], T_Result],
        monday: typing.Callable[[], T_Result],
        motion: typing.Callable[[], T_Result],
        onedrive: typing.Callable[[], T_Result],
        microsoft_teams: typing.Callable[[], T_Result],
        outlook_mail: typing.Callable[[], T_Result],
        cal_com: typing.Callable[[], T_Result],
        quickbooks: typing.Callable[[], T_Result],
        moneybird: typing.Callable[[], T_Result],
        dropbox: typing.Callable[[], T_Result],
        shopify: typing.Callable[[], T_Result],
        woocommerce: typing.Callable[[], T_Result],
        outlook_calendar: typing.Callable[[], T_Result],
        resend: typing.Callable[[], T_Result],
        wordpress: typing.Callable[[], T_Result],
        mem0: typing.Callable[[], T_Result],
        supabase: typing.Callable[[], T_Result],
        slack: typing.Callable[[], T_Result],
        confluence: typing.Callable[[], T_Result],
        discord: typing.Callable[[], T_Result],
        snowflake: typing.Callable[[], T_Result],
        google_cloud: typing.Callable[[], T_Result],
        postgres: typing.Callable[[], T_Result],
        mongodb: typing.Callable[[], T_Result],
        local_dev: typing.Callable[[], T_Result],
        localmemory: typing.Callable[[], T_Result],
        arxiv_latex: typing.Callable[[], T_Result],
        calculator: typing.Callable[[], T_Result],
        clinicaltrialsgov: typing.Callable[[], T_Result],
        met_museum: typing.Callable[[], T_Result],
        open_library: typing.Callable[[], T_Result],
        osm: typing.Callable[[], T_Result],
        pubmed: typing.Callable[[], T_Result],
        us_weather: typing.Callable[[], T_Result],
        whois: typing.Callable[[], T_Result],
        wikipedia: typing.Callable[[], T_Result],
        weather: typing.Callable[[], T_Result],
        twelvedata: typing.Callable[[], T_Result],
        national_parks: typing.Callable[[], T_Result],
        lara_translate: typing.Callable[[], T_Result],
        e2b: typing.Callable[[], T_Result],
        context7: typing.Callable[[], T_Result],
        alchemy: typing.Callable[[], T_Result],
        weights_and_biases: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is SandboxMcpServer.JIRA:
            return jira()
        if self is SandboxMcpServer.GITHUB:
            return github()
        if self is SandboxMcpServer.SALESFORCE:
            return salesforce()
        if self is SandboxMcpServer.HUBSPOT:
            return hubspot()
        if self is SandboxMcpServer.NOTION:
            return notion()
        if self is SandboxMcpServer.AIRTABLE:
            return airtable()
        if self is SandboxMcpServer.LINEAR:
            return linear()
        if self is SandboxMcpServer.ASANA:
            return asana()
        if self is SandboxMcpServer.GOOGLE_SHEETS:
            return google_sheets()
        if self is SandboxMcpServer.GOOGLE_DRIVE:
            return google_drive()
        if self is SandboxMcpServer.GOOGLE_DOCS:
            return google_docs()
        if self is SandboxMcpServer.GMAIL:
            return gmail()
        if self is SandboxMcpServer.GOOGLE_CALENDAR:
            return google_calendar()
        if self is SandboxMcpServer.GOOGLE_FORMS:
            return google_forms()
        if self is SandboxMcpServer.CLICKUP:
            return clickup()
        if self is SandboxMcpServer.CLOSE:
            return close()
        if self is SandboxMcpServer.MONDAY:
            return monday()
        if self is SandboxMcpServer.MOTION:
            return motion()
        if self is SandboxMcpServer.ONEDRIVE:
            return onedrive()
        if self is SandboxMcpServer.MICROSOFT_TEAMS:
            return microsoft_teams()
        if self is SandboxMcpServer.OUTLOOK_MAIL:
            return outlook_mail()
        if self is SandboxMcpServer.CAL_COM:
            return cal_com()
        if self is SandboxMcpServer.QUICKBOOKS:
            return quickbooks()
        if self is SandboxMcpServer.MONEYBIRD:
            return moneybird()
        if self is SandboxMcpServer.DROPBOX:
            return dropbox()
        if self is SandboxMcpServer.SHOPIFY:
            return shopify()
        if self is SandboxMcpServer.WOOCOMMERCE:
            return woocommerce()
        if self is SandboxMcpServer.OUTLOOK_CALENDAR:
            return outlook_calendar()
        if self is SandboxMcpServer.RESEND:
            return resend()
        if self is SandboxMcpServer.WORDPRESS:
            return wordpress()
        if self is SandboxMcpServer.MEM0:
            return mem0()
        if self is SandboxMcpServer.SUPABASE:
            return supabase()
        if self is SandboxMcpServer.SLACK:
            return slack()
        if self is SandboxMcpServer.CONFLUENCE:
            return confluence()
        if self is SandboxMcpServer.DISCORD:
            return discord()
        if self is SandboxMcpServer.SNOWFLAKE:
            return snowflake()
        if self is SandboxMcpServer.GOOGLE_CLOUD:
            return google_cloud()
        if self is SandboxMcpServer.POSTGRES:
            return postgres()
        if self is SandboxMcpServer.MONGODB:
            return mongodb()
        if self is SandboxMcpServer.LOCAL_DEV:
            return local_dev()
        if self is SandboxMcpServer.LOCALMEMORY:
            return localmemory()
        if self is SandboxMcpServer.ARXIV_LATEX:
            return arxiv_latex()
        if self is SandboxMcpServer.CALCULATOR:
            return calculator()
        if self is SandboxMcpServer.CLINICALTRIALSGOV:
            return clinicaltrialsgov()
        if self is SandboxMcpServer.MET_MUSEUM:
            return met_museum()
        if self is SandboxMcpServer.OPEN_LIBRARY:
            return open_library()
        if self is SandboxMcpServer.OSM:
            return osm()
        if self is SandboxMcpServer.PUBMED:
            return pubmed()
        if self is SandboxMcpServer.US_WEATHER:
            return us_weather()
        if self is SandboxMcpServer.WHOIS:
            return whois()
        if self is SandboxMcpServer.WIKIPEDIA:
            return wikipedia()
        if self is SandboxMcpServer.WEATHER:
            return weather()
        if self is SandboxMcpServer.TWELVEDATA:
            return twelvedata()
        if self is SandboxMcpServer.NATIONAL_PARKS:
            return national_parks()
        if self is SandboxMcpServer.LARA_TRANSLATE:
            return lara_translate()
        if self is SandboxMcpServer.E2B:
            return e2b()
        if self is SandboxMcpServer.CONTEXT7:
            return context7()
        if self is SandboxMcpServer.ALCHEMY:
            return alchemy()
        if self is SandboxMcpServer.WEIGHTS_AND_BIASES:
            return weights_and_biases()
