import type { SuperagentConnector } from '../../types'; function simpleIcon(slug: string, color: string) { return `https://cdn.simpleicons.org/${slug}/${color.replace('#', '')}`; } export const SUPERAGENT_CONNECTOR_CATALOG: SuperagentConnector[] = [ { id: 'salesforce', name: 'Salesforce', subtitle: 'Automate and sync CRM records.', description: 'Connect with Salesforce to manage leads, opportunities, and customer data.', popularity: 22, category: 'CRM', exampleScopes: ['api', 'chatter_api'], iconUrl: simpleIcon('salesforce', '#00A1E0'), iconFallbackLabel: 'SF', }, { id: 'slack', name: 'Slack User', subtitle: 'Send messages and manage Slack as a user.', description: 'Act on behalf of a Slack user: send messages, manage channels, and interact with your workspace as yourself.', popularity: 14, category: 'Communication', exampleScopes: ['channels:read', 'chat:write'], iconUrl: simpleIcon('slack', '#4A154B'), iconFallbackLabel: 'SL', }, { id: 'slackbot', name: 'Slack Bot', subtitle: 'Post as a branded bot in your Slack workspace.', description: 'Post to channels as a bot with a custom name and icon. Respond to app mentions, use slash commands, and automate bot-centric workflows.', popularity: 10, category: 'Communication', exampleScopes: ['chat:write', 'chat:write.public', 'chat:write.customize'], iconUrl: simpleIcon('slack', '#4A154B'), iconFallbackLabel: 'SL', }, { id: 'notion', name: 'Notion', subtitle: 'Organize and sync knowledge or project data.', description: 'Create, update, and manage pages, databases, and content in your Notion workspace.', popularity: 11, category: 'Productivity', exampleScopes: [], iconUrl: simpleIcon('notion', '#000000'), iconFallbackLabel: 'NO', }, { id: 'googlecalendar', name: 'Google Calendar', subtitle: 'Manage your schedule and calendar events.', description: 'Create, update, and manage events and schedules in your Google Calendar.', popularity: 2, category: 'Productivity', exampleScopes: ['https://www.googleapis.com/auth/calendar.readonly', 'https://www.googleapis.com/auth/calendar.events'], supportsReadOnly: true, accessModes: { readOnly: ['https://www.googleapis.com/auth/calendar.readonly'], fullAccess: ['https://www.googleapis.com/auth/calendar.readonly', 'https://www.googleapis.com/auth/calendar.events'], }, iconUrl: simpleIcon('googlecalendar', '#4285F4'), iconFallbackLabel: 'GC', }, { id: 'googledrive', name: 'Google Drive', subtitle: 'Export and back up app-generated files.', description: 'Upload and save files created by your app to Google Drive.', popularity: 4, category: 'Productivity', exampleScopes: ['https://www.googleapis.com/auth/drive.file', 'https://www.googleapis.com/auth/drive.readonly'], iconUrl: simpleIcon('googledrive', '#4285F4'), iconFallbackLabel: 'GD', }, { id: 'gmail', name: 'Gmail', subtitle: 'Automate email sending and inbox management.', description: 'Send, read, and manage emails programmatically with Gmail.', popularity: 1, category: 'Communication', exampleScopes: ['https://www.googleapis.com/auth/gmail.readonly', 'https://www.googleapis.com/auth/gmail.send'], supportsReadOnly: true, accessModes: { readOnly: ['https://www.googleapis.com/auth/gmail.readonly'], fullAccess: ['https://www.googleapis.com/auth/gmail.readonly', 'https://www.googleapis.com/auth/gmail.send'], }, iconUrl: simpleIcon('gmail', '#EA4335'), iconFallbackLabel: 'GM', }, { id: 'googlesheets', name: 'Google Sheets', subtitle: 'Sync and manage spreadsheet data.', description: 'Read, write, and update data in your Google Sheets spreadsheets.', popularity: 3, category: 'Productivity', exampleScopes: ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/spreadsheets.readonly'], supportsReadOnly: true, accessModes: { readOnly: ['https://www.googleapis.com/auth/spreadsheets.readonly'], fullAccess: ['https://www.googleapis.com/auth/spreadsheets'], }, iconUrl: simpleIcon('googlesheets', '#34A853'), iconFallbackLabel: 'GS', }, { id: 'googleslides', name: 'Google Slides', subtitle: 'Generate and manage presentations.', description: 'Create and edit presentations in Google Slides.', popularity: 13, category: 'Productivity', exampleScopes: ['https://www.googleapis.com/auth/presentations', 'https://www.googleapis.com/auth/presentations.readonly'], supportsReadOnly: true, accessModes: { readOnly: ['https://www.googleapis.com/auth/presentations.readonly'], fullAccess: ['https://www.googleapis.com/auth/presentations'], }, iconUrl: simpleIcon('googleslides', '#F9AB00'), iconFallbackLabel: 'GS', }, { id: 'googledocs', name: 'Google Docs', subtitle: 'Manage and automate document creation.', description: 'Create, read, and edit documents in Google Docs.', popularity: 7, category: 'Productivity', exampleScopes: ['https://www.googleapis.com/auth/documents', 'https://www.googleapis.com/auth/documents.readonly'], supportsReadOnly: true, accessModes: { readOnly: ['https://www.googleapis.com/auth/documents.readonly'], fullAccess: ['https://www.googleapis.com/auth/documents'], }, iconUrl: simpleIcon('googledocs', '#4285F4'), iconFallbackLabel: 'GD', }, { id: 'googlebigquery', name: 'Google BigQuery', subtitle: 'Query and sync analytics data.', description: 'Run SQL queries and analyze data in your BigQuery data warehouse.', popularity: 17, category: 'Data & Analytics', iconUrl: simpleIcon('googlebigquery', '#669DF6'), iconFallbackLabel: 'BQ', }, { id: 'googletasks', name: 'Google Tasks', subtitle: 'Manage to-do lists and tasks.', description: 'Create, read, update, and manage tasks and task lists in Google Tasks.', popularity: 36, category: 'Productivity', exampleScopes: ['https://www.googleapis.com/auth/tasks'], supportsReadOnly: true, accessModes: { readOnly: ['https://www.googleapis.com/auth/tasks.readonly'], fullAccess: ['https://www.googleapis.com/auth/tasks'], }, iconUrl: simpleIcon('googletasks', '#2684FC'), iconFallbackLabel: 'GT', }, { id: 'googlemeet', name: 'Google Meet', subtitle: 'Video conferences and meetings.', description: 'Create, manage, and join Google Meet video conferences and meetings.', popularity: 37, category: 'Communication', iconUrl: simpleIcon('googlemeet', '#00897B'), iconFallbackLabel: 'GM', }, { id: 'hubspot', name: 'HubSpot', subtitle: 'Sync CRM data and automate marketing.', description: 'Connect with HubSpot to manage contacts, deals, and marketing automation.', popularity: 12, category: 'CRM', exampleScopes: ['cms.domains.read', 'cms.domains.write'], iconUrl: simpleIcon('hubspot', '#FF7A59'), iconFallbackLabel: 'HS', }, { id: 'linkedin', name: 'LinkedIn', subtitle: 'Share updates and access professional profiles.', description: 'Access LinkedIn profile data, share posts, and manage professional networking activities.', popularity: 5, category: 'Social', exampleScopes: ['profile', 'w_member_social'], iconUrl: simpleIcon('linkedin', '#0A66C2'), iconFallbackLabel: 'IN', }, { id: 'tiktok', name: 'TikTok', subtitle: 'Track your profile stats and browse your videos.', description: 'Access your TikTok profile info, follower stats, and public videos.', popularity: 15, category: 'Social Media', exampleScopes: ['user.info.basic', 'video.list'], iconUrl: simpleIcon('tiktok', '#000000'), iconFallbackLabel: 'TT', }, { id: 'discord', name: 'Discord', subtitle: 'Notify channels and integrate with your Discord community.', description: 'Send messages, manage servers, and interact with Discord guilds and channels.', popularity: 18, category: 'Communication', exampleScopes: ['identify', 'guilds', 'messages.read'], iconUrl: simpleIcon('discord', '#5865F2'), iconFallbackLabel: 'DI', }, { id: 'wix', name: 'Wix', subtitle: 'Access Wix site data and business tools.', description: 'Connect to Wix to access site data, manage content, and interact with Wix business solutions like Stores, Bookings, and CRM.', popularity: 16, category: 'Website & E-commerce', exampleScopes: ['offline_access'], iconUrl: simpleIcon('wix', '#0C6EFC'), iconFallbackLabel: 'WX', }, { id: 'github', name: 'GitHub', subtitle: 'Manage repos, issues, and pull requests.', description: 'Access repositories, manage issues and pull requests, and automate development workflows.', popularity: 9, category: 'Development', exampleScopes: ['read:user', 'read:org'], supportsReadOnly: true, accessModes: { readOnly: ['read:user', 'read:org'], fullAccess: ['read:user', 'read:org', 'repo'], }, iconUrl: simpleIcon('github', '#181717'), iconFallbackLabel: 'GH', }, { id: 'gitlab', name: 'GitLab', subtitle: 'Manage projects, MRs, and CI/CD pipelines.', description: 'Access and manage GitLab projects, issues, merge requests, pipelines, and repositories.', popularity: 34, category: 'Development', exampleScopes: ['read_user', 'api'], iconUrl: simpleIcon('gitlab', '#FC6D26'), iconFallbackLabel: 'GL', }, { id: 'bamboohr', name: 'BambooHR', subtitle: 'Employee directory and HR management.', description: 'Manage employees, time-off requests, and HR data in BambooHR.', popularity: 35, category: 'HR', exampleScopes: ['openid', 'employee'], requiresConnectionConfig: true, iconUrl: simpleIcon('bamboohr', '#75C044'), iconFallbackLabel: 'BH', }, { id: 'wrike', name: 'Wrike', subtitle: 'Project planning and team coordination.', description: 'Manage projects, tasks, and team collaboration in Wrike.', popularity: 27, category: 'Project Management', iconUrl: simpleIcon('wrike', '#08CF65'), iconFallbackLabel: 'WR', }, { id: 'box', name: 'Box', subtitle: 'Secure cloud content management.', description: 'Upload, manage, and share files and folders in Box.', popularity: 23, category: 'Productivity', iconUrl: simpleIcon('box', '#0061D5'), iconFallbackLabel: 'BX', }, { id: 'clickup', name: 'ClickUp', subtitle: 'Organize projects and track team work.', description: 'Manage tasks, projects, and team workflows in ClickUp.', popularity: 20, category: 'Project Management', iconUrl: simpleIcon('clickup', '#7B68EE'), iconFallbackLabel: 'CU', }, { id: 'google_analytics', name: 'Google Analytics', subtitle: 'Track website traffic and user insights.', description: 'Access and analyze website traffic, user behavior, and marketing performance data.', popularity: 6, category: 'Data & Analytics', iconUrl: simpleIcon('googleanalytics', '#E37400'), iconFallbackLabel: 'GA', }, { id: 'outlook', name: 'Outlook', subtitle: 'Email and calendar.', description: 'Send and read email, manage calendar, and access Outlook/Microsoft 365 mail and calendar.', popularity: 8, category: 'Communication', exampleScopes: ['Mail.ReadWrite', 'Calendars.ReadWrite', 'Mail.Send'], supportsReadOnly: true, accessModes: { readOnly: ['Mail.Read', 'Calendars.Read'], fullAccess: ['Mail.ReadWrite', 'Calendars.ReadWrite', 'Mail.Send'], }, iconUrl: simpleIcon('microsoftoutlook', '#0078D4'), iconFallbackLabel: 'OU', }, { id: 'linear', name: 'Linear', subtitle: 'Issue tracking and project management.', description: 'Create and manage issues, projects, and cycles. Track team workflows and organize sprints.', popularity: 28, category: 'Project Management', exampleScopes: ['read', 'write'], supportsReadOnly: true, accessModes: { readOnly: ['read'], fullAccess: ['read', 'write'], }, iconUrl: simpleIcon('linear', '#5E6AD2'), iconFallbackLabel: 'LI', }, { id: 'dropbox', name: 'Dropbox', subtitle: 'Store and sync files in the cloud.', description: 'Upload, download, and manage files and folders in your Dropbox cloud storage.', popularity: 19, category: 'Productivity', exampleScopes: ['files.metadata.read', 'files.content.read', 'files.content.write'], supportsReadOnly: true, accessModes: { readOnly: ['files.metadata.read', 'files.content.read'], fullAccess: ['files.metadata.read', 'files.content.read', 'files.content.write'], }, iconUrl: simpleIcon('dropbox', '#0061FF'), iconFallbackLabel: 'DB', }, { id: 'google_search_console', name: 'Google Search Console', subtitle: 'SEO and search analytics.', description: 'Access search performance data, sitemaps, URL inspection, and indexing status for your sites.', popularity: 21, category: 'Data & Analytics', iconUrl: simpleIcon('googlesearchconsole', '#458CF5'), iconFallbackLabel: 'SC', }, { id: 'google_classroom', name: 'Google Classroom', subtitle: 'Education and course management.', description: 'Access courses, assignments, students, and class content in Google Classroom.', popularity: 26, category: 'Productivity', iconUrl: simpleIcon('googleclassroom', '#0F9D58'), iconFallbackLabel: 'GC', }, { id: 'airtable', name: 'Airtable', subtitle: 'Flexible databases and spreadsheets.', description: 'Access and manage Airtable bases, tables, and records.', popularity: 24, category: 'Productivity', exampleScopes: ['data.records:read', 'data.records:write', 'schema.bases:read'], supportsReadOnly: true, accessModes: { readOnly: ['data.records:read', 'schema.bases:read'], fullAccess: ['data.records:read', 'data.records:write', 'schema.bases:read'], }, iconUrl: simpleIcon('airtable', '#18BFFF'), iconFallbackLabel: 'AT', }, { id: 'splitwise', name: 'Splitwise', subtitle: 'Expense splitting and group bills.', description: 'Track shared expenses, manage group bills, and settle debts with Splitwise.', popularity: 25, category: 'Finance', iconUrl: simpleIcon('splitwise', '#1CC29F'), iconFallbackLabel: 'SW', }, { id: 'microsoft_teams', name: 'Microsoft Teams', subtitle: 'Team chat, channels, and meetings.', description: 'Send messages, manage channels, schedule meetings, and collaborate in Microsoft Teams.', popularity: 30, category: 'Communication', iconUrl: simpleIcon('microsoftteams', '#6264A7'), iconFallbackLabel: 'MT', }, { id: 'share_point', name: 'Microsoft SharePoint', subtitle: 'Document management and collaboration.', description: 'Manage documents, lists, sites, and collaboration content in Microsoft SharePoint.', popularity: 31, category: 'Documents', requiresConnectionConfig: true, iconUrl: simpleIcon('microsoftsharepoint', '#0078D4'), iconFallbackLabel: 'SP', }, { id: 'one_drive', name: 'Microsoft OneDrive', subtitle: 'Cloud file storage.', description: 'Upload, download, and manage files and folders in OneDrive.', popularity: 32, category: 'Productivity', exampleScopes: ['Files.ReadWrite.All'], supportsReadOnly: true, accessModes: { readOnly: ['Files.Read.All'], fullAccess: ['Files.ReadWrite.All'], }, iconUrl: simpleIcon('microsoftonedrive', '#0078D4'), iconFallbackLabel: 'OD', }, { id: 'typeform', name: 'Typeform', subtitle: 'Forms, surveys, and data collection.', description: 'Create and manage forms, surveys, and quizzes, and collect responses.', popularity: 33, category: 'Forms & Surveys', iconUrl: simpleIcon('typeform', '#262627'), iconFallbackLabel: 'TF', }, { id: 'hugging_face', name: 'Hugging Face', subtitle: 'AI inference and model repos.', description: 'Run inference on AI models and manage repositories on Hugging Face.', category: 'AI & ML', iconUrl: simpleIcon('huggingface', '#FFD21E'), iconFallbackLabel: 'HF', }, { id: 'calendly', name: 'Calendly', subtitle: 'Automated appointment scheduling.', description: 'Manage scheduling, event types, and bookings with Calendly.', category: 'Scheduling', iconUrl: simpleIcon('calendly', '#006BFF'), iconFallbackLabel: 'CA', }, { id: 'contentful', name: 'Contentful', subtitle: 'Headless CMS and content management.', description: 'Manage content, entries, assets, and content models in your Contentful headless CMS.', category: 'Developer Tools', iconUrl: simpleIcon('contentful', '#2478CC'), iconFallbackLabel: 'CF', }, { id: 'supabase', name: 'Supabase', subtitle: 'Browse schemas, read data, and view project status (read-only).', description: 'Read and inspect Supabase projects, database schemas, table data, and project configuration.', category: 'Developer Tools', iconUrl: simpleIcon('supabase', '#3FCF8E'), iconFallbackLabel: 'SB', }, { id: 'quickbooks', name: 'QuickBooks', subtitle: 'Accounting and financial management.', description: 'Manage invoices, expenses, customers, and accounting in QuickBooks Online.', category: 'Accounting', exampleScopes: ['com.intuit.quickbooks.accounting'], iconUrl: simpleIcon('quickbooks', '#2CA01C'), iconFallbackLabel: 'QB', }, { id: 'square', name: 'Square', subtitle: 'Payments, point of sale, and commerce.', description: 'Process payments, manage inventory, customers, and orders with Square.', category: 'Payments', // Mirror the builder connector's read+write scope set. Native connect falls // back to these when a connector defines no access modes, so read-only // scopes here would make the advertised commerce mutations (payments, // orders, invoices) fail with INSUFFICIENT_SCOPES. exampleScopes: [ 'MERCHANT_PROFILE_READ', 'PAYMENTS_READ', 'PAYMENTS_WRITE', 'ORDERS_READ', 'ORDERS_WRITE', 'CUSTOMERS_READ', 'CUSTOMERS_WRITE', 'ITEMS_READ', 'ITEMS_WRITE', 'INVENTORY_READ', 'INVENTORY_WRITE', 'INVOICES_READ', 'INVOICES_WRITE', ], iconUrl: simpleIcon('square', '#000000'), iconFallbackLabel: 'SQ', }, ]; // Integration types whose backend get_connection_config_fields() includes a // REQUIRED user-input field (e.g. subdomain/host). The native approval card can't // collect connection_config, so connecting/registering these can only fail backend // validation — block them and steer to web. Mirrors the backend integrations // (snowflake/databricks are BYO-only and absent from the catalog, so they must be // listed explicitly). salesforce/wix/wrike are intentionally excluded: their config // is optional or not a connect-time user input. Keep in sync with the backend. export const CONNECTION_CONFIG_REQUIRED_INTEGRATION_TYPES = new Set([ 'bamboohr', 'databricks', 'share_point', 'snowflake', ]); // True when the integration requires connection_config — via the explicit set // above or a catalog entry's requiresConnectionConfig flag. export function connectorRequiresConnectionConfig(integrationType?: string | null): boolean { if (!integrationType) return false; if (CONNECTION_CONFIG_REQUIRED_INTEGRATION_TYPES.has(integrationType)) return true; return Boolean( SUPERAGENT_CONNECTOR_CATALOG.find((item) => item.id === integrationType)?.requiresConnectionConfig, ); }