feat(integrations): add integrationType and tags classification to all blocks (#3702)

* feat(integrations): add integrationType and tags classification to all blocks

* improvement(integrations): replace generic api/oauth tags with use-case-oriented tags

* lint

* upgrade turbo
This commit is contained in:
Waleed
2026-03-21 11:45:49 -07:00
committed by GitHub
parent 4a34ac3015
commit 951c8fd5e9
182 changed files with 1324 additions and 362 deletions
@@ -6,54 +6,132 @@ import { blockTypeToIconMap } from '@/app/(landing)/integrations/data/icon-mappi
import type { Integration } from '@/app/(landing)/integrations/data/types'
import { IntegrationCard } from './integration-card'
const CATEGORY_LABELS: Record<string, string> = {
ai: 'AI',
analytics: 'Analytics',
automation: 'Automation',
communication: 'Communication',
crm: 'CRM',
'customer-support': 'Customer Support',
databases: 'Databases',
design: 'Design',
'developer-tools': 'Developer Tools',
documents: 'Documents',
ecommerce: 'E-commerce',
email: 'Email',
'file-storage': 'File Storage',
hr: 'HR',
media: 'Media',
productivity: 'Productivity',
'sales-intelligence': 'Sales Intelligence',
search: 'Search',
security: 'Security',
social: 'Social',
other: 'Other',
} as const
interface IntegrationGridProps {
integrations: Integration[]
}
export function IntegrationGrid({ integrations }: IntegrationGridProps) {
const [query, setQuery] = useState('')
const [activeCategory, setActiveCategory] = useState<string | null>(null)
const availableCategories = useMemo(() => {
const counts = new Map<string, number>()
for (const i of integrations) {
if (i.integrationType) {
counts.set(i.integrationType, (counts.get(i.integrationType) || 0) + 1)
}
}
return Array.from(counts.entries())
.sort((a, b) => b[1] - a[1])
.map(([key]) => key)
}, [integrations])
const filtered = useMemo(() => {
let results = integrations
if (activeCategory) {
results = results.filter((i) => i.integrationType === activeCategory)
}
const q = query.trim().toLowerCase()
if (!q) return integrations
return integrations.filter(
(i) =>
i.name.toLowerCase().includes(q) ||
i.description.toLowerCase().includes(q) ||
i.operations.some(
(op) => op.name.toLowerCase().includes(q) || op.description.toLowerCase().includes(q)
) ||
i.triggers.some((t) => t.name.toLowerCase().includes(q))
)
}, [integrations, query])
if (q) {
results = results.filter(
(i) =>
i.name.toLowerCase().includes(q) ||
i.description.toLowerCase().includes(q) ||
i.operations.some(
(op) => op.name.toLowerCase().includes(q) || op.description.toLowerCase().includes(q)
) ||
i.triggers.some((t) => t.name.toLowerCase().includes(q))
)
}
return results
}, [integrations, query, activeCategory])
return (
<div>
<div className='relative mb-8 max-w-[480px]'>
<svg
aria-hidden='true'
className='-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 h-4 w-4 text-[#555]'
fill='none'
stroke='currentColor'
strokeWidth={2}
viewBox='0 0 24 24'
<div className='mb-6 flex flex-col gap-4 sm:flex-row sm:items-center'>
<div className='relative max-w-[480px] flex-1'>
<svg
aria-hidden='true'
className='-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 h-4 w-4 text-[#555]'
fill='none'
stroke='currentColor'
strokeWidth={2}
viewBox='0 0 24 24'
>
<circle cx={11} cy={11} r={8} />
<path d='m21 21-4.35-4.35' />
</svg>
<Input
type='search'
placeholder='Search integrations, tools, or triggers…'
value={query}
onChange={(e) => setQuery(e.target.value)}
className='pl-9'
aria-label='Search integrations'
/>
</div>
</div>
<div className='mb-8 flex flex-wrap gap-2'>
<button
type='button'
onClick={() => setActiveCategory(null)}
className={`rounded-md border px-3 py-1 text-[12px] transition-colors ${
activeCategory === null
? 'border-[#555] bg-[#333] text-[#ECECEC]'
: 'border-[#2A2A2A] bg-transparent text-[#999] hover:border-[#3d3d3d] hover:text-[#ECECEC]'
}`}
>
<circle cx={11} cy={11} r={8} />
<path d='m21 21-4.35-4.35' />
</svg>
<Input
type='search'
placeholder='Search integrations, tools, or triggers…'
value={query}
onChange={(e) => setQuery(e.target.value)}
className='pl-9'
aria-label='Search integrations'
/>
All
</button>
{availableCategories.map((cat) => (
<button
key={cat}
type='button'
onClick={() => setActiveCategory(activeCategory === cat ? null : cat)}
className={`rounded-md border px-3 py-1 text-[12px] transition-colors ${
activeCategory === cat
? 'border-[#555] bg-[#333] text-[#ECECEC]'
: 'border-[#2A2A2A] bg-transparent text-[#999] hover:border-[#3d3d3d] hover:text-[#ECECEC]'
}`}
>
{CATEGORY_LABELS[cat] || cat}
</button>
))}
</div>
{filtered.length === 0 ? (
<p className='py-12 text-center text-[#555] text-[15px]'>
No integrations found for &ldquo;{query}&rdquo;
No integrations found
{query ? <> for &ldquo;{query}&rdquo;</> : null}
{activeCategory ? <> in {CATEGORY_LABELS[activeCategory] || activeCategory}</> : null}
</p>
) : (
<div className='grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4'>
File diff suppressed because it is too large Load Diff
@@ -34,4 +34,6 @@ export interface Integration {
triggerCount: number
authType: AuthType
category: string
integrationType?: string
tags?: string[]
}
+3
View File
@@ -1,5 +1,6 @@
import { A2AIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { ToolResponse } from '@/tools/types'
@@ -63,6 +64,8 @@ export const A2ABlock: BlockConfig<A2AResponse> = {
'Compatible with any A2A-compliant agent including LangGraph, Google ADK, and other Sim workflows.',
docsLink: 'https://docs.sim.ai/blocks/a2a',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['agentic', 'automation'],
bgColor: '#4151B5',
icon: A2AIcon,
subBlocks: [
+3 -1
View File
@@ -2,7 +2,7 @@ import { createLogger } from '@sim/logger'
import { AgentIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { getApiKeyCondition, getModelOptions, RESPONSE_FORMAT_WAND_CONFIG } from '@/blocks/utils'
import {
getBaseModelProviders,
@@ -69,6 +69,8 @@ export const AgentBlock: BlockConfig<AgentResponse> = {
`,
docsLink: 'https://docs.sim.ai/blocks/agent',
category: 'blocks',
integrationType: IntegrationType.AI,
tags: ['llm', 'agentic', 'automation'],
bgColor: 'var(--brand-primary-hex)',
icon: AgentIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { AhrefsIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { AhrefsResponse } from '@/tools/ahrefs/types'
export const AhrefsBlock: BlockConfig<AhrefsResponse> = {
@@ -12,6 +12,8 @@ export const AhrefsBlock: BlockConfig<AhrefsResponse> = {
'Integrate Ahrefs SEO tools into your workflow. Analyze domain ratings, backlinks, organic keywords, top pages, and more. Requires an Ahrefs Enterprise plan with API access.',
docsLink: 'https://docs.ahrefs.com/docs/api/reference/introduction',
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['seo', 'marketing', 'data-analytics'],
bgColor: '#E0E0E0',
icon: AhrefsIcon,
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { AirtableIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { AirtableResponse } from '@/tools/airtable/types'
import { getTrigger } from '@/triggers'
@@ -14,6 +14,8 @@ export const AirtableBlock: BlockConfig<AirtableResponse> = {
'Integrates Airtable into the workflow. Can list bases, list tables (with schema), and create, get, list, or update records. Can also be used in trigger mode to trigger a workflow when an update is made to an Airtable table.',
docsLink: 'https://docs.sim.ai/tools/airtable',
category: 'tools',
integrationType: IntegrationType.Databases,
tags: ['spreadsheet', 'automation'],
bgColor: '#E0E0E0',
icon: AirtableIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { AirweaveIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { AirweaveSearchResponse } from '@/tools/airweave/types'
export const AirweaveBlock: BlockConfig<AirweaveSearchResponse> = {
@@ -12,6 +12,8 @@ export const AirweaveBlock: BlockConfig<AirweaveSearchResponse> = {
'Search across your synced data sources using Airweave. Supports semantic search with hybrid, neural, or keyword retrieval strategies. Optionally generate AI-powered answers from search results.',
docsLink: 'https://docs.airweave.ai',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['vector-search', 'knowledge-base'],
bgColor: '#6366F1',
icon: AirweaveIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { AlgoliaIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const AlgoliaBlock: BlockConfig = {
type: 'algolia',
@@ -10,6 +10,8 @@ export const AlgoliaBlock: BlockConfig = {
'Integrate Algolia into your workflow. Search indices, manage records (add, update, delete, browse), configure index settings, and perform batch operations.',
docsLink: 'https://docs.sim.ai/tools/algolia',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['vector-search', 'knowledge-base'],
bgColor: '#003DFF',
icon: AlgoliaIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,5 +1,5 @@
import { AmplitudeIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
export const AmplitudeBlock: BlockConfig = {
type: 'amplitude',
@@ -9,6 +9,8 @@ export const AmplitudeBlock: BlockConfig = {
'Integrate Amplitude into your workflow to track events, identify users and groups, search for users, query analytics, and retrieve revenue data.',
docsLink: 'https://docs.sim.ai/tools/amplitude',
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['data-analytics', 'marketing'],
bgColor: '#1B1F3B',
icon: AmplitudeIcon,
authMode: AuthMode.ApiKey,
+3
View File
@@ -1,5 +1,6 @@
import { ApiIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import type { RequestResponse } from '@/tools/http/types'
export const ApiBlock: BlockConfig<RequestResponse> = {
@@ -13,6 +14,8 @@ export const ApiBlock: BlockConfig<RequestResponse> = {
- Curl the endpoint yourself before filling out the API block to make sure it's working IF you have the necessary authentication headers. Clarify with the user if you need any additional headers.
`,
category: 'blocks',
integrationType: IntegrationType.DeveloperTools,
tags: ['automation', 'webhooks'],
bgColor: '#2F55FF',
icon: ApiIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { ApifyIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import type { RunActorResult } from '@/tools/apify/types'
export const ApifyBlock: BlockConfig<RunActorResult> = {
@@ -10,6 +11,8 @@ export const ApifyBlock: BlockConfig<RunActorResult> = {
'Integrate Apify into your workflow. Run any Apify actor with custom input and retrieve results. Supports both synchronous and asynchronous execution with automatic dataset fetching.',
docsLink: 'https://docs.sim.ai/tools/apify',
category: 'tools',
integrationType: IntegrationType.Automation,
tags: ['web-scraping', 'automation', 'data-analytics'],
bgColor: '#E0E0E0',
icon: ApifyIcon,
+3 -1
View File
@@ -1,6 +1,6 @@
import { ApolloIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { ApolloResponse } from '@/tools/apollo/types'
export const ApolloBlock: BlockConfig<ApolloResponse> = {
@@ -12,6 +12,8 @@ export const ApolloBlock: BlockConfig<ApolloResponse> = {
'Integrates Apollo.io into the workflow. Search for people and companies, enrich contact data, manage your CRM contacts and accounts, add contacts to sequences, and create tasks.',
docsLink: 'https://docs.sim.ai/tools/apollo',
category: 'tools',
integrationType: IntegrationType.SalesIntelligence,
tags: ['enrichment', 'sales-engagement'],
bgColor: '#EBF212',
icon: ApolloIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { ArxivIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import type { ArxivResponse } from '@/tools/arxiv/types'
export const ArxivBlock: BlockConfig<ArxivResponse> = {
@@ -10,6 +11,8 @@ export const ArxivBlock: BlockConfig<ArxivResponse> = {
'Integrates ArXiv into the workflow. Can search for papers, get paper details, and get author papers. Does not require OAuth or an API key.',
docsLink: 'https://docs.sim.ai/tools/arxiv',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['document-processing', 'knowledge-base'],
bgColor: '#E0E0E0',
icon: ArxivIcon,
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { AsanaIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { AsanaResponse } from '@/tools/asana/types'
export const AsanaBlock: BlockConfig<AsanaResponse> = {
@@ -12,6 +12,8 @@ export const AsanaBlock: BlockConfig<AsanaResponse> = {
longDescription: 'Integrate Asana into the workflow. Can read, write, and update tasks.',
docsLink: 'https://docs.sim.ai/tools/asana',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['project-management', 'ticketing', 'automation'],
bgColor: '#E0E0E0',
icon: AsanaIcon,
subBlocks: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { AshbyIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import { getTrigger } from '@/triggers'
export const AshbyBlock: BlockConfig = {
@@ -10,6 +10,8 @@ export const AshbyBlock: BlockConfig = {
'Integrate Ashby into the workflow. Manage candidates (list, get, create, update, search, tag), applications (list, get, create, change stage), jobs (list, get), job postings (list, get), offers (list, get), notes (list, create), interviews (list), and reference data (sources, tags, archive reasons, custom fields, departments, locations, openings, users).',
docsLink: 'https://docs.sim.ai/tools/ashby',
category: 'tools',
integrationType: IntegrationType.HR,
tags: ['hiring'],
bgColor: '#5D4ED6',
icon: AshbyIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,6 +1,6 @@
import { AttioIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { AttioResponse } from '@/tools/attio/types'
import { getTrigger } from '@/triggers'
@@ -12,6 +12,8 @@ export const AttioBlock: BlockConfig<AttioResponse> = {
'Connect to Attio to manage CRM records (people, companies, custom objects), notes, tasks, lists, list entries, comments, workspace members, and webhooks.',
docsLink: 'https://docs.sim.ai/tools/attio',
category: 'tools',
integrationType: IntegrationType.CRM,
tags: ['sales-engagement', 'enrichment'],
bgColor: '#1D1E20',
icon: AttioIcon,
authMode: AuthMode.OAuth,
+3 -1
View File
@@ -1,7 +1,7 @@
import { BoxCompanyIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
export const BoxBlock: BlockConfig = {
@@ -12,6 +12,8 @@ export const BoxBlock: BlockConfig = {
'Integrate Box into your workflow to manage files, folders, and e-signatures. Upload and download files, search content, create folders, send documents for e-signature, track signing status, and more.',
docsLink: 'https://docs.sim.ai/tools/box',
category: 'tools',
integrationType: IntegrationType.FileStorage,
tags: ['cloud', 'content-management', 'e-signatures'],
bgColor: '#FFFFFF',
icon: BoxCompanyIcon,
authMode: AuthMode.OAuth,
+3 -1
View File
@@ -1,6 +1,6 @@
import { BrandfetchIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { BrandfetchGetBrandResponse, BrandfetchSearchResponse } from '@/tools/brandfetch/types'
export const BrandfetchBlock: BlockConfig<BrandfetchGetBrandResponse | BrandfetchSearchResponse> = {
@@ -11,6 +11,8 @@ export const BrandfetchBlock: BlockConfig<BrandfetchGetBrandResponse | Brandfetc
'Integrate Brandfetch into your workflow. Retrieve brand logos, colors, fonts, and company data by domain, ticker, or name search.',
docsLink: 'https://docs.sim.ai/tools/brandfetch',
category: 'tools',
integrationType: IntegrationType.SalesIntelligence,
tags: ['enrichment', 'marketing'],
bgColor: '#000000',
icon: BrandfetchIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,5 +1,5 @@
import { BrowserUseIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { BrowserUseResponse } from '@/tools/browser_use/types'
export const BrowserUseBlock: BlockConfig<BrowserUseResponse> = {
@@ -11,6 +11,8 @@ export const BrowserUseBlock: BlockConfig<BrowserUseResponse> = {
'Integrate Browser Use into the workflow. Can navigate the web and perform actions as if a real user was interacting with the browser.',
docsLink: 'https://docs.sim.ai/tools/browser_use',
category: 'tools',
integrationType: IntegrationType.Automation,
tags: ['web-scraping', 'automation', 'agentic'],
bgColor: '#181C1E',
icon: BrowserUseIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { CalComIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { ToolResponse } from '@/tools/types'
import { getTrigger } from '@/triggers'
@@ -14,6 +14,8 @@ export const CalComBlock: BlockConfig<ToolResponse> = {
'Integrate Cal.com into your workflow. Create and manage bookings, event types, schedules, and check availability slots. Supports creating, listing, rescheduling, and canceling bookings, as well as managing event types and schedules. Can also trigger workflows based on Cal.com webhook events (booking created, cancelled, rescheduled). Connect your Cal.com account via OAuth.',
docsLink: 'https://docs.sim.ai/tools/calcom',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['scheduling', 'calendar', 'meeting'],
bgColor: '#FFFFFE',
icon: CalComIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { CalendlyIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { ToolResponse } from '@/tools/types'
import { getTrigger } from '@/triggers'
@@ -14,6 +14,8 @@ export const CalendlyBlock: BlockConfig<ToolResponse> = {
'Integrate Calendly into your workflow. Manage event types, scheduled events, invitees, and webhooks. Can also trigger workflows based on Calendly webhook events (invitee scheduled, invitee canceled, routing form submitted). Requires Personal Access Token.',
docsLink: 'https://docs.sim.ai/tools/calendly',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['scheduling', 'calendar', 'meeting'],
bgColor: '#FFFFFF',
icon: CalendlyIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { CirclebackIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import { getTrigger } from '@/triggers'
export const CirclebackBlock: BlockConfig = {
@@ -9,6 +10,8 @@ export const CirclebackBlock: BlockConfig = {
longDescription:
'Receive meeting notes, action items, transcripts, and recordings when meetings are processed. Circleback uses webhooks to push data to your workflows.',
category: 'triggers',
integrationType: IntegrationType.AI,
tags: ['meeting', 'note-taking', 'automation'],
bgColor: 'linear-gradient(180deg, #E0F7FA 0%, #FFFFFF 100%)',
docsLink: 'https://docs.sim.ai/tools/circleback',
icon: CirclebackIcon,
+3 -1
View File
@@ -1,5 +1,5 @@
import { ClayIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { ClayPopulateResponse } from '@/tools/clay/types'
export const ClayBlock: BlockConfig<ClayPopulateResponse> = {
@@ -10,6 +10,8 @@ export const ClayBlock: BlockConfig<ClayPopulateResponse> = {
longDescription: 'Integrate Clay into the workflow. Can populate a table with data.',
docsLink: 'https://docs.sim.ai/tools/clay',
category: 'tools',
integrationType: IntegrationType.SalesIntelligence,
tags: ['enrichment', 'sales-engagement', 'data-analytics'],
bgColor: '#E0E0E0',
icon: ClayIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { ClerkIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import type { ClerkResponse } from '@/tools/clerk/types'
export const ClerkBlock: BlockConfig<ClerkResponse> = {
@@ -10,6 +11,8 @@ export const ClerkBlock: BlockConfig<ClerkResponse> = {
'Integrate Clerk authentication and user management into your workflow. Create, update, delete, and list users. Manage organizations and their memberships. Monitor and control user sessions.',
docsLink: 'https://docs.sim.ai/tools/clerk',
category: 'tools',
integrationType: IntegrationType.Security,
tags: ['identity', 'automation'],
bgColor: '#131316',
icon: ClerkIcon,
+3 -1
View File
@@ -1,5 +1,5 @@
import { CloudflareIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { CloudflareResponse } from '@/tools/cloudflare/types'
export const CloudflareBlock: BlockConfig<CloudflareResponse> = {
@@ -11,6 +11,8 @@ export const CloudflareBlock: BlockConfig<CloudflareResponse> = {
'Integrate Cloudflare into the workflow. Manage zones (domains), DNS records, SSL/TLS certificates, zone settings, DNS analytics, and cache purging via the Cloudflare API.',
docsLink: 'https://docs.sim.ai/tools/cloudflare',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['cloud', 'monitoring'],
bgColor: '#F5F6FA',
icon: CloudflareIcon,
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { ConfluenceIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { ConfluenceResponse } from '@/tools/confluence/types'
import { getTrigger } from '@/triggers'
@@ -16,6 +16,8 @@ export const ConfluenceBlock: BlockConfig<ConfluenceResponse> = {
'Integrate Confluence into the workflow. Can read, create, update, delete pages, manage comments, attachments, labels, and search content.',
docsLink: 'https://docs.sim.ai/tools/confluence',
category: 'tools',
integrationType: IntegrationType.Documents,
tags: ['knowledge-base', 'content-management', 'note-taking'],
bgColor: '#E0E0E0',
icon: ConfluenceIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { CursorIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { createVersionedToolSelector } from '@/blocks/utils'
import type { CursorResponse } from '@/tools/cursor/types'
@@ -12,6 +12,8 @@ export const CursorBlock: BlockConfig<CursorResponse> = {
'Interact with Cursor Cloud Agents API to launch AI agents that can work on your GitHub repositories. Supports launching agents, adding follow-up instructions, checking status, viewing conversations, and managing agent lifecycle.',
docsLink: 'https://cursor.com/docs/cloud-agent/api/endpoints',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['agentic', 'automation'],
bgColor: '#1E1E1E',
icon: CursorIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,6 +1,6 @@
import { DatabricksIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { DatabricksResponse } from '@/tools/databricks/types'
export const DatabricksBlock: BlockConfig<DatabricksResponse> = {
@@ -12,6 +12,8 @@ export const DatabricksBlock: BlockConfig<DatabricksResponse> = {
'Connect to Databricks to execute SQL queries against SQL warehouses, trigger and monitor job runs, manage clusters, and retrieve run outputs. Requires a Personal Access Token and workspace host URL.',
docsLink: 'https://docs.sim.ai/tools/databricks',
category: 'tools',
integrationType: IntegrationType.Databases,
tags: ['data-warehouse', 'data-analytics', 'cloud'],
bgColor: '#F9F7F4',
icon: DatabricksIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { DatadogIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { DatadogResponse } from '@/tools/datadog/types'
export const DatadogBlock: BlockConfig<DatadogResponse> = {
@@ -12,6 +12,8 @@ export const DatadogBlock: BlockConfig<DatadogResponse> = {
'Integrate Datadog monitoring into workflows. Submit metrics, manage monitors, query logs, create events, handle downtimes, and more.',
docsLink: 'https://docs.sim.ai/tools/datadog',
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['monitoring', 'incident-management', 'error-tracking'],
bgColor: '#632CA6',
icon: DatadogIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { DevinIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const DevinBlock: BlockConfig = {
type: 'devin',
@@ -17,6 +17,8 @@ export const DevinBlock: BlockConfig = {
`,
docsLink: 'https://docs.sim.ai/tools/devin',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['agentic', 'automation'],
bgColor: '#12141A',
icon: DevinIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,6 +1,6 @@
import { DiscordIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { DiscordResponse } from '@/tools/discord/types'
@@ -12,6 +12,8 @@ export const DiscordBlock: BlockConfig<DiscordResponse> = {
longDescription:
'Comprehensive Discord integration: messages, threads, channels, roles, members, invites, and webhooks.',
category: 'tools',
integrationType: IntegrationType.Communication,
tags: ['messaging', 'webhooks', 'automation'],
bgColor: '#5865F2',
icon: DiscordIcon,
docsLink: 'https://docs.sim.ai/tools/discord',
+3 -1
View File
@@ -1,7 +1,7 @@
import { DocuSignIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { DocuSignResponse } from '@/tools/docusign/types'
@@ -13,6 +13,8 @@ export const DocuSignBlock: BlockConfig<DocuSignResponse> = {
'Create and send envelopes for e-signature, use templates, check signing status, download signed documents, and manage recipients with DocuSign.',
docsLink: 'https://docs.sim.ai/tools/docusign',
category: 'tools',
integrationType: IntegrationType.Documents,
tags: ['e-signatures', 'document-processing'],
bgColor: '#FFFFFF',
icon: DocuSignIcon,
authMode: AuthMode.OAuth,
+3 -1
View File
@@ -1,7 +1,7 @@
import { DropboxIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { DropboxResponse } from '@/tools/dropbox/types'
@@ -14,6 +14,8 @@ export const DropboxBlock: BlockConfig<DropboxResponse> = {
'Integrate Dropbox into your workflow for file management, sharing, and collaboration. Upload files, download content, create folders, manage shared links, and more.',
docsLink: 'https://docs.sim.ai/tools/dropbox',
category: 'tools',
integrationType: IntegrationType.FileStorage,
tags: ['cloud', 'document-processing'],
icon: DropboxIcon,
bgColor: '#0061FF',
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { DsPyIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
export const DSPyBlock: BlockConfig = {
type: 'dspy',
@@ -8,6 +9,8 @@ export const DSPyBlock: BlockConfig = {
longDescription:
'Integrate with your self-hosted DSPy programs for LLM-powered predictions. Supports Predict, Chain of Thought, and ReAct agents. DSPy is the framework for programming—not prompting—language models.',
category: 'tools',
integrationType: IntegrationType.AI,
tags: ['llm', 'agentic', 'automation'],
bgColor: '#E0E0E0',
icon: DsPyIcon,
+3 -1
View File
@@ -1,6 +1,6 @@
import { DubIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { DubResponse } from '@/tools/dub/types'
export const DubBlock: BlockConfig<DubResponse> = {
@@ -12,6 +12,8 @@ export const DubBlock: BlockConfig<DubResponse> = {
'Create, manage, and track short links with Dub. Supports custom domains, UTM parameters, link analytics, and more.',
docsLink: 'https://docs.sim.ai/tools/dub',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['link-management', 'marketing', 'data-analytics'],
bgColor: '#181C1E',
icon: DubIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { DuckDuckGoIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import type { DuckDuckGoResponse } from '@/tools/duckduckgo/types'
export const DuckDuckGoBlock: BlockConfig<DuckDuckGoResponse> = {
@@ -10,6 +11,8 @@ export const DuckDuckGoBlock: BlockConfig<DuckDuckGoResponse> = {
'Search the web using DuckDuckGo Instant Answers API. Returns instant answers, abstracts, related topics, and more. Free to use without an API key.',
docsLink: 'https://docs.sim.ai/tools/duckduckgo',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['web-scraping', 'seo'],
bgColor: '#FFFFFF',
icon: DuckDuckGoIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { DynamoDBIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import type { DynamoDBIntrospectResponse, DynamoDBResponse } from '@/tools/dynamodb/types'
export const DynamoDBBlock: BlockConfig<DynamoDBResponse | DynamoDBIntrospectResponse> = {
@@ -10,6 +11,8 @@ export const DynamoDBBlock: BlockConfig<DynamoDBResponse | DynamoDBIntrospectRes
'Integrate Amazon DynamoDB into workflows. Supports Get, Put, Query, Scan, Update, Delete, and Introspect operations on DynamoDB tables.',
docsLink: 'https://docs.sim.ai/tools/dynamodb',
category: 'tools',
integrationType: IntegrationType.Databases,
tags: ['cloud', 'data-warehouse'],
bgColor: 'linear-gradient(45deg, #2E27AD 0%, #527FFF 100%)',
icon: DynamoDBIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { ElasticsearchIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { ElasticsearchResponse } from '@/tools/elasticsearch/types'
export const ElasticsearchBlock: BlockConfig<ElasticsearchResponse> = {
@@ -12,6 +12,8 @@ export const ElasticsearchBlock: BlockConfig<ElasticsearchResponse> = {
'Integrate Elasticsearch into workflows for powerful search, indexing, and data management. Supports document CRUD operations, advanced search queries, bulk operations, index management, and cluster monitoring. Works with both self-hosted and Elastic Cloud deployments.',
docsLink: 'https://docs.sim.ai/tools/elasticsearch',
category: 'tools',
integrationType: IntegrationType.Databases,
tags: ['vector-search', 'data-analytics'],
bgColor: '#E0E0E0',
icon: ElasticsearchIcon,
subBlocks: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { ElevenLabsIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { ElevenLabsBlockResponse } from '@/tools/elevenlabs/types'
export const ElevenLabsBlock: BlockConfig<ElevenLabsBlockResponse> = {
@@ -10,6 +10,8 @@ export const ElevenLabsBlock: BlockConfig<ElevenLabsBlockResponse> = {
longDescription: 'Integrate ElevenLabs into the workflow. Can convert text to speech.',
docsLink: 'https://docs.sim.ai/tools/elevenlabs',
category: 'tools',
integrationType: IntegrationType.Media,
tags: ['text-to-speech'],
bgColor: '#181C1E',
icon: ElevenLabsIcon,
+3 -1
View File
@@ -1,6 +1,6 @@
import { EnrichSoIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const EnrichBlock: BlockConfig = {
type: 'enrich',
@@ -11,6 +11,8 @@ export const EnrichBlock: BlockConfig = {
'Access real-time B2B data intelligence with Enrich.so. Enrich profiles from email addresses, find work emails from LinkedIn, verify email deliverability, search for people and companies, and analyze LinkedIn post engagement.',
docsLink: 'https://docs.enrich.so/',
category: 'tools',
integrationType: IntegrationType.SalesIntelligence,
tags: ['enrichment', 'data-analytics'],
bgColor: '#E5E5E6',
icon: EnrichSoIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { EvernoteIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const EvernoteBlock: BlockConfig = {
type: 'evernote',
@@ -10,6 +10,8 @@ export const EvernoteBlock: BlockConfig = {
'Integrate with Evernote to manage notes, notebooks, and tags. Create, read, update, copy, search, and delete notes. Create and list notebooks and tags.',
docsLink: 'https://docs.sim.ai/tools/evernote',
category: 'tools',
integrationType: IntegrationType.Documents,
tags: ['note-taking', 'knowledge-base'],
bgColor: '#E0E0E0',
icon: EvernoteIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,6 +1,6 @@
import { ExaAIIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { ExaResponse } from '@/tools/exa/types'
export const ExaBlock: BlockConfig<ExaResponse> = {
@@ -12,6 +12,8 @@ export const ExaBlock: BlockConfig<ExaResponse> = {
'Integrate Exa into the workflow. Can search, get contents, find similar links, answer a question, and perform research.',
docsLink: 'https://docs.sim.ai/tools/exa',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['web-scraping', 'enrichment'],
bgColor: '#1F40ED',
icon: ExaAIIcon,
subBlocks: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { FathomIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { FathomResponse } from '@/tools/fathom/types'
import { getTrigger } from '@/triggers'
import { fathomTriggerOptions } from '@/triggers/fathom/utils'
@@ -14,6 +14,8 @@ export const FathomBlock: BlockConfig<FathomResponse> = {
'Integrate Fathom AI Notetaker into your workflow. List meetings, get transcripts and summaries, and manage team members and teams. Can also trigger workflows when new meeting content is ready.',
docsLink: 'https://docs.sim.ai/tools/fathom',
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['meeting', 'note-taking'],
bgColor: '#181C1E',
icon: FathomIcon,
subBlocks: [
+5
View File
@@ -2,6 +2,7 @@ import { createLogger } from '@sim/logger'
import { DocumentIcon } from '@/components/icons'
import { inferContextFromKey } from '@/lib/uploads/utils/file-utils'
import type { BlockConfig, SubBlockType } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils'
import type { FileParserOutput, FileParserV3Output } from '@/tools/file/types'
@@ -53,6 +54,8 @@ export const FileBlock: BlockConfig<FileParserOutput> = {
`,
docsLink: 'https://docs.sim.ai/tools/file',
category: 'tools',
integrationType: IntegrationType.FileStorage,
tags: ['document-processing'],
bgColor: '#40916C',
icon: DocumentIcon,
hideFromToolbar: true,
@@ -252,6 +255,8 @@ export const FileV3Block: BlockConfig<FileParserV3Output> = {
'Upload files directly or import from external URLs to get UserFile objects for use in other blocks.',
docsLink: 'https://docs.sim.ai/tools/file',
category: 'tools',
integrationType: IntegrationType.FileStorage,
tags: ['document-processing'],
bgColor: '#40916C',
icon: DocumentIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { FirecrawlIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { FirecrawlResponse } from '@/tools/firecrawl/types'
export const FirecrawlBlock: BlockConfig<FirecrawlResponse> = {
@@ -12,6 +12,8 @@ export const FirecrawlBlock: BlockConfig<FirecrawlResponse> = {
'Integrate Firecrawl into the workflow. Scrape pages, search the web, crawl entire sites, map URL structures, and extract structured data with AI.',
docsLink: 'https://docs.sim.ai/tools/firecrawl',
category: 'tools',
integrationType: IntegrationType.Automation,
tags: ['web-scraping', 'automation'],
bgColor: '#181C1E',
icon: FirecrawlIcon,
subBlocks: [
+5 -1
View File
@@ -1,7 +1,7 @@
import { FirefliesIcon } from '@/components/icons'
import { resolveHttpsUrlFromFileInput } from '@/lib/uploads/utils/file-utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { FirefliesResponse } from '@/tools/fireflies/types'
import { getTrigger } from '@/triggers'
@@ -17,6 +17,8 @@ export const FirefliesBlock: BlockConfig<FirefliesResponse> = {
'Integrate Fireflies.ai into the workflow. Manage meeting transcripts, add bot to live meetings, create soundbites, and more. Can also trigger workflows when transcriptions complete.',
docsLink: 'https://docs.sim.ai/tools/fireflies',
category: 'tools',
integrationType: IntegrationType.Media,
tags: ['meeting', 'speech-to-text', 'note-taking'],
icon: FirefliesIcon,
bgColor: '#100730',
subBlocks: [
@@ -613,6 +615,8 @@ export const FirefliesV2Block: BlockConfig<FirefliesResponse> = {
name: 'Fireflies',
description: 'Interact with Fireflies.ai meeting transcripts and recordings',
hideFromToolbar: false,
integrationType: IntegrationType.Media,
tags: ['meeting', 'speech-to-text', 'note-taking'],
subBlocks: firefliesV2SubBlocks,
tools: {
...FirefliesBlock.tools,
+3 -1
View File
@@ -1,5 +1,5 @@
import { GammaIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { GammaResponse } from '@/tools/gamma/types'
export const GammaBlock: BlockConfig<GammaResponse> = {
@@ -10,6 +10,8 @@ export const GammaBlock: BlockConfig<GammaResponse> = {
'Integrate Gamma into the workflow. Can generate presentations, documents, webpages, and social posts from text, create from templates, check generation status, and browse themes and folders.',
docsLink: 'https://docs.sim.ai/tools/gamma',
category: 'tools',
integrationType: IntegrationType.Design,
tags: ['document-processing', 'content-management'],
bgColor: '#002253',
icon: GammaIcon,
authMode: AuthMode.ApiKey,
+5 -1
View File
@@ -1,6 +1,6 @@
import { GithubIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { createVersionedToolSelector } from '@/blocks/utils'
import type { GitHubResponse } from '@/tools/github/types'
import { getTrigger } from '@/triggers'
@@ -14,6 +14,8 @@ export const GitHubBlock: BlockConfig<GitHubResponse> = {
'Integrate Github into the workflow. Can get get PR details, create PR comment, get repository info, and get latest commit. Can be used in trigger mode to trigger a workflow when a PR is created, commented on, or a commit is pushed.',
docsLink: 'https://docs.sim.ai/tools/github',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['version-control', 'ci-cd'],
bgColor: '#181C1E',
icon: GithubIcon,
triggerAllowed: true,
@@ -2023,6 +2025,8 @@ export const GitHubV2Block: BlockConfig<GitHubResponse> = {
type: 'github_v2',
name: 'GitHub',
hideFromToolbar: false,
integrationType: IntegrationType.DeveloperTools,
tags: ['version-control', 'ci-cd'],
tools: {
...GitHubBlock.tools,
access: (GitHubBlock.tools?.access || []).map((toolId) => `${toolId}_v2`),
+3 -1
View File
@@ -1,6 +1,6 @@
import { GitLabIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { GitLabResponse } from '@/tools/gitlab/types'
export const GitLabBlock: BlockConfig<GitLabResponse> = {
@@ -13,6 +13,8 @@ export const GitLabBlock: BlockConfig<GitLabResponse> = {
'Integrate GitLab into the workflow. Can manage projects, issues, merge requests, pipelines, and add comments. Supports all core GitLab DevOps operations.',
docsLink: 'https://docs.sim.ai/tools/gitlab',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['version-control', 'ci-cd'],
icon: GitLabIcon,
bgColor: '#E0E0E0',
subBlocks: [
+5 -1
View File
@@ -1,7 +1,7 @@
import { GmailIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils'
import type { GmailToolResponse } from '@/tools/gmail/types'
import { getTrigger } from '@/triggers'
@@ -46,6 +46,8 @@ export const GmailBlock: BlockConfig<GmailToolResponse> = {
'Integrate Gmail into the workflow. Can send, read, search, and move emails. Can be used in trigger mode to trigger a workflow when a new email is received.',
docsLink: 'https://docs.sim.ai/tools/gmail',
category: 'tools',
integrationType: IntegrationType.Email,
tags: ['google-workspace', 'messaging'],
bgColor: '#E0E0E0',
icon: GmailIcon,
hideFromToolbar: true,
@@ -553,6 +555,8 @@ export const GmailV2Block: BlockConfig<GmailToolResponse> = {
type: 'gmail_v2',
name: 'Gmail',
hideFromToolbar: false,
integrationType: IntegrationType.Email,
tags: ['google-workspace', 'messaging'],
tools: {
...GmailBlock.tools,
access: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { GongIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { GongResponse } from '@/tools/gong/types'
export const GongBlock: BlockConfig<GongResponse> = {
@@ -11,6 +11,8 @@ export const GongBlock: BlockConfig<GongResponse> = {
'Integrate Gong into your workflow. Access call recordings, transcripts, user data, activity stats, scorecards, trackers, library content, coaching metrics, and more via the Gong API.',
docsLink: 'https://docs.sim.ai/tools/gong',
category: 'tools',
integrationType: IntegrationType.SalesIntelligence,
tags: ['meeting', 'sales-engagement', 'speech-to-text'],
bgColor: '#8039DF',
icon: GongIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { GoogleIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { GoogleSearchResponse } from '@/tools/google/types'
export const GoogleSearchBlock: BlockConfig<GoogleSearchResponse> = {
@@ -11,6 +11,8 @@ export const GoogleSearchBlock: BlockConfig<GoogleSearchResponse> = {
longDescription: 'Integrate Google Search into the workflow. Can search the web.',
docsLink: 'https://docs.sim.ai/tools/google_search',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['google-workspace', 'web-scraping', 'seo'],
bgColor: '#E0E0E0',
icon: GoogleIcon,
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleAdsIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const GoogleAdsBlock: BlockConfig = {
type: 'google_ads',
@@ -11,6 +11,8 @@ export const GoogleAdsBlock: BlockConfig = {
'Connect to Google Ads to list accessible accounts, list campaigns, view ad group details, get performance metrics, and run custom GAQL queries.',
docsLink: 'https://docs.sim.ai/tools/google_ads',
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['marketing', 'google-workspace', 'data-analytics'],
bgColor: '#E0E0E0',
icon: GoogleAdsIcon,
authMode: AuthMode.OAuth,
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleBigQueryIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const GoogleBigQueryBlock: BlockConfig = {
type: 'google_bigquery',
@@ -11,6 +11,8 @@ export const GoogleBigQueryBlock: BlockConfig = {
'Connect to Google BigQuery to run SQL queries, list datasets and tables, get table metadata, and insert rows.',
docsLink: 'https://docs.sim.ai/tools/google_bigquery',
category: 'tools',
integrationType: IntegrationType.Databases,
tags: ['data-warehouse', 'google-workspace', 'data-analytics'],
bgColor: '#E0E0E0',
icon: GoogleBigQueryIcon,
authMode: AuthMode.OAuth,
+3 -1
View File
@@ -1,6 +1,6 @@
import { GoogleBooksIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const GoogleBooksBlock: BlockConfig = {
type: 'google_books',
@@ -11,6 +11,8 @@ export const GoogleBooksBlock: BlockConfig = {
'Search for books using the Google Books API. Find volumes by title, author, ISBN, or keywords, and retrieve detailed information about specific books including descriptions, ratings, and publication details.',
docsLink: 'https://docs.sim.ai/tools/google_books',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['google-workspace', 'knowledge-base', 'content-management'],
bgColor: '#E0E0E0',
icon: GoogleBooksIcon,
+5 -1
View File
@@ -1,7 +1,7 @@
import { GoogleCalendarIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { createVersionedToolSelector } from '@/blocks/utils'
import type { GoogleCalendarResponse } from '@/tools/google_calendar/types'
@@ -14,6 +14,8 @@ export const GoogleCalendarBlock: BlockConfig<GoogleCalendarResponse> = {
'Integrate Google Calendar into the workflow. Can create, read, update, and list calendar events.',
docsLink: 'https://docs.sim.ai/tools/google_calendar',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['calendar', 'scheduling', 'google-workspace'],
bgColor: '#E0E0E0',
icon: GoogleCalendarIcon,
hideFromToolbar: true,
@@ -648,6 +650,8 @@ export const GoogleCalendarV2Block: BlockConfig<GoogleCalendarResponse> = {
type: 'google_calendar_v2',
name: 'Google Calendar',
hideFromToolbar: false,
integrationType: IntegrationType.Productivity,
tags: ['calendar', 'scheduling', 'google-workspace'],
tools: {
...GoogleCalendarBlock.tools,
access: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleContactsIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { GoogleContactsResponse } from '@/tools/google_contacts/types'
export const GoogleContactsBlock: BlockConfig<GoogleContactsResponse> = {
@@ -13,6 +13,8 @@ export const GoogleContactsBlock: BlockConfig<GoogleContactsResponse> = {
'Integrate Google Contacts into the workflow. Can create, read, update, delete, list, and search contacts.',
docsLink: 'https://docs.sim.ai/tools/google_contacts',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['google-workspace', 'customer-support', 'enrichment'],
bgColor: '#E0E0E0',
icon: GoogleContactsIcon,
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleDocsIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { GoogleDocsResponse } from '@/tools/google_docs/types'
export const GoogleDocsBlock: BlockConfig<GoogleDocsResponse> = {
@@ -13,6 +13,8 @@ export const GoogleDocsBlock: BlockConfig<GoogleDocsResponse> = {
'Integrate Google Docs into the workflow. Can read, write, and create documents.',
docsLink: 'https://docs.sim.ai/tools/google_docs',
category: 'tools',
integrationType: IntegrationType.Documents,
tags: ['google-workspace', 'document-processing', 'content-management'],
bgColor: '#E0E0E0',
icon: GoogleDocsIcon,
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleDriveIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { GoogleDriveResponse } from '@/tools/google_drive/types'
@@ -14,6 +14,8 @@ export const GoogleDriveBlock: BlockConfig<GoogleDriveResponse> = {
'Integrate Google Drive into the workflow. Can create, upload, download, copy, move, delete, share files and manage permissions.',
docsLink: 'https://docs.sim.ai/tools/google_drive',
category: 'tools',
integrationType: IntegrationType.FileStorage,
tags: ['cloud', 'google-workspace', 'document-processing'],
bgColor: '#E0E0E0',
icon: GoogleDriveIcon,
subBlocks: [
+3
View File
@@ -1,6 +1,7 @@
import { GoogleFormsIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import { getTrigger } from '@/triggers'
export const GoogleFormsBlock: BlockConfig = {
@@ -11,6 +12,8 @@ export const GoogleFormsBlock: BlockConfig = {
'Integrate Google Forms into your workflow. Read form structure, get responses, create forms, update content, and manage notification watches.',
docsLink: 'https://docs.sim.ai/tools/google_forms',
category: 'tools',
integrationType: IntegrationType.Documents,
tags: ['google-workspace', 'forms', 'data-analytics'],
bgColor: '#E0E0E0',
icon: GoogleFormsIcon,
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleGroupsIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const GoogleGroupsBlock: BlockConfig = {
type: 'google_groups',
@@ -12,6 +12,8 @@ export const GoogleGroupsBlock: BlockConfig = {
'Connect to Google Workspace to create, update, and manage groups and their members using the Admin SDK Directory API.',
docsLink: 'https://developers.google.com/admin-sdk/directory/v1/guides/manage-groups',
category: 'tools',
integrationType: IntegrationType.Communication,
tags: ['google-workspace', 'messaging', 'identity'],
bgColor: '#E8F0FE',
icon: GoogleGroupsIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { GoogleMapsIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
export const GoogleMapsBlock: BlockConfig = {
type: 'google_maps',
@@ -9,6 +10,8 @@ export const GoogleMapsBlock: BlockConfig = {
'Integrate Google Maps Platform APIs into your workflow. Supports geocoding addresses to coordinates, reverse geocoding, getting directions between locations, calculating distance matrices, searching for places, retrieving place details, elevation data, and timezone information.',
docsLink: 'https://docs.sim.ai/tools/google_maps',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['google-workspace', 'enrichment'],
bgColor: '#E0E0E0',
icon: GoogleMapsIcon,
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleMeetIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { GoogleMeetResponse } from '@/tools/google_meet/types'
export const GoogleMeetBlock: BlockConfig<GoogleMeetResponse> = {
@@ -12,6 +12,8 @@ export const GoogleMeetBlock: BlockConfig<GoogleMeetResponse> = {
'Integrate Google Meet into your workflow. Create meeting spaces, get space details, end conferences, list conference records, and view participants.',
docsLink: 'https://docs.sim.ai/tools/google_meet',
category: 'tools',
integrationType: IntegrationType.Communication,
tags: ['meeting', 'google-workspace', 'scheduling'],
bgColor: '#E0E0E0',
icon: GoogleMeetIcon,
authMode: AuthMode.OAuth,
+3 -1
View File
@@ -1,5 +1,5 @@
import { GooglePagespeedIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { GooglePagespeedAnalyzeResponse } from '@/tools/google_pagespeed/types'
export const GooglePagespeedBlock: BlockConfig<GooglePagespeedAnalyzeResponse> = {
@@ -10,6 +10,8 @@ export const GooglePagespeedBlock: BlockConfig<GooglePagespeedAnalyzeResponse> =
'Analyze web pages for performance, accessibility, SEO, and best practices using Google PageSpeed Insights API powered by Lighthouse.',
docsLink: 'https://docs.sim.ai/tools/google_pagespeed',
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['google-workspace', 'seo', 'monitoring'],
bgColor: '#E0E0E0',
icon: GooglePagespeedIcon,
authMode: AuthMode.ApiKey,
+5 -1
View File
@@ -1,7 +1,7 @@
import { GoogleSheetsIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { createVersionedToolSelector } from '@/blocks/utils'
import type { GoogleSheetsResponse, GoogleSheetsV2Response } from '@/tools/google_sheets/types'
@@ -16,6 +16,8 @@ export const GoogleSheetsBlock: BlockConfig<GoogleSheetsResponse> = {
'Integrate Google Sheets into the workflow. Can read, write, append, and update data.',
docsLink: 'https://docs.sim.ai/tools/google_sheets',
category: 'tools',
integrationType: IntegrationType.Documents,
tags: ['spreadsheet', 'google-workspace', 'data-analytics'],
bgColor: '#E0E0E0',
icon: GoogleSheetsIcon,
subBlocks: [
@@ -302,6 +304,8 @@ export const GoogleSheetsV2Block: BlockConfig<GoogleSheetsV2Response> = {
'Integrate Google Sheets into the workflow with explicit sheet selection. Can read, write, append, update, clear data, create spreadsheets, get spreadsheet info, and copy sheets.',
docsLink: 'https://docs.sim.ai/tools/google_sheets',
category: 'tools',
integrationType: IntegrationType.Documents,
tags: ['spreadsheet', 'google-workspace', 'data-analytics'],
bgColor: '#E0E0E0',
icon: GoogleSheetsIcon,
subBlocks: [
+5 -1
View File
@@ -2,7 +2,7 @@ import { GoogleSlidesIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import { resolveHttpsUrlFromFileInput } from '@/lib/uploads/utils/file-utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { GoogleSlidesResponse } from '@/tools/google_slides/types'
@@ -16,6 +16,8 @@ export const GoogleSlidesBlock: BlockConfig<GoogleSlidesResponse> = {
'Integrate Google Slides into the workflow. Can read, write, create presentations, replace text, add slides, add images, get thumbnails, get page details, delete objects, duplicate objects, reorder slides, create tables, create shapes, and insert text.',
docsLink: 'https://docs.sim.ai/tools/google_slides',
category: 'tools',
integrationType: IntegrationType.Documents,
tags: ['google-workspace', 'document-processing', 'content-management'],
bgColor: '#E0E0E0',
icon: GoogleSlidesIcon,
subBlocks: [
@@ -955,6 +957,8 @@ export const GoogleSlidesV2Block: BlockConfig<GoogleSlidesResponse> = {
name: 'Google Slides',
description: 'Read, write, and create presentations',
hideFromToolbar: false,
integrationType: IntegrationType.Documents,
tags: ['google-workspace', 'document-processing', 'content-management'],
subBlocks: googleSlidesV2SubBlocks,
tools: {
access: GoogleSlidesBlock.tools!.access,
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleTasksIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { GoogleTasksResponse } from '@/tools/google_tasks/types'
export const GoogleTasksBlock: BlockConfig<GoogleTasksResponse> = {
@@ -12,6 +12,8 @@ export const GoogleTasksBlock: BlockConfig<GoogleTasksResponse> = {
'Integrate Google Tasks into your workflow. Create, read, update, delete, and list tasks and task lists.',
docsLink: 'https://docs.sim.ai/tools/google_tasks',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['google-workspace', 'project-management', 'scheduling'],
bgColor: '#E0E0E0',
icon: GoogleTasksIcon,
authMode: AuthMode.OAuth,
+3 -1
View File
@@ -1,5 +1,5 @@
import { GoogleTranslateIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
const SUPPORTED_LANGUAGES = [
{ label: 'Afrikaans', id: 'af' },
@@ -145,6 +145,8 @@ export const GoogleTranslateBlock: BlockConfig = {
'Translate and detect languages using the Google Cloud Translation API. Supports auto-detection of the source language.',
docsLink: 'https://docs.sim.ai/tools/google_translate',
category: 'tools',
integrationType: IntegrationType.AI,
tags: ['google-workspace', 'content-management', 'automation'],
bgColor: '#E0E0E0',
icon: GoogleTranslateIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,7 +1,7 @@
import { GoogleVaultIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const GoogleVaultBlock: BlockConfig = {
type: 'google_vault',
@@ -12,6 +12,8 @@ export const GoogleVaultBlock: BlockConfig = {
'Connect Google Vault to create exports, list exports, and manage holds within matters.',
docsLink: 'https://developers.google.com/vault',
category: 'tools',
integrationType: IntegrationType.Security,
tags: ['google-workspace', 'secrets-management', 'document-processing'],
bgColor: '#E8F0FE',
icon: GoogleVaultIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { GrafanaIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { GrafanaResponse } from '@/tools/grafana/types'
export const GrafanaBlock: BlockConfig<GrafanaResponse> = {
@@ -12,6 +12,8 @@ export const GrafanaBlock: BlockConfig<GrafanaResponse> = {
'Integrate Grafana into workflows. Manage dashboards, alerts, annotations, data sources, folders, and monitor health status.',
docsLink: 'https://docs.sim.ai/tools/grafana',
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['monitoring', 'data-analytics'],
bgColor: '#E0E0E0',
icon: GrafanaIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { GrainIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { getTrigger } from '@/triggers'
import { grainTriggerOptions } from '@/triggers/grain/utils'
@@ -13,6 +13,8 @@ export const GrainBlock: BlockConfig = {
longDescription:
'Integrate Grain into your workflow. Access meeting recordings, transcripts, highlights, and AI-generated summaries. Can also trigger workflows based on Grain webhook events.',
category: 'tools',
integrationType: IntegrationType.Media,
tags: ['meeting', 'note-taking'],
docsLink: 'https://docs.sim.ai/tools/grain',
icon: GrainIcon,
bgColor: '#F6FAF9',
+3 -1
View File
@@ -1,5 +1,5 @@
import { GreenhouseIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { GreenhouseResponse } from '@/tools/greenhouse/types'
export const GreenhouseBlock: BlockConfig<GreenhouseResponse> = {
@@ -10,6 +10,8 @@ export const GreenhouseBlock: BlockConfig<GreenhouseResponse> = {
'Integrate Greenhouse into the workflow. List and retrieve candidates, jobs, applications, users, departments, offices, and job stages from your Greenhouse ATS account.',
docsLink: 'https://docs.sim.ai/tools/greenhouse',
category: 'tools',
integrationType: IntegrationType.HR,
tags: ['hiring'],
bgColor: '#469776',
icon: GreenhouseIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,6 +1,6 @@
import { GreptileIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { GreptileResponse } from '@/tools/greptile/types'
export const GreptileBlock: BlockConfig<GreptileResponse> = {
@@ -12,6 +12,8 @@ export const GreptileBlock: BlockConfig<GreptileResponse> = {
'Query and search codebases using natural language with Greptile. Get AI-generated answers about your code, find relevant files, and understand complex codebases.',
docsLink: 'https://docs.sim.ai/tools/greptile',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['version-control', 'knowledge-base'],
bgColor: '#e5e5e5',
icon: GreptileIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { HexIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { HexResponse } from '@/tools/hex/types'
export const HexBlock: BlockConfig<HexResponse> = {
@@ -11,6 +11,8 @@ export const HexBlock: BlockConfig<HexResponse> = {
'Integrate Hex into your workflow. Run projects, check run status, manage collections and groups, list users, and view data connections. Requires a Hex API token.',
docsLink: 'https://docs.sim.ai/tools/hex',
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['data-warehouse', 'data-analytics'],
bgColor: '#14151A',
icon: HexIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,7 +1,7 @@
import { HubspotIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { HubSpotResponse } from '@/tools/hubspot/types'
import { getTrigger } from '@/triggers'
import { hubspotAllTriggerOptions } from '@/triggers/hubspot/utils'
@@ -15,6 +15,8 @@ export const HubSpotBlock: BlockConfig<HubSpotResponse> = {
'Integrate HubSpot into your workflow. Manage contacts, companies, deals, tickets, and other CRM objects with powerful automation capabilities. Can be used in trigger mode to start workflows when contacts are created, deleted, or updated.',
docsLink: 'https://docs.sim.ai/tools/hubspot',
category: 'tools',
integrationType: IntegrationType.CRM,
tags: ['marketing', 'sales-engagement', 'customer-support'],
bgColor: '#FF7A59',
icon: HubspotIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { HuggingFaceIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { HuggingFaceChatResponse } from '@/tools/huggingface/types'
export const HuggingFaceBlock: BlockConfig<HuggingFaceChatResponse> = {
@@ -12,6 +12,8 @@ export const HuggingFaceBlock: BlockConfig<HuggingFaceChatResponse> = {
'Integrate Hugging Face into the workflow. Can generate completions using the Hugging Face Inference API.',
docsLink: 'https://docs.sim.ai/tools/huggingface',
category: 'tools',
integrationType: IntegrationType.AI,
tags: ['llm', 'agentic'],
bgColor: '#0B0F19',
icon: HuggingFaceIcon,
subBlocks: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { HunterIOIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { HunterResponse } from '@/tools/hunter/types'
export const HunterBlock: BlockConfig<HunterResponse> = {
@@ -11,6 +11,8 @@ export const HunterBlock: BlockConfig<HunterResponse> = {
'Integrate Hunter into the workflow. Can search domains, find email addresses, verify email addresses, discover companies, find companies, and count email addresses.',
docsLink: 'https://docs.sim.ai/tools/hunter',
category: 'tools',
integrationType: IntegrationType.SalesIntelligence,
tags: ['enrichment', 'sales-engagement'],
bgColor: '#E0E0E0',
icon: HunterIOIcon,
subBlocks: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { ImageIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { DalleResponse } from '@/tools/openai/types'
export const ImageGeneratorBlock: BlockConfig<DalleResponse> = {
@@ -11,6 +11,8 @@ export const ImageGeneratorBlock: BlockConfig<DalleResponse> = {
'Integrate Image Generator into the workflow. Can generate images using DALL-E 3 or GPT Image.',
docsLink: 'https://docs.sim.ai/tools/image_generator',
category: 'tools',
integrationType: IntegrationType.AI,
tags: ['image-generation', 'llm'],
bgColor: '#4D5FFF',
icon: ImageIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { MailServerIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import { getTrigger } from '@/triggers'
export const ImapBlock: BlockConfig = {
@@ -9,6 +10,8 @@ export const ImapBlock: BlockConfig = {
longDescription:
'Connect to any email server via IMAP protocol to trigger workflows when new emails are received. Supports Gmail, Outlook, Yahoo, and any other IMAP-compatible email provider.',
category: 'triggers',
integrationType: IntegrationType.Email,
tags: ['messaging', 'automation'],
bgColor: '#6366F1',
icon: MailServerIcon,
triggerAllowed: true,
+3 -1
View File
@@ -1,6 +1,6 @@
import { IncidentioIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { IncidentioResponse } from '@/tools/incidentio/types'
export const IncidentioBlock: BlockConfig<IncidentioResponse> = {
@@ -12,6 +12,8 @@ export const IncidentioBlock: BlockConfig<IncidentioResponse> = {
'Integrate incident.io into the workflow. Manage incidents, actions, follow-ups, workflows, schedules, escalations, custom fields, and more.',
docsLink: 'https://docs.sim.ai/tools/incidentio',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['incident-management', 'monitoring'],
bgColor: '#E0E0E0',
icon: IncidentioIcon,
subBlocks: [
+3 -1
View File
@@ -1,6 +1,6 @@
import { InfisicalIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { InfisicalResponse } from '@/tools/infisical/types'
export const InfisicalBlock: BlockConfig<InfisicalResponse> = {
@@ -11,6 +11,8 @@ export const InfisicalBlock: BlockConfig<InfisicalResponse> = {
'Integrate Infisical into your workflow. List, get, create, update, and delete secrets across project environments.',
docsLink: 'https://docs.sim.ai/tools/infisical',
category: 'tools',
integrationType: IntegrationType.Security,
tags: ['secrets-management'],
bgColor: '#F7FE62',
icon: InfisicalIcon,
authMode: AuthMode.ApiKey,
+5 -1
View File
@@ -1,6 +1,6 @@
import { IntercomIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { createVersionedToolSelector } from '@/blocks/utils'
export const IntercomBlock: BlockConfig = {
@@ -13,6 +13,8 @@ export const IntercomBlock: BlockConfig = {
docsLink: 'https://docs.sim.ai/tools/intercom',
authMode: AuthMode.ApiKey,
category: 'tools',
integrationType: IntegrationType.CustomerSupport,
tags: ['customer-support', 'messaging'],
bgColor: '#E0E0E0',
icon: IntercomIcon,
subBlocks: [
@@ -1404,6 +1406,8 @@ export const IntercomV2Block: BlockConfig = {
...IntercomBlock,
type: 'intercom_v2',
name: 'Intercom',
integrationType: IntegrationType.CustomerSupport,
tags: ['customer-support', 'messaging'],
hideFromToolbar: false,
tools: {
...IntercomBlock.tools,
+3 -1
View File
@@ -1,5 +1,5 @@
import { JinaAIIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { ReadUrlResponse, SearchResponse } from '@/tools/jina/types'
export const JinaBlock: BlockConfig<ReadUrlResponse | SearchResponse> = {
@@ -11,6 +11,8 @@ export const JinaBlock: BlockConfig<ReadUrlResponse | SearchResponse> = {
'Integrate Jina AI into the workflow. Search the web and get LLM-friendly results, or extract clean content from specific URLs with advanced parsing options.',
docsLink: 'https://docs.sim.ai/tools/jina',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['web-scraping', 'knowledge-base'],
bgColor: '#333333',
icon: JinaAIIcon,
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { JiraIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { JiraResponse } from '@/tools/jira/types'
import { getTrigger } from '@/triggers'
@@ -16,6 +16,8 @@ export const JiraBlock: BlockConfig<JiraResponse> = {
'Integrate Jira into the workflow. Can read, write, and update issues. Can also trigger workflows based on Jira webhook events.',
docsLink: 'https://docs.sim.ai/tools/jira',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['project-management', 'ticketing'],
bgColor: '#E0E0E0',
icon: JiraIcon,
subBlocks: [
@@ -1,7 +1,7 @@
import { JiraServiceManagementIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { JsmResponse } from '@/tools/jsm/types'
export const JiraServiceManagementBlock: BlockConfig<JsmResponse> = {
@@ -13,6 +13,8 @@ export const JiraServiceManagementBlock: BlockConfig<JsmResponse> = {
'Integrate with Jira Service Management for IT service management. Create and manage service requests, handle customers and organizations, track SLAs, and manage queues.',
docsLink: 'https://docs.sim.ai/tools/jira-service-management',
category: 'tools',
integrationType: IntegrationType.CustomerSupport,
tags: ['customer-support', 'ticketing', 'incident-management'],
bgColor: '#E0E0E0',
icon: JiraServiceManagementIcon,
subBlocks: [
+5 -1
View File
@@ -1,6 +1,6 @@
import { KalshiIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { createVersionedToolSelector } from '@/blocks/utils'
export const KalshiBlock: BlockConfig = {
@@ -12,6 +12,8 @@ export const KalshiBlock: BlockConfig = {
docsLink: 'https://docs.sim.ai/tools/kalshi',
authMode: AuthMode.ApiKey,
category: 'tools',
integrationType: IntegrationType.Analytics,
tags: ['prediction-markets', 'data-analytics'],
hideFromToolbar: true,
bgColor: '#09C285',
icon: KalshiIcon,
@@ -707,6 +709,8 @@ export const KalshiV2Block: BlockConfig = {
description: 'Access prediction markets and trade on Kalshi',
longDescription:
'Integrate Kalshi prediction markets into the workflow. Can get markets, market, events, event, balance, positions, orders, orderbook, trades, candlesticks, fills, series, exchange status, and place/cancel/amend trades.',
integrationType: IntegrationType.Analytics,
tags: ['prediction-markets', 'data-analytics'],
hideFromToolbar: false,
tools: {
...KalshiBlock.tools,
+3 -1
View File
@@ -1,5 +1,5 @@
import { LangsmithIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { LangsmithResponse } from '@/tools/langsmith/types'
export const LangsmithBlock: BlockConfig<LangsmithResponse> = {
@@ -10,6 +10,8 @@ export const LangsmithBlock: BlockConfig<LangsmithResponse> = {
'Send run data to LangSmith to trace executions, attach metadata, and monitor workflow performance.',
docsLink: 'https://docs.sim.ai/tools/langsmith',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['monitoring', 'llm', 'data-analytics'],
bgColor: '#181C1E',
icon: LangsmithIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,5 +1,5 @@
import { LemlistIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { LemlistResponse } from '@/tools/lemlist/types'
import { getTrigger } from '@/triggers'
@@ -12,6 +12,8 @@ export const LemlistBlock: BlockConfig<LemlistResponse> = {
'Integrate Lemlist into your workflow. Retrieve campaign activities and replies, get lead information, and send emails through the Lemlist inbox.',
docsLink: 'https://docs.sim.ai/tools/lemlist',
category: 'tools',
integrationType: IntegrationType.Email,
tags: ['sales-engagement', 'email-marketing', 'automation'],
bgColor: '#316BFF',
icon: LemlistIcon,
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { LinearIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { LinearResponse } from '@/tools/linear/types'
import { getTrigger } from '@/triggers'
@@ -16,6 +16,8 @@ export const LinearBlock: BlockConfig<LinearResponse> = {
'Integrate Linear into the workflow. Can manage issues, comments, projects, labels, workflow states, cycles, attachments, and more. Can also trigger workflows based on Linear webhook events.',
docsLink: 'https://docs.sim.ai/tools/linear',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['project-management', 'ticketing'],
icon: LinearIcon,
bgColor: '#5E6AD2',
subBlocks: [
+3 -1
View File
@@ -1,7 +1,7 @@
import { LinkedInIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { LinkedInResponse } from '@/tools/linkedin/types'
export const LinkedInBlock: BlockConfig<LinkedInResponse> = {
@@ -13,6 +13,8 @@ export const LinkedInBlock: BlockConfig<LinkedInResponse> = {
'Integrate LinkedIn into workflows. Share posts to your personal feed and access your LinkedIn profile information.',
docsLink: 'https://docs.sim.ai/tools/linkedin',
category: 'tools',
integrationType: IntegrationType.Social,
tags: ['marketing', 'sales-engagement', 'enrichment'],
bgColor: '#0072B1',
icon: LinkedInIcon,
subBlocks: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { LinkupIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { LinkupSearchToolResponse } from '@/tools/linkup/types'
export const LinkupBlock: BlockConfig<LinkupSearchToolResponse> = {
@@ -10,6 +10,8 @@ export const LinkupBlock: BlockConfig<LinkupSearchToolResponse> = {
longDescription: 'Integrate Linkup into the workflow. Can search the web.',
docsLink: 'https://docs.sim.ai/tools/linkup',
category: 'tools',
integrationType: IntegrationType.Search,
tags: ['web-scraping', 'enrichment'],
bgColor: '#D6D3C7',
icon: LinkupIcon,
+3 -1
View File
@@ -1,6 +1,6 @@
import { LoopsIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { LoopsResponse } from '@/tools/loops/types'
export const LoopsBlock: BlockConfig<LoopsResponse> = {
@@ -12,6 +12,8 @@ export const LoopsBlock: BlockConfig<LoopsResponse> = {
'Integrate Loops into the workflow. Create and manage contacts, send transactional emails, and trigger event-based automations.',
docsLink: 'https://docs.sim.ai/tools/loops',
category: 'tools',
integrationType: IntegrationType.Email,
tags: ['email-marketing', 'marketing', 'automation'],
bgColor: '#FAFAF9',
icon: LoopsIcon,
subBlocks: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { LumaIcon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
export const LumaBlock: BlockConfig = {
type: 'luma',
@@ -9,6 +9,8 @@ export const LumaBlock: BlockConfig = {
'Integrate Luma into the workflow. Can create events, update events, get event details, list calendar events, get guest lists, and add guests to events.',
docsLink: 'https://docs.sim.ai/tools/luma',
category: 'tools',
integrationType: IntegrationType.Productivity,
tags: ['events', 'calendar', 'scheduling'],
bgColor: '#FFFFFF',
icon: LumaIcon,
authMode: AuthMode.ApiKey,
+3 -1
View File
@@ -1,6 +1,6 @@
import { MailchimpIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
export const MailchimpBlock: BlockConfig = {
type: 'mailchimp',
@@ -11,6 +11,8 @@ export const MailchimpBlock: BlockConfig = {
docsLink: 'https://docs.sim.ai/tools/mailchimp',
authMode: AuthMode.ApiKey,
category: 'tools',
integrationType: IntegrationType.Email,
tags: ['email-marketing', 'marketing', 'automation'],
bgColor: '#FFE01B',
icon: MailchimpIcon,
subBlocks: [
+3
View File
@@ -1,5 +1,6 @@
import { MailgunIcon } from '@/components/icons'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import type { SendMessageResult } from '@/tools/mailgun/types'
export const MailgunBlock: BlockConfig<SendMessageResult> = {
@@ -10,6 +11,8 @@ export const MailgunBlock: BlockConfig<SendMessageResult> = {
'Integrate Mailgun into your workflow. Send transactional emails, manage mailing lists and members, view domain information, and track email events. Supports text and HTML emails, tags for tracking, and comprehensive list management.',
docsLink: 'https://docs.sim.ai/tools/mailgun',
category: 'tools',
integrationType: IntegrationType.Email,
tags: ['messaging', 'email-marketing'],
bgColor: '#E0E0E0',
icon: MailgunIcon,
+3
View File
@@ -1,6 +1,7 @@
import { McpIcon } from '@/components/icons'
import { createMcpToolId } from '@/lib/mcp/shared'
import type { BlockConfig } from '@/blocks/types'
import { IntegrationType } from '@/blocks/types'
import type { ToolResponse } from '@/tools/types'
export interface McpResponse extends ToolResponse {
@@ -15,6 +16,8 @@ export const McpBlock: BlockConfig<McpResponse> = {
'Integrate MCP into the workflow. Can execute tools from MCP servers. Requires MCP servers in workspace settings.',
docsLink: 'https://docs.sim.ai/mcp',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['agentic', 'automation', 'llm'],
bgColor: '#181C1E',
icon: McpIcon,
subBlocks: [
+3 -1
View File
@@ -1,5 +1,5 @@
import { Mem0Icon } from '@/components/icons'
import { AuthMode, type BlockConfig } from '@/blocks/types'
import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types'
import type { Mem0Response } from '@/tools/mem0/types'
export const Mem0Block: BlockConfig<Mem0Response> = {
@@ -11,6 +11,8 @@ export const Mem0Block: BlockConfig<Mem0Response> = {
bgColor: '#181C1E',
icon: Mem0Icon,
category: 'tools',
integrationType: IntegrationType.AI,
tags: ['llm', 'knowledge-base', 'agentic'],
docsLink: 'https://docs.sim.ai/tools/mem0',
subBlocks: [
{
+3 -1
View File
@@ -1,7 +1,7 @@
import { AzureIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { MicrosoftAdResponse } from '@/tools/microsoft_ad/types'
export const MicrosoftAdBlock: BlockConfig<MicrosoftAdResponse> = {
@@ -12,6 +12,8 @@ export const MicrosoftAdBlock: BlockConfig<MicrosoftAdResponse> = {
'Integrate Azure Active Directory into your workflows. List, create, update, and delete users and groups. Manage group memberships programmatically.',
docsLink: 'https://docs.sim.ai/tools/microsoft_ad',
category: 'tools',
integrationType: IntegrationType.Security,
tags: ['identity', 'microsoft-365'],
bgColor: '#0078D4',
icon: AzureIcon,
authMode: AuthMode.OAuth,
@@ -1,7 +1,7 @@
import { MicrosoftDataverseIcon } from '@/components/icons'
import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import type { DataverseResponse } from '@/tools/microsoft_dataverse/types'
@@ -14,6 +14,8 @@ export const MicrosoftDataverseBlock: BlockConfig<DataverseResponse> = {
'Integrate Microsoft Dataverse into your workflow. Create, read, update, delete, upsert, associate, query, search, and execute actions and functions against Dataverse tables using the Web API. Supports bulk operations, FetchXML, file uploads, and relevance search. Works with Dynamics 365, Power Platform, and custom Dataverse environments.',
docsLink: 'https://docs.sim.ai/tools/microsoft_dataverse',
category: 'tools',
integrationType: IntegrationType.Databases,
tags: ['microsoft-365', 'data-warehouse', 'cloud'],
bgColor: '#E0E0E0',
icon: MicrosoftDataverseIcon,
subBlocks: [

Some files were not shown because too many files have changed in this diff Show More