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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class McpServerName(str, enum.Enum):
    AFFINITY = "Affinity"
    AIRTABLE = "Airtable"
    ASANA = "Asana"
    ATTIO = "Attio"
    BOX = "Box"
    BRAVE_SEARCH = "Brave Search"
    CAL_COM = "Cal.com"
    CANVA = "Canva"
    CLICKUP = "ClickUp"
    CLOSE = "Close"
    CLOUDFLARE = "Cloudflare"
    COINBASE = "Coinbase"
    CONFLUENCE = "Confluence"
    DIALPAD = "Dialpad"
    DISCORD = "Discord"
    DOC2MARKDOWN = "Doc2markdown"
    DOCUSIGN = "DocuSign"
    DROPBOX = "Dropbox"
    ELEVEN_LABS = "ElevenLabs"
    EXA = "Exa"
    FATHOM = "Fathom"
    FIGMA = "Figma"
    FIREFLIES = "Fireflies"
    FIRECRAWL_DEEP_RESEARCH = "Firecrawl Deep Research"
    FIRECRAWL_WEB_SEARCH = "Firecrawl Web Search"
    FRESHDESK = "Freshdesk"
    GITHUB = "GitHub"
    GITLAB = "GitLab"
    GMAIL = "Gmail"
    GONG = "Gong"
    GOOGLE_CALENDAR = "Google Calendar"
    GOOGLE_DOCS = "Google Docs"
    GOOGLE_DRIVE = "Google Drive"
    GOOGLE_JOBS = "Google Jobs"
    GOOGLE_SHEETS = "Google Sheets"
    GOOGLE_FORMS = "Google Forms"
    GOOGLE_CLOUD = "Google Cloud"
    HACKER_NEWS = "Hacker News"
    HEYGEN = "Heygen"
    HUBSPOT = "HubSpot"
    JIRA = "Jira"
    KLAVIYO = "Klaviyo"
    KLAVIS_REPORT_GEN = "Klavis ReportGen"
    LINEAR = "Linear"
    LINKEDIN = "LinkedIn"
    MARKDOWN2DOC = "Markdown2doc"
    MEM0 = "Mem0"
    MICROSOFT_TEAMS = "Microsoft Teams"
    MIXPANEL = "Mixpanel"
    MONDAY = "Monday"
    MONEYBIRD = "Moneybird"
    MOTION = "Motion"
    NOTION = "Notion"
    ONEDRIVE = "OneDrive"
    OPENROUTER = "Openrouter"
    OUTLOOK_MAIL = "Outlook Mail"
    OUTLOOK_CALENDAR = "Outlook Calendar"
    PAGERDUTY = "PagerDuty"
    PIPEDRIVE = "Pipedrive"
    PLAI = "Plai"
    POSTGRES = "Postgres"
    POSTHOG = "PostHog"
    POSTMAN = "Postman"
    QUICKBOOKS = "QuickBooks"
    RESEND = "Resend"
    SALESFORCE = "Salesforce"
    SENDGRID = "SendGrid"
    SHOPIFY = "Shopify"
    SLACK = "Slack"
    SNOWFLAKE = "Snowflake"
    STRIPE = "Stripe"
    SUPABASE = "Supabase"
    TAVILY = "Tavily"
    VERCEL = "Vercel"
    WHATSAPP = "WhatsApp"
    WORDPRESS = "WordPress"
    YOUTUBE = "YouTube"
    ZENDESK = "Zendesk"
    SERVICE_NOW = "ServiceNow"

    def visit(
        self,
        affinity: typing.Callable[[], T_Result],
        airtable: typing.Callable[[], T_Result],
        asana: typing.Callable[[], T_Result],
        attio: typing.Callable[[], T_Result],
        box: typing.Callable[[], T_Result],
        brave_search: typing.Callable[[], T_Result],
        cal_com: typing.Callable[[], T_Result],
        canva: typing.Callable[[], T_Result],
        clickup: typing.Callable[[], T_Result],
        close: typing.Callable[[], T_Result],
        cloudflare: typing.Callable[[], T_Result],
        coinbase: typing.Callable[[], T_Result],
        confluence: typing.Callable[[], T_Result],
        dialpad: typing.Callable[[], T_Result],
        discord: typing.Callable[[], T_Result],
        doc2markdown: typing.Callable[[], T_Result],
        docusign: typing.Callable[[], T_Result],
        dropbox: typing.Callable[[], T_Result],
        eleven_labs: typing.Callable[[], T_Result],
        exa: typing.Callable[[], T_Result],
        fathom: typing.Callable[[], T_Result],
        figma: typing.Callable[[], T_Result],
        fireflies: typing.Callable[[], T_Result],
        firecrawl_deep_research: typing.Callable[[], T_Result],
        firecrawl_web_search: typing.Callable[[], T_Result],
        freshdesk: typing.Callable[[], T_Result],
        github: typing.Callable[[], T_Result],
        gitlab: typing.Callable[[], T_Result],
        gmail: typing.Callable[[], T_Result],
        gong: typing.Callable[[], T_Result],
        google_calendar: typing.Callable[[], T_Result],
        google_docs: typing.Callable[[], T_Result],
        google_drive: typing.Callable[[], T_Result],
        google_jobs: typing.Callable[[], T_Result],
        google_sheets: typing.Callable[[], T_Result],
        google_forms: typing.Callable[[], T_Result],
        google_cloud: typing.Callable[[], T_Result],
        hacker_news: typing.Callable[[], T_Result],
        heygen: typing.Callable[[], T_Result],
        hubspot: typing.Callable[[], T_Result],
        jira: typing.Callable[[], T_Result],
        klaviyo: typing.Callable[[], T_Result],
        klavis_report_gen: typing.Callable[[], T_Result],
        linear: typing.Callable[[], T_Result],
        linkedin: typing.Callable[[], T_Result],
        markdown2doc: typing.Callable[[], T_Result],
        mem0: typing.Callable[[], T_Result],
        microsoft_teams: typing.Callable[[], T_Result],
        mixpanel: typing.Callable[[], T_Result],
        monday: typing.Callable[[], T_Result],
        moneybird: typing.Callable[[], T_Result],
        motion: typing.Callable[[], T_Result],
        notion: typing.Callable[[], T_Result],
        onedrive: typing.Callable[[], T_Result],
        openrouter: typing.Callable[[], T_Result],
        outlook_mail: typing.Callable[[], T_Result],
        outlook_calendar: typing.Callable[[], T_Result],
        pagerduty: typing.Callable[[], T_Result],
        pipedrive: typing.Callable[[], T_Result],
        plai: typing.Callable[[], T_Result],
        postgres: typing.Callable[[], T_Result],
        posthog: typing.Callable[[], T_Result],
        postman: typing.Callable[[], T_Result],
        quickbooks: typing.Callable[[], T_Result],
        resend: typing.Callable[[], T_Result],
        salesforce: typing.Callable[[], T_Result],
        sendgrid: typing.Callable[[], T_Result],
        shopify: typing.Callable[[], T_Result],
        slack: typing.Callable[[], T_Result],
        snowflake: typing.Callable[[], T_Result],
        stripe: typing.Callable[[], T_Result],
        supabase: typing.Callable[[], T_Result],
        tavily: typing.Callable[[], T_Result],
        vercel: typing.Callable[[], T_Result],
        whatsapp: typing.Callable[[], T_Result],
        wordpress: typing.Callable[[], T_Result],
        youtube: typing.Callable[[], T_Result],
        zendesk: typing.Callable[[], T_Result],
        service_now: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is McpServerName.AFFINITY:
            return affinity()
        if self is McpServerName.AIRTABLE:
            return airtable()
        if self is McpServerName.ASANA:
            return asana()
        if self is McpServerName.ATTIO:
            return attio()
        if self is McpServerName.BOX:
            return box()
        if self is McpServerName.BRAVE_SEARCH:
            return brave_search()
        if self is McpServerName.CAL_COM:
            return cal_com()
        if self is McpServerName.CANVA:
            return canva()
        if self is McpServerName.CLICKUP:
            return clickup()
        if self is McpServerName.CLOSE:
            return close()
        if self is McpServerName.CLOUDFLARE:
            return cloudflare()
        if self is McpServerName.COINBASE:
            return coinbase()
        if self is McpServerName.CONFLUENCE:
            return confluence()
        if self is McpServerName.DIALPAD:
            return dialpad()
        if self is McpServerName.DISCORD:
            return discord()
        if self is McpServerName.DOC2MARKDOWN:
            return doc2markdown()
        if self is McpServerName.DOCUSIGN:
            return docusign()
        if self is McpServerName.DROPBOX:
            return dropbox()
        if self is McpServerName.ELEVEN_LABS:
            return eleven_labs()
        if self is McpServerName.EXA:
            return exa()
        if self is McpServerName.FATHOM:
            return fathom()
        if self is McpServerName.FIGMA:
            return figma()
        if self is McpServerName.FIREFLIES:
            return fireflies()
        if self is McpServerName.FIRECRAWL_DEEP_RESEARCH:
            return firecrawl_deep_research()
        if self is McpServerName.FIRECRAWL_WEB_SEARCH:
            return firecrawl_web_search()
        if self is McpServerName.FRESHDESK:
            return freshdesk()
        if self is McpServerName.GITHUB:
            return github()
        if self is McpServerName.GITLAB:
            return gitlab()
        if self is McpServerName.GMAIL:
            return gmail()
        if self is McpServerName.GONG:
            return gong()
        if self is McpServerName.GOOGLE_CALENDAR:
            return google_calendar()
        if self is McpServerName.GOOGLE_DOCS:
            return google_docs()
        if self is McpServerName.GOOGLE_DRIVE:
            return google_drive()
        if self is McpServerName.GOOGLE_JOBS:
            return google_jobs()
        if self is McpServerName.GOOGLE_SHEETS:
            return google_sheets()
        if self is McpServerName.GOOGLE_FORMS:
            return google_forms()
        if self is McpServerName.GOOGLE_CLOUD:
            return google_cloud()
        if self is McpServerName.HACKER_NEWS:
            return hacker_news()
        if self is McpServerName.HEYGEN:
            return heygen()
        if self is McpServerName.HUBSPOT:
            return hubspot()
        if self is McpServerName.JIRA:
            return jira()
        if self is McpServerName.KLAVIYO:
            return klaviyo()
        if self is McpServerName.KLAVIS_REPORT_GEN:
            return klavis_report_gen()
        if self is McpServerName.LINEAR:
            return linear()
        if self is McpServerName.LINKEDIN:
            return linkedin()
        if self is McpServerName.MARKDOWN2DOC:
            return markdown2doc()
        if self is McpServerName.MEM0:
            return mem0()
        if self is McpServerName.MICROSOFT_TEAMS:
            return microsoft_teams()
        if self is McpServerName.MIXPANEL:
            return mixpanel()
        if self is McpServerName.MONDAY:
            return monday()
        if self is McpServerName.MONEYBIRD:
            return moneybird()
        if self is McpServerName.MOTION:
            return motion()
        if self is McpServerName.NOTION:
            return notion()
        if self is McpServerName.ONEDRIVE:
            return onedrive()
        if self is McpServerName.OPENROUTER:
            return openrouter()
        if self is McpServerName.OUTLOOK_MAIL:
            return outlook_mail()
        if self is McpServerName.OUTLOOK_CALENDAR:
            return outlook_calendar()
        if self is McpServerName.PAGERDUTY:
            return pagerduty()
        if self is McpServerName.PIPEDRIVE:
            return pipedrive()
        if self is McpServerName.PLAI:
            return plai()
        if self is McpServerName.POSTGRES:
            return postgres()
        if self is McpServerName.POSTHOG:
            return posthog()
        if self is McpServerName.POSTMAN:
            return postman()
        if self is McpServerName.QUICKBOOKS:
            return quickbooks()
        if self is McpServerName.RESEND:
            return resend()
        if self is McpServerName.SALESFORCE:
            return salesforce()
        if self is McpServerName.SENDGRID:
            return sendgrid()
        if self is McpServerName.SHOPIFY:
            return shopify()
        if self is McpServerName.SLACK:
            return slack()
        if self is McpServerName.SNOWFLAKE:
            return snowflake()
        if self is McpServerName.STRIPE:
            return stripe()
        if self is McpServerName.SUPABASE:
            return supabase()
        if self is McpServerName.TAVILY:
            return tavily()
        if self is McpServerName.VERCEL:
            return vercel()
        if self is McpServerName.WHATSAPP:
            return whatsapp()
        if self is McpServerName.WORDPRESS:
            return wordpress()
        if self is McpServerName.YOUTUBE:
            return youtube()
        if self is McpServerName.ZENDESK:
            return zendesk()
        if self is McpServerName.SERVICE_NOW:
            return service_now()
