feat(blocks): add external-service url to block metadata (#5032)

* feat(blocks): add external-service url to block metadata

- Add optional `url` field to BlockMeta for the integration's own homepage (e.g. exa.ai, salesforce.com), distinct from docsLink which points at Sim's docs
- Populate `url` on all 209 integration blocks with verified homepages (protocol/internal blocks without a single vendor site are left without one)
- Document the field in the add-block skill and command, with rule + checklist entries
- Backfill missing docsLink on dspy and add a few accurate tag entries

* fix(blocks): drop tag backfills to avoid catalog drift

Revert the agiloft/exa/tailscale tag additions; integrations.json (used by landing/SEO) is not regenerated here, so the expanded tags would diverge from getAllBlockMeta(). Keep the url additions, which are not projected into integrations.json.

* fix(blocks): correct inaccurate tool URLs flagged in review

- spotify: open.spotify.com (web player) -> www.spotify.com brand homepage
- sts: point to the STS API reference (aws.amazon.com/sts 404s; STS has no standalone product page) instead of the shared IAM page
- microsoft: drop locale-specific /en-us/ segments across Excel, Teams, OneDrive, SharePoint, Outlook, Dataverse, Planner, Entra ID, and shorten OneDrive/Outlook to stable product roots
This commit is contained in:
Waleed
2026-06-13 12:37:50 -07:00
committed by GitHub
parent 746520c1a7
commit 1205730c35
212 changed files with 231 additions and 0 deletions
+3
View File
@@ -640,6 +640,7 @@ import type { BlockConfig, BlockMeta } from '@/blocks/types'
export const {Service}BlockMeta = {
tags: ['messaging', 'automation'], // Same tags as the block's tags field
url: 'https://{service}.com', // Canonical homepage of the external service
templates: [ // Optional but strongly encouraged
{
icon: {Service}Icon,
@@ -666,6 +667,7 @@ export const {Service}BlockMeta = {
- **Import `BlockMeta`** from `@/blocks/types` alongside `BlockConfig`
- **`tags`** must match the `tags` array on the block config exactly
- **`url`** is the canonical homepage of the external service the block integrates with (e.g. `'https://exa.ai'`, `'https://salesforce.com'`) — the catalog "link back to the tool". It is distinct from `BlockConfig.docsLink`, which points at Sim's own integration docs on `docs.sim.ai`. Use the service's real root domain over `https` (verify it actually resolves), no tracking params, no trailing slash. Omit `url` only for first-party/built-in blocks that have no external service (e.g. `agent`, `function`, `condition`, `api`, `response`)
- **Templates are optional** but should be added for any integration that has a recognizable use case — aim for 2–4 templates per block
- **Template `prompt`** should start with "Build a workflow that..." or "Create a workflow that..." and be concrete enough to generate a real workflow in Mothership
- **Template `modules`** lists the Sim modules the template relies on: `'knowledge-base' | 'tables' | 'files' | 'workflows' | 'scheduled' | 'agent'`
@@ -906,6 +908,7 @@ All tool IDs referenced in `tools.access` and returned by `tools.config.tool` MU
- [ ] Outputs match tool outputs
- [ ] Block registered in `registry.ts` blocks object (alphabetically)
- [ ] `{Service}BlockMeta` exported at bottom of block file with `tags` and `templates`
- [ ] `url` set on `{Service}BlockMeta` to the external service's verified homepage (omit only for first-party blocks with no external service)
- [ ] `skills` added to `{Service}BlockMeta`, each grounded in the block's `tools.access` and derived from a real online-sourced use case (not invented)
- [ ] `BlockMeta` imported from `@/blocks/types` alongside `BlockConfig`
- [ ] Block meta registered in `registry.ts` blocksMeta object (alphabetically)
+2
View File
@@ -794,6 +794,7 @@ import type { BlockMeta } from '@/blocks/types'
export const {Service}BlockMeta = {
tags: ['tag1', 'tag2'], // IntegrationTag[]
url: 'https://{service}.com', // external service homepage (verify it resolves) — NOT docs.sim.ai
templates: [
{
icon: {Service}Icon,
@@ -845,6 +846,7 @@ Derive templates from the service's real use cases. Each prompt should name a co
- [ ] Optional/rarely-used fields set to `mode: 'advanced'`
- [ ] Timestamps and complex inputs have `wandConfig` enabled
- [ ] Exported `{Service}BlockMeta` with at least 7 templates
- [ ] `url` set on `{Service}BlockMeta` to the external service's verified homepage (omit only for first-party blocks with no external service)
- [ ] `skills` added to `{Service}BlockMeta`, each grounded in `tools.access` and sourced from a real online use case (not invented)
## Final Validation (Required)
+1
View File
@@ -623,6 +623,7 @@ export const AgentMailBlock: BlockConfig = {
export const AgentMailBlockMeta = {
tags: ['messaging', 'automation'],
url: 'https://agentmail.to',
templates: [
{
icon: AgentMailIcon,
+1
View File
@@ -752,6 +752,7 @@ export const AgentPhoneBlock: BlockConfig = {
export const AgentPhoneBlockMeta = {
tags: ['messaging', 'automation'],
url: 'https://agentphone.ai',
templates: [
{
icon: AgentPhoneIcon,
+1
View File
@@ -434,6 +434,7 @@ export const AgiloftBlock: BlockConfig = {
export const AgiloftBlockMeta = {
tags: ['automation'],
url: 'https://www.agiloft.com',
templates: [
{
icon: AgiloftIcon,
+1
View File
@@ -575,6 +575,7 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n
export const AhrefsBlockMeta = {
tags: ['seo', 'marketing', 'data-analytics'],
url: 'https://ahrefs.com',
templates: [
{
icon: AhrefsIcon,
+1
View File
@@ -348,6 +348,7 @@ Return ONLY the valid JSON object - no explanations, no markdown.`,
export const AirtableBlockMeta = {
tags: ['spreadsheet', 'automation'],
url: 'https://www.airtable.com',
templates: [
{
icon: AirtableIcon,
+1
View File
@@ -105,6 +105,7 @@ export const AirweaveBlock: BlockConfig<AirweaveSearchResponse> = {
export const AirweaveBlockMeta = {
tags: ['vector-search', 'knowledge-base'],
url: 'https://airweave.ai',
templates: [
{
icon: AirweaveIcon,
+1
View File
@@ -649,6 +649,7 @@ Return ONLY the JSON array.`,
export const AlgoliaBlockMeta = {
tags: ['vector-search', 'knowledge-base'],
url: 'https://www.algolia.com',
templates: [
{
icon: AlgoliaIcon,
+1
View File
@@ -748,6 +748,7 @@ export const AmplitudeBlock: BlockConfig = {
export const AmplitudeBlockMeta = {
tags: ['data-analytics', 'marketing'],
url: 'https://amplitude.com',
templates: [
{
icon: AmplitudeIcon,
+1
View File
@@ -240,6 +240,7 @@ Return ONLY the valid JSON object - no explanations, no markdown.`,
export const ApifyBlockMeta = {
tags: ['web-scraping', 'automation', 'data-analytics'],
url: 'https://apify.com',
templates: [
{
icon: ApifyIcon,
+1
View File
@@ -1375,6 +1375,7 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes
export const ApolloBlockMeta = {
tags: ['enrichment', 'sales-engagement'],
url: 'https://www.apollo.io',
templates: [
{
icon: Users,
+1
View File
@@ -588,6 +588,7 @@ export const AppConfigBlock: BlockConfig<
export const AppConfigBlockMeta = {
tags: ['cloud', 'feature-flags', 'automation'],
url: 'https://aws.amazon.com/systems-manager/features/appconfig',
templates: [
{
icon: AppConfigIcon,
+1
View File
@@ -156,6 +156,7 @@ export const ArxivBlock: BlockConfig<ArxivResponse> = {
export const ArxivBlockMeta = {
tags: ['document-processing', 'knowledge-base'],
url: 'https://arxiv.org',
templates: [
{
icon: ArxivIcon,
+1
View File
@@ -369,6 +369,7 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n
export const AsanaBlockMeta = {
tags: ['project-management', 'ticketing', 'automation'],
url: 'https://asana.com',
templates: [
{
icon: AsanaIcon,
+1
View File
@@ -970,6 +970,7 @@ Output only the ISO 8601 timestamp string, nothing else.`,
export const AshbyBlockMeta = {
tags: ['hiring'],
url: 'https://ashbyhq.com',
templates: [
{
icon: AshbyIcon,
+1
View File
@@ -470,6 +470,7 @@ Return ONLY the SQL query — no explanations, no markdown code blocks.`,
export const AthenaBlockMeta = {
tags: ['cloud', 'data-analytics'],
url: 'https://aws.amazon.com/athena',
templates: [
{
icon: AthenaIcon,
+1
View File
@@ -1327,6 +1327,7 @@ workspace-member.created
export const AttioBlockMeta = {
tags: ['sales-engagement', 'enrichment'],
url: 'https://attio.com',
templates: [
{
icon: AttioIcon,
+1
View File
@@ -627,6 +627,7 @@ export const AzureDevOpsBlock: BlockConfig<AzureDevOpsResponse> = {
export const AzureDevOpsBlockMeta = {
tags: ['version-control', 'ci-cd', 'project-management'],
url: 'https://azure.microsoft.com/products/devops',
templates: [
{
icon: AzureIcon,
+1
View File
@@ -601,6 +601,7 @@ export const BoxBlock: BlockConfig = {
export const BoxBlockMeta = {
tags: ['cloud', 'content-management', 'e-signatures'],
url: 'https://www.box.com',
templates: [
{
icon: BoxCompanyIcon,
+1
View File
@@ -100,6 +100,7 @@ export const BrandfetchBlock: BlockConfig<BrandfetchGetBrandResponse | Brandfetc
export const BrandfetchBlockMeta = {
tags: ['enrichment', 'marketing'],
url: 'https://brandfetch.com',
templates: [
{
icon: BrandfetchIcon,
+1
View File
@@ -572,6 +572,7 @@ export const BrexBlock: BlockConfig<BrexResponse> = {
export const BrexBlockMeta = {
tags: ['payments'],
url: 'https://www.brex.com',
templates: [
{
icon: BrexIcon,
+1
View File
@@ -346,6 +346,7 @@ export const BrightDataBlock: BlockConfig<BrightDataResponse> = {
export const BrightDataBlockMeta = {
tags: ['web-scraping', 'automation'],
url: 'https://brightdata.com',
templates: [
{
icon: BrightDataIcon,
+1
View File
@@ -214,6 +214,7 @@ export const BrowserUseBlock: BlockConfig<BrowserUseResponse> = {
export const BrowserUseBlockMeta = {
tags: ['web-scraping', 'automation', 'agentic'],
url: 'https://browser-use.com',
templates: [
{
icon: BrowserUseIcon,
+1
View File
@@ -920,6 +920,7 @@ Return ONLY valid JSON - no explanations.`,
export const CalComBlockMeta = {
tags: ['scheduling', 'calendar', 'meeting'],
url: 'https://cal.com',
templates: [
{
icon: CalComIcon,
+1
View File
@@ -330,6 +330,7 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes
export const CalendlyBlockMeta = {
tags: ['scheduling', 'calendar', 'meeting'],
url: 'https://calendly.com',
templates: [
{
icon: CalendlyIcon,
+1
View File
@@ -54,6 +54,7 @@ export const CirclebackBlock: BlockConfig = {
export const CirclebackBlockMeta = {
tags: ['meeting', 'note-taking'],
url: 'https://circleback.ai',
templates: [
{
icon: CirclebackIcon,
+1
View File
@@ -71,6 +71,7 @@ Plain Text: Best for populating a table in free-form style.
export const ClayBlockMeta = {
tags: ['enrichment', 'sales-engagement', 'data-analytics'],
url: 'https://www.clay.com',
templates: [
{
icon: ClayIcon,
+1
View File
@@ -412,6 +412,7 @@ export const ClerkBlock: BlockConfig<ClerkResponse> = {
export const ClerkBlockMeta = {
tags: ['identity', 'automation'],
url: 'https://clerk.com',
templates: [
{
icon: ClerkIcon,
+1
View File
@@ -467,6 +467,7 @@ export const ClickHouseBlock: BlockConfig<ClickHouseResponse> = {
export const ClickHouseBlockMeta = {
tags: ['data-warehouse', 'data-analytics'],
url: 'https://clickhouse.com',
templates: [
{
icon: ClickHouseIcon,
+1
View File
@@ -1100,6 +1100,7 @@ Return ONLY the comma-separated URLs - no explanations, no extra text.`,
export const CloudflareBlockMeta = {
tags: ['cloud', 'monitoring'],
url: 'https://www.cloudflare.com',
templates: [
{
icon: CloudflareIcon,
+1
View File
@@ -331,6 +331,7 @@ export const CloudFormationBlock: BlockConfig<
export const CloudFormationBlockMeta = {
tags: ['cloud'],
url: 'https://aws.amazon.com/cloudformation',
templates: [
{
icon: CloudFormationIcon,
+1
View File
@@ -879,6 +879,7 @@ Return ONLY the numeric timestamp - no explanations, no quotes, no extra text.`,
export const CloudWatchBlockMeta = {
tags: ['cloud', 'monitoring'],
url: 'https://aws.amazon.com/cloudwatch',
templates: [
{
icon: CloudWatchIcon,
+1
View File
@@ -504,6 +504,7 @@ export const CodePipelineBlock: BlockConfig<
export const CodePipelineBlockMeta = {
tags: ['cloud', 'ci-cd'],
url: 'https://aws.amazon.com/codepipeline',
templates: [
{
icon: CodePipelineIcon,
+1
View File
@@ -1604,6 +1604,7 @@ export const ConfluenceV2Block: BlockConfig<ConfluenceResponse> = {
export const ConfluenceBlockMeta = {
tags: ['knowledge-base', 'content-management', 'note-taking'],
url: 'https://www.atlassian.com/software/confluence',
templates: [
{
icon: PagerDutyIcon,
+1
View File
@@ -199,6 +199,7 @@ Return ONLY the JSON object - no explanations, no markdown, no extra text.`,
export const ConvexBlockMeta = {
tags: ['cloud'],
url: 'https://www.convex.dev',
templates: [
{
icon: ConvexIcon,
+1
View File
@@ -213,6 +213,7 @@ export const CrowdStrikeBlock: BlockConfig<CrowdStrikeResponse> = {
export const CrowdStrikeBlockMeta = {
tags: ['identity', 'monitoring'],
url: 'https://www.crowdstrike.com',
templates: [
{
icon: CrowdStrikeIcon,
+1
View File
@@ -280,6 +280,7 @@ export const CursorV2Block: BlockConfig<CursorResponse> = {
export const CursorBlockMeta = {
tags: ['agentic', 'automation'],
url: 'https://cursor.com',
templates: [
{
icon: CursorIcon,
+1
View File
@@ -671,6 +671,7 @@ Return ONLY the comma-separated asset keys - no explanations, no extra text.`,
export const DagsterBlockMeta = {
tags: ['data-analytics', 'automation'],
url: 'https://dagster.io',
templates: [
{
icon: DagsterIcon,
+1
View File
@@ -474,6 +474,7 @@ Return ONLY the numeric timestamp in milliseconds - no explanations, no extra te
export const DatabricksBlockMeta = {
tags: ['data-warehouse', 'data-analytics', 'cloud'],
url: 'https://www.databricks.com',
templates: [
{
icon: DatabricksIcon,
+1
View File
@@ -836,6 +836,7 @@ Return ONLY the numeric timestamp - no explanations, no quotes, no extra text.`,
export const DatadogBlockMeta = {
tags: ['monitoring', 'incident-management', 'error-tracking'],
url: 'https://www.datadoghq.com',
templates: [
{
icon: DatadogIcon,
+1
View File
@@ -565,6 +565,7 @@ export const DaytonaBlock: BlockConfig = {
export const DaytonaBlockMeta = {
tags: ['agentic', 'cloud', 'automation'],
url: 'https://www.daytona.io',
templates: [
{
icon: DaytonaIcon,
+1
View File
@@ -319,6 +319,7 @@ RULES:
export const DevinBlockMeta = {
tags: ['agentic', 'automation'],
url: 'https://devin.ai',
templates: [
{
icon: DevinIcon,
+1
View File
@@ -799,6 +799,7 @@ export const DiscordBlock: BlockConfig<DiscordResponse> = {
export const DiscordBlockMeta = {
tags: ['messaging', 'webhooks', 'automation'],
url: 'https://discord.com',
templates: [
{
icon: DiscordIcon,
+1
View File
@@ -375,6 +375,7 @@ export const DocuSignBlock: BlockConfig<DocuSignResponse> = {
export const DocuSignBlockMeta = {
tags: ['e-signatures', 'document-processing'],
url: 'https://www.docusign.com',
templates: [
{
icon: DocuSignIcon,
+1
View File
@@ -404,6 +404,7 @@ Return ONLY the timestamp string - no explanations, no quotes, no extra text.`,
export const DropboxBlockMeta = {
tags: ['cloud', 'document-processing'],
url: 'https://www.dropbox.com',
templates: [
{
icon: DropboxIcon,
+2
View File
@@ -8,6 +8,7 @@ export const DSPyBlock: BlockConfig = {
description: 'Run predictions using self-hosted DSPy programs',
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.',
docsLink: 'https://docs.sim.ai/integrations/dspy',
category: 'tools',
integrationType: IntegrationType.AI,
bgColor: '#FFFFFF',
@@ -178,6 +179,7 @@ export const DSPyBlock: BlockConfig = {
export const DSPyBlockMeta = {
tags: ['llm', 'agentic', 'automation'],
url: 'https://dspy.ai',
templates: [
{
icon: DsPyIcon,
+1
View File
@@ -890,6 +890,7 @@ export const DubBlock: BlockConfig<DubResponse> = {
export const DubBlockMeta = {
tags: ['link-management', 'marketing', 'data-analytics'],
url: 'https://dub.co',
templates: [
{
icon: DubIcon,
+1
View File
@@ -71,6 +71,7 @@ export const DuckDuckGoBlock: BlockConfig<DuckDuckGoResponse> = {
export const DuckDuckGoBlockMeta = {
tags: ['web-scraping'],
url: 'https://duckduckgo.com',
templates: [
{
icon: DuckDuckGoIcon,
+1
View File
@@ -831,6 +831,7 @@ Return ONLY the expression - no explanations.`,
export const DynamoDBBlockMeta = {
tags: ['cloud', 'data-analytics'],
url: 'https://aws.amazon.com/dynamodb',
templates: [
{
icon: DynamoDBIcon,
+1
View File
@@ -537,6 +537,7 @@ Return ONLY valid JSON - no explanations, no markdown code blocks.`,
export const ElasticsearchBlockMeta = {
tags: ['vector-search', 'data-analytics'],
url: 'https://www.elastic.co/elasticsearch',
templates: [
{
icon: ElasticsearchIcon,
+1
View File
@@ -106,6 +106,7 @@ export const ElevenLabsBlock: BlockConfig<ElevenLabsBlockResponse> = {
export const ElevenLabsBlockMeta = {
tags: ['text-to-speech'],
url: 'https://elevenlabs.io',
templates: [
{
icon: ElevenLabsIcon,
+1
View File
@@ -628,6 +628,7 @@ function emptyToUndefined(value: unknown): unknown {
export const EmailBisonBlockMeta = {
tags: ['sales-engagement', 'email-marketing', 'automation'],
url: 'https://emailbison.com',
templates: [
{
icon: EmailBisonIcon,
+1
View File
@@ -740,6 +740,7 @@ export const EnrichBlock: BlockConfig = {
export const EnrichBlockMeta = {
tags: ['enrichment'],
url: 'https://www.enrich.so',
templates: [
{
icon: EnrichSoIcon,
+1
View File
@@ -310,6 +310,7 @@ export const EvernoteBlock: BlockConfig = {
export const EvernoteBlockMeta = {
tags: ['note-taking', 'knowledge-base'],
url: 'https://evernote.com',
templates: [
{
icon: EvernoteIcon,
+1
View File
@@ -447,6 +447,7 @@ export const ExaBlock: BlockConfig<ExaResponse> = {
export const ExaBlockMeta = {
tags: ['web-scraping'],
url: 'https://exa.ai',
templates: [
{
icon: ExaAIIcon,
+1
View File
@@ -211,6 +211,7 @@ export const ExtendV2Block: BlockConfig<ExtendParserOutput> = {
export const ExtendBlockMeta = {
tags: ['document-processing', 'ocr'],
url: 'https://www.extend.ai',
templates: [
{
icon: ExtendIcon,
+1
View File
@@ -213,6 +213,7 @@ export const FathomBlock: BlockConfig<FathomResponse> = {
export const FathomBlockMeta = {
tags: ['meeting', 'note-taking'],
url: 'https://fathom.ai',
templates: [
{
icon: FathomIcon,
+1
View File
@@ -435,6 +435,7 @@ export const FindymailBlock: BlockConfig<FindymailResponse> = {
export const FindymailBlockMeta = {
tags: ['enrichment', 'sales-engagement'],
url: 'https://www.findymail.com',
templates: [
{
icon: FindymailIcon,
+1
View File
@@ -660,6 +660,7 @@ Example 2 - Product Data:
export const FirecrawlBlockMeta = {
tags: ['web-scraping', 'automation'],
url: 'https://www.firecrawl.dev',
templates: [
{
icon: FirecrawlIcon,
+2
View File
@@ -693,6 +693,7 @@ export const FirefliesV2Block: BlockConfig<FirefliesResponse> = {
export const FirefliesBlockMeta = {
tags: ['meeting', 'note-taking'],
url: 'https://fireflies.ai',
templates: [
{
icon: FirefliesIcon,
@@ -791,4 +792,5 @@ export const FirefliesBlockMeta = {
export const FirefliesV2BlockMeta = {
tags: ['meeting', 'note-taking'],
url: 'https://fireflies.ai',
} as const satisfies BlockMeta
+1
View File
@@ -342,6 +342,7 @@ Example: "folder_abc123, folder_def456"`,
export const GammaBlockMeta = {
tags: ['document-processing', 'content-management'],
url: 'https://gamma.app',
templates: [
{
icon: GammaIcon,
+2
View File
@@ -2065,6 +2065,7 @@ export const GitHubV2Block: BlockConfig<GitHubResponse> = {
export const GitHubBlockMeta = {
tags: ['version-control', 'ci-cd'],
url: 'https://github.com',
templates: [
{
icon: GithubIcon,
@@ -2191,4 +2192,5 @@ export const GitHubBlockMeta = {
export const GitHubV2BlockMeta = {
tags: ['version-control', 'ci-cd'],
url: 'https://github.com',
} as const satisfies BlockMeta
+1
View File
@@ -750,6 +750,7 @@ Return ONLY the commit message - no explanations, no extra text.`,
export const GitLabBlockMeta = {
tags: ['version-control', 'ci-cd'],
url: 'https://about.gitlab.com',
templates: [
{
icon: GitLabIcon,
+2
View File
@@ -645,6 +645,7 @@ export const GmailV2Block: BlockConfig<GmailToolResponse> = {
export const GmailBlockMeta = {
tags: ['google-workspace', 'messaging'],
url: 'https://www.google.com/gmail/about',
templates: [
{
icon: GmailIcon,
@@ -759,4 +760,5 @@ export const GmailBlockMeta = {
export const GmailV2BlockMeta = {
tags: ['google-workspace', 'messaging'],
url: 'https://www.google.com/gmail/about',
} as const satisfies BlockMeta
+1
View File
@@ -924,6 +924,7 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes
export const GongBlockMeta = {
tags: ['meeting', 'sales-engagement', 'speech-to-text'],
url: 'https://www.gong.io',
templates: [
{
icon: GongIcon,
+1
View File
@@ -94,6 +94,7 @@ Return ONLY the search query - no explanations, no quotes around the whole thing
export const GoogleSearchBlockMeta = {
tags: ['web-scraping', 'seo'],
url: 'https://developers.google.com/custom-search',
templates: [
{
icon: GoogleIcon,
+1
View File
@@ -295,6 +295,7 @@ Return ONLY the GAQL query - no explanations, no quotes, no extra text.`,
export const GoogleAdsBlockMeta = {
tags: ['marketing', 'google-workspace', 'data-analytics'],
url: 'https://ads.google.com',
templates: [
{
icon: GoogleAdsIcon,
@@ -288,6 +288,7 @@ Return ONLY the JSON array - no explanations, no wrapping, no extra text.`,
export const GoogleBigQueryBlockMeta = {
tags: ['data-warehouse', 'google-workspace', 'data-analytics'],
url: 'https://cloud.google.com/bigquery',
templates: [
{
icon: GoogleBigQueryIcon,
+1
View File
@@ -204,6 +204,7 @@ export const GoogleBooksBlock: BlockConfig = {
export const GoogleBooksBlockMeta = {
tags: ['google-workspace', 'knowledge-base', 'content-management'],
url: 'https://books.google.com',
templates: [
{
icon: GoogleBooksIcon,
@@ -711,6 +711,7 @@ export const GoogleCalendarV2Block: BlockConfig<GoogleCalendarResponse> = {
export const GoogleCalendarBlockMeta = {
tags: ['calendar', 'scheduling', 'google-workspace'],
url: 'https://workspace.google.com/products/calendar',
templates: [
{
icon: GoogleCalendarIcon,
@@ -814,4 +815,5 @@ export const GoogleCalendarBlockMeta = {
export const GoogleCalendarV2BlockMeta = {
tags: ['calendar', 'scheduling', 'google-workspace'],
url: 'https://workspace.google.com/products/calendar',
} as const satisfies BlockMeta
@@ -276,6 +276,7 @@ export const GoogleContactsBlock: BlockConfig<GoogleContactsResponse> = {
export const GoogleContactsBlockMeta = {
tags: ['google-workspace', 'customer-support', 'enrichment'],
url: 'https://contacts.google.com',
templates: [
{
icon: GoogleContactsIcon,
+1
View File
@@ -215,6 +215,7 @@ Return ONLY the document content - no explanations, no extra text.`,
export const GoogleDocsBlockMeta = {
tags: ['google-workspace', 'document-processing', 'content-management'],
url: 'https://www.google.com/docs/about',
templates: [
{
icon: GoogleDocsIcon,
+1
View File
@@ -1212,6 +1212,7 @@ Return ONLY the query string - no explanations, no quotes around the whole thing
export const GoogleDriveBlockMeta = {
tags: ['cloud', 'google-workspace', 'document-processing'],
url: 'https://workspace.google.com/products/drive',
templates: [
{
icon: BookOpen,
+1
View File
@@ -471,6 +471,7 @@ Example for "Add a required multiple choice question about favorite color":
export const GoogleFormsBlockMeta = {
tags: ['google-workspace', 'forms', 'data-analytics'],
url: 'https://workspace.google.com/products/forms',
templates: [
{
icon: GoogleFormsIcon,
+1
View File
@@ -458,6 +458,7 @@ Return ONLY the description text - no explanations, no quotes, no extra text.`,
export const GoogleGroupsBlockMeta = {
tags: ['google-workspace', 'messaging', 'identity'],
url: 'https://groups.google.com',
templates: [
{
icon: GoogleGroupsIcon,
+1
View File
@@ -641,6 +641,7 @@ export const GoogleMapsBlock: BlockConfig = {
export const GoogleMapsBlockMeta = {
tags: ['google-workspace', 'enrichment'],
url: 'https://mapsplatform.google.com',
templates: [
{
icon: GoogleMapsIcon,
+1
View File
@@ -184,6 +184,7 @@ export const GoogleMeetBlock: BlockConfig<GoogleMeetResponse> = {
export const GoogleMeetBlockMeta = {
tags: ['meeting', 'google-workspace', 'scheduling'],
url: 'https://workspace.google.com/products/meet',
templates: [
{
icon: GoogleMeetIcon,
@@ -128,6 +128,7 @@ export const GooglePagespeedBlock: BlockConfig<GooglePagespeedAnalyzeResponse> =
export const GooglePagespeedBlockMeta = {
tags: ['google-workspace', 'seo', 'monitoring'],
url: 'https://pagespeed.web.dev',
templates: [
{
icon: GooglePagespeedIcon,
+2
View File
@@ -1091,6 +1091,7 @@ Return ONLY the JSON array - no explanations, no markdown, no extra text.`,
export const GoogleSheetsBlockMeta = {
tags: ['spreadsheet', 'google-workspace', 'data-analytics'],
url: 'https://workspace.google.com/products/sheets',
templates: [
{
icon: GoogleSheetsIcon,
@@ -1206,4 +1207,5 @@ export const GoogleSheetsBlockMeta = {
export const GoogleSheetsV2BlockMeta = {
tags: ['spreadsheet', 'google-workspace', 'data-analytics'],
url: 'https://workspace.google.com/products/sheets',
} as const satisfies BlockMeta
+2
View File
@@ -3498,6 +3498,7 @@ export const GoogleSlidesV2Block: BlockConfig<GoogleSlidesResponse> = {
export const GoogleSlidesBlockMeta = {
tags: ['google-workspace', 'document-processing', 'content-management'],
url: 'https://workspace.google.com/products/slides',
templates: [
{
icon: GoogleSlidesIcon,
@@ -3601,4 +3602,5 @@ export const GoogleSlidesBlockMeta = {
export const GoogleSlidesV2BlockMeta = {
tags: ['google-workspace', 'document-processing', 'content-management'],
url: 'https://workspace.google.com/products/slides',
} as const satisfies BlockMeta
+1
View File
@@ -283,6 +283,7 @@ Return ONLY the timestamp - no explanations, no extra text.`,
export const GoogleTasksBlockMeta = {
tags: ['google-workspace', 'project-management', 'scheduling'],
url: 'https://workspace.google.com/products/tasks',
templates: [
{
icon: GoogleTasksIcon,
@@ -218,6 +218,7 @@ export const GoogleTranslateBlock: BlockConfig = {
export const GoogleTranslateBlockMeta = {
tags: ['google-workspace', 'content-management', 'automation'],
url: 'https://cloud.google.com/translate',
templates: [
{
icon: GoogleTranslateIcon,
+1
View File
@@ -549,6 +549,7 @@ Return ONLY the description text - no explanations, no quotes, no extra text.`,
export const GoogleVaultBlockMeta = {
tags: ['google-workspace', 'document-processing'],
url: 'https://support.google.com/vault',
templates: [
{
icon: ShieldCheck,
+1
View File
@@ -918,6 +918,7 @@ Return ONLY the folder title - no explanations, no quotes, no extra text.`,
export const GrafanaBlockMeta = {
tags: ['monitoring', 'data-analytics'],
url: 'https://grafana.com',
templates: [
{
icon: GrafanaIcon,
+1
View File
@@ -464,6 +464,7 @@ Return ONLY the search term - no explanations, no quotes, no extra text.`,
export const GrainBlockMeta = {
tags: ['meeting', 'note-taking'],
url: 'https://grain.com',
templates: [
{
icon: GrainIcon,
+1
View File
@@ -184,6 +184,7 @@ export const GranolaBlock: BlockConfig = {
export const GranolaBlockMeta = {
tags: ['meeting', 'note-taking'],
url: 'https://granola.ai',
templates: [
{
icon: GranolaIcon,
+1
View File
@@ -423,6 +423,7 @@ Return ONLY the ISO 8601 timestamp - no explanations, no extra text.`,
export const GreenhouseBlockMeta = {
tags: ['hiring'],
url: 'https://www.greenhouse.com',
templates: [
{
icon: GreenhouseIcon,
+1
View File
@@ -199,6 +199,7 @@ export const GreptileBlock: BlockConfig<GreptileResponse> = {
export const GreptileBlockMeta = {
tags: ['version-control', 'knowledge-base'],
url: 'https://www.greptile.com',
templates: [
{
icon: SlackIcon,
+1
View File
@@ -448,6 +448,7 @@ Example:
export const HexBlockMeta = {
tags: ['data-analytics'],
url: 'https://hex.tech',
templates: [
{
icon: HexIcon,
+1
View File
@@ -1259,6 +1259,7 @@ Return ONLY the JSON array of property names - no explanations, no markdown, no
export const HubSpotBlockMeta = {
tags: ['marketing', 'sales-engagement', 'customer-support'],
url: 'https://www.hubspot.com',
templates: [
{
icon: HubspotIcon,
+1
View File
@@ -123,6 +123,7 @@ export const HuggingFaceBlock: BlockConfig<HuggingFaceChatResponse> = {
export const HuggingFaceBlockMeta = {
tags: ['llm', 'agentic'],
url: 'https://huggingface.co',
templates: [
{
icon: HuggingFaceIcon,
+1
View File
@@ -411,6 +411,7 @@ Return ONLY the search query text - no explanations.`,
export const HunterBlockMeta = {
tags: ['enrichment', 'sales-engagement'],
url: 'https://hunter.io',
templates: [
{
icon: HunterIOIcon,
+1
View File
@@ -667,6 +667,7 @@ export const IAMBlock: BlockConfig<IAMBaseResponse> = {
export const IAMBlockMeta = {
tags: ['cloud', 'identity'],
url: 'https://aws.amazon.com/iam',
templates: [
{
icon: IAMIcon,
@@ -438,6 +438,7 @@ export const IdentityCenterBlock: BlockConfig<IdentityCenterBaseResponse> = {
export const IdentityCenterBlockMeta = {
tags: ['cloud', 'identity'],
url: 'https://aws.amazon.com/iam/identity-center',
templates: [
{
icon: IdentityCenterIcon,
+1
View File
@@ -1227,6 +1227,7 @@ Return ONLY the JSON array - no explanations or markdown formatting.`,
export const IncidentioBlockMeta = {
tags: ['incident-management', 'monitoring'],
url: 'https://incident.io',
templates: [
{
icon: IncidentioIcon,
+1
View File
@@ -241,6 +241,7 @@ export const InfisicalBlock: BlockConfig<InfisicalResponse> = {
export const InfisicalBlockMeta = {
tags: ['secrets-management'],
url: 'https://infisical.com',
templates: [
{
icon: InfisicalIcon,
+1
View File
@@ -1255,6 +1255,7 @@ function isPlainObject(value: unknown): value is Record<string, unknown> {
export const InstantlyBlockMeta = {
tags: ['sales-engagement', 'email-marketing', 'automation'],
url: 'https://instantly.ai',
templates: [
{
icon: InstantlyIcon,
+2
View File
@@ -1739,6 +1739,7 @@ export const IntercomV2Block: BlockConfig = {
export const IntercomBlockMeta = {
tags: ['customer-support', 'messaging'],
url: 'https://www.intercom.com',
templates: [
{
icon: IntercomIcon,
@@ -1844,4 +1845,5 @@ export const IntercomBlockMeta = {
export const IntercomV2BlockMeta = {
tags: ['customer-support', 'messaging'],
url: 'https://www.intercom.com',
} as const satisfies BlockMeta
+1
View File
@@ -197,6 +197,7 @@ export const JinaBlock: BlockConfig<ReadUrlResponse | SearchResponse> = {
export const JinaBlockMeta = {
tags: ['web-scraping', 'knowledge-base'],
url: 'https://jina.ai',
templates: [
{
icon: JinaAIIcon,

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