feat(integrations): extend ElevenLabs, Google Drive, Firecrawl, Pinecone, Resend, and S3 tool depth (#5270)

* feat(firecrawl): add crawl status/cancel, batch scrape + status, extract status, credit usage tools

* feat(resend): add audiences, broadcasts, and cancel-email tools

* feat(pinecone): add delete/update vectors, index, and stats tools

* feat(google-drive): add revisions, comments, and export tools

* feat(elevenlabs): add voices, settings, models, user, sound-effects, speech-to-speech, audio-isolation tools

* feat(s3): add bucket CRUD, head-object, presigned-url, and batch-delete tools

* chore(api-validation): bump route baseline to 873 for wave-3 internal tool routes (s3, elevenlabs, google_drive export)

* docs(integrations): regenerate docs + catalog for wave-3 tools

* fix(integrations): audit fixes for wave-3

- pinecone: read camelCase vectorType/deletionProtection (with snake_case fallback) so list_indexes/describe_index populate them; make describe_index_stats casing defensive
- google-drive: URL-encode fileId in the export route
- remove extraneous inline/section-divider comments across new blocks/tools; convert type docs to TSDoc

* fix(integrations): address review — elevenlabs settings bleed, batch-scrape job-id guard, s3 head-object existence

- elevenlabs: select stability/similarityBoost by operation so a stale edit-settings value can't bleed into a TTS call
- firecrawl: fail fast with a clear error when batch scrape returns no job id (avoids a misleading polling timeout)
- s3: head_object on a missing key now returns exists:false instead of a generic failure

* fix(s3): allow exists:false in head-object response contract (schema must match the missing-object output)

* fix(pinecone): guard JSON.parse of ids/filter/values/sparseValues/setMetadata

Malformed JSON-string input now throws a clear '<field> must be valid JSON' error via a shared parseJsonParam helper instead of crashing the request body builder.

* fix(pinecone): enforce mutual exclusivity of ids/deleteAll/filter in delete_vectors

Pinecone treats these delete selectors as mutually exclusive; the tool now requires exactly one and throws a clear error otherwise, instead of sending a conflicting body.

* fix(integrations): I/O fidelity vs API docs (wave-3 audit)

- pinecone: normalize describe_index_stats per-namespace vector_count -> vectorCount
- firecrawl: remove phantom 'sources' from extract_status, add real creditsUsed/tokensUsed; expose batch_scrape maxConcurrency/ignoreInvalidURLs
- google-drive: drop undocumented supportsAllDrives from the files.export URL
- elevenlabs: add next_page_token input to list_voices (fixes pagination dead-end)
- resend: surface segment_id on get_broadcast; declare replyTo + segment_id in block outputs
This commit is contained in:
Waleed
2026-06-29 15:59:14 -07:00
committed by GitHub
parent c7bb37d488
commit 48c1b453df
86 changed files with 8654 additions and 71 deletions
@@ -1,6 +1,6 @@
---
title: ElevenLabs
description: Convert text to speech with ElevenLabs
description: Generate and transform audio with ElevenLabs
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
@@ -27,7 +27,7 @@ In Sim, the ElevenLabs integration enables your agents to convert text to lifeli
## Usage Instructions
Integrate ElevenLabs into the workflow. Can convert text to speech.
Integrate ElevenLabs into the workflow. Convert text to speech, generate sound effects, transform voices, isolate audio, and manage voices, models, and account settings.
@@ -55,4 +55,214 @@ Convert text to speech using ElevenLabs voices
| `audioUrl` | string | The URL of the generated audio |
| `audioFile` | file | The generated audio file |
### `elevenlabs_sound_effects`
Generate a sound effect from a text prompt using ElevenLabs
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `text` | string | Yes | The prompt describing the sound effect \(e.g., "thunder rumbling in the distance"\) |
| `modelId` | string | No | The model to use \(defaults to eleven_text_to_sound_v2\) |
| `durationSeconds` | number | No | Length of the sound in seconds \(0.5-30\). Omit to auto-determine |
| `promptInfluence` | number | No | How closely to follow the prompt from 0.0 to 1.0 \(default 0.3\) |
| `loop` | boolean | No | Whether to generate a seamlessly looping sound effect \(default false\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `audioUrl` | string | URL of the generated sound effect |
| `audioFile` | file | The generated sound effect file |
### `elevenlabs_speech_to_speech`
Convert audio into a chosen ElevenLabs voice while preserving content and emotion
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `voiceId` | string | Yes | The ID of the target voice to convert the audio into |
| `audioFile` | file | Yes | The source audio file to convert \(e.g., MP3, WAV, M4A\) |
| `modelId` | string | No | The model to use \(defaults to eleven_english_sts_v2\) |
| `removeBackgroundNoise` | boolean | No | Whether to isolate the voice and remove background noise \(default false\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `audioUrl` | string | URL of the converted audio |
| `audioFile` | file | The converted audio file |
### `elevenlabs_audio_isolation`
Remove background noise from an audio file, isolating the speech using ElevenLabs
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `audioFile` | file | Yes | The audio file to isolate speech from \(e.g., MP3, WAV, M4A\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `audioUrl` | string | URL of the isolated audio |
| `audioFile` | file | The isolated audio file |
### `elevenlabs_list_voices`
List the voices available in your ElevenLabs account
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `search` | string | No | Search term to filter voices by name, description, labels, or category |
| `category` | string | No | Filter by category: premade, cloned, generated, or professional |
| `pageSize` | number | No | Number of voices to return \(1-100, default 10\) |
| `nextPageToken` | string | No | Page token from a previous response to fetch the next page of voices |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `voices` | array | List of voices |
| ↳ `voiceId` | string | Unique voice identifier |
| ↳ `name` | string | Voice name |
| ↳ `category` | string | Voice category |
| ↳ `description` | string | Voice description |
| ↳ `labels` | json | Voice labels \(accent, gender, age, use case\) |
| ↳ `previewUrl` | string | URL to a preview audio sample |
| ↳ `settings` | json | Default voice settings |
| `totalCount` | number | Total number of matching voices |
| `hasMore` | boolean | Whether more voices are available |
| `nextPageToken` | string | Token to fetch the next page |
### `elevenlabs_get_voice`
Get metadata and settings for a specific ElevenLabs voice
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `voiceId` | string | Yes | The ID of the voice to retrieve \(e.g., "21m00Tcm4TlvDq8ikWAM"\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `voiceId` | string | Unique voice identifier |
| `name` | string | Voice name |
| `category` | string | Voice category |
| `description` | string | Voice description |
| `labels` | json | Voice labels \(accent, gender, age, use case\) |
| `previewUrl` | string | URL to a preview audio sample |
| `settings` | json | Default voice settings |
| `availableForTiers` | array | Subscription tiers the voice is available on |
| `highQualityBaseModelIds` | array | Model IDs that support high-quality output for this voice |
| `isOwner` | boolean | Whether the current user owns this voice |
### `elevenlabs_get_voice_settings`
Get the configured settings for a specific ElevenLabs voice
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `voiceId` | string | Yes | The ID of the voice whose settings to retrieve |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `stability` | number | Voice stability \(0.0-1.0\) |
| `similarityBoost` | number | Similarity boost \(0.0-1.0\) |
| `style` | number | Style exaggeration \(0.0-1.0\) |
| `useSpeakerBoost` | boolean | Whether speaker boost is enabled |
| `speed` | number | Speech speed \(1.0 = normal\) |
### `elevenlabs_edit_voice_settings`
Update the settings for a specific ElevenLabs voice
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
| `voiceId` | string | Yes | The ID of the voice to update |
| `stability` | number | No | Voice stability from 0.0 to 1.0 \(default 0.5\) |
| `similarityBoost` | number | No | Similarity boost from 0.0 to 1.0 \(default 0.75\) |
| `style` | number | No | Style exaggeration from 0.0 to 1.0 \(default 0\) |
| `useSpeakerBoost` | boolean | No | Whether to enhance similarity to the original speaker \(default true\) |
| `speed` | number | No | Speech speed where 1.0 is normal \(default 1.0\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `status` | string | Request outcome \("ok" on success\) |
### `elevenlabs_list_models`
List the models available in ElevenLabs
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `models` | array | List of available models |
| ↳ `modelId` | string | Unique model identifier |
| ↳ `name` | string | Model name |
| ↳ `description` | string | Model description |
| ↳ `canDoTextToSpeech` | boolean | Supports text-to-speech |
| ↳ `canDoVoiceConversion` | boolean | Supports voice conversion |
| ↳ `canUseStyle` | boolean | Supports the style parameter |
| ↳ `canUseSpeakerBoost` | boolean | Supports speaker boost |
| ↳ `languages` | array | Languages supported by the model |
| ↳ `languageId` | string | Language code |
| ↳ `name` | string | Language name |
### `elevenlabs_get_user`
Get account and subscription information for the ElevenLabs user
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Your ElevenLabs API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `userId` | string | Unique user identifier |
| `isNewUser` | boolean | Whether the user is new |
| `subscription` | object | Subscription and usage details |
| ↳ `tier` | string | Subscription tier |
| ↳ `characterCount` | number | Characters used this period |
| ↳ `characterLimit` | number | Character quota for this period |
| ↳ `canExtendCharacterLimit` | boolean | Whether the character limit can be extended |
| ↳ `status` | string | Subscription status |
| ↳ `nextCharacterCountResetUnix` | number | Unix timestamp when the character count resets |
@@ -78,6 +78,81 @@ Extract structured content from web pages with comprehensive metadata support. C
| ↳ `ogSiteName` | string | Open Graph site name |
| ↳ `error` | string | Error message if scrape failed |
### `firecrawl_batch_scrape`
Scrape multiple URLs in a single batch job and retrieve structured content from each page.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `urls` | json | Yes | Array of URLs to scrape \(e.g., \["https://example.com/page1", "https://example.com/page2"\]\) |
| `formats` | json | No | Output formats for scraped content \(e.g., \["markdown"\], \["markdown", "html"\]\) |
| `onlyMainContent` | boolean | No | Extract only main content from pages |
| `maxConcurrency` | number | No | Maximum number of concurrent scrapes |
| `ignoreInvalidURLs` | boolean | No | Skip invalid URLs instead of failing the batch \(default: true\) |
| `scrapeOptions` | json | No | Advanced scraping configuration options |
| `zeroDataRetention` | boolean | No | Enable zero data retention |
| `apiKey` | string | Yes | Firecrawl API key |
| `pricing` | custom | No | No description |
| `rateLimit` | string | No | No description |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `pages` | array | Array of scraped pages with their content and metadata |
| ↳ `markdown` | string | Page content in markdown format |
| ↳ `html` | string | Processed HTML content of the page |
| ↳ `rawHtml` | string | Unprocessed raw HTML content |
| ↳ `links` | array | Array of links found on the page |
| ↳ `screenshot` | string | Screenshot URL \(expires after 24 hours\) |
| ↳ `metadata` | object | Page metadata from crawl operation |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `language` | string | Page language code |
| ↳ `sourceURL` | string | Original source URL |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `ogLocaleAlternate` | array | Alternate locale versions |
| `total` | number | Total number of pages attempted |
| `completed` | number | Number of pages successfully scraped |
| `invalidURLs` | array | URLs that were skipped because they were invalid |
### `firecrawl_batch_scrape_status`
Check the status and retrieve results of a previously started Firecrawl batch scrape job by its job ID.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `jobId` | string | Yes | The ID of the batch scrape job to check |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `status` | string | Current batch scrape status \(scraping, completed, or failed\) |
| `total` | number | Total number of pages attempted |
| `completed` | number | Number of pages successfully scraped |
| `creditsUsed` | number | Credits consumed by the batch scrape |
| `expiresAt` | string | ISO timestamp when the batch scrape results expire |
| `next` | string | URL to retrieve the next page of results when present |
| `pages` | array | Array of scraped pages with their content and metadata |
| ↳ `markdown` | string | Page content in markdown format |
| ↳ `html` | string | Processed HTML content of the page |
| ↳ `rawHtml` | string | Unprocessed raw HTML content |
| ↳ `links` | array | Array of links found on the page |
| ↳ `screenshot` | string | Screenshot URL \(expires after 24 hours\) |
| ↳ `metadata` | object | Page metadata from crawl operation |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `language` | string | Page language code |
| ↳ `sourceURL` | string | Original source URL |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `ogLocaleAlternate` | array | Alternate locale versions |
### `firecrawl_search`
Search for information on the web using Firecrawl
@@ -149,6 +224,58 @@ Crawl entire websites and extract structured content from all accessible pages
| ↳ `ogLocaleAlternate` | array | Alternate locale versions |
| `total` | number | Total number of pages found during crawl |
### `firecrawl_crawl_status`
Check the status and retrieve results of a previously started Firecrawl crawl job by its job ID.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `jobId` | string | Yes | The ID of the crawl job to check |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `status` | string | Current crawl status \(scraping, completed, or failed\) |
| `total` | number | Total number of pages attempted |
| `completed` | number | Number of pages successfully crawled |
| `creditsUsed` | number | Credits consumed by the crawl |
| `expiresAt` | string | ISO timestamp when the crawl results expire |
| `next` | string | URL to retrieve the next page of results when present |
| `pages` | array | Array of crawled pages with their content and metadata |
| ↳ `markdown` | string | Page content in markdown format |
| ↳ `html` | string | Processed HTML content of the page |
| ↳ `rawHtml` | string | Unprocessed raw HTML content |
| ↳ `links` | array | Array of links found on the page |
| ↳ `screenshot` | string | Screenshot URL \(expires after 24 hours\) |
| ↳ `metadata` | object | Page metadata from crawl operation |
| ↳ `title` | string | Page title |
| ↳ `description` | string | Page meta description |
| ↳ `language` | string | Page language code |
| ↳ `sourceURL` | string | Original source URL |
| ↳ `statusCode` | number | HTTP status code |
| ↳ `ogLocaleAlternate` | array | Alternate locale versions |
### `firecrawl_cancel_crawl`
Cancel an in-progress Firecrawl crawl job by its job ID.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `jobId` | string | Yes | The ID of the crawl job to cancel |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `status` | string | Status of the cancelled crawl job \(e.g., "cancelled"\) |
### `firecrawl_map`
Get a complete list of URLs from any website quickly and reliably. Useful for discovering all pages on a site without crawling them.
@@ -204,6 +331,27 @@ Extract structured data from entire webpages using natural language prompts and
| `success` | boolean | Whether the extraction operation was successful |
| `data` | object | Extracted structured data according to the schema or prompt |
### `firecrawl_extract_status`
Check the status and retrieve results of a previously started Firecrawl extract job by its job ID.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `jobId` | string | Yes | The ID of the extract job to check |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `status` | string | Current extract status \(processing, completed, failed, or cancelled\) |
| `data` | json | Extracted structured data according to the schema or prompt |
| `expiresAt` | string | ISO timestamp when the extract results expire |
| `creditsUsed` | number | Number of credits used by the extract job |
| `tokensUsed` | number | Number of tokens used by the extract job |
### `firecrawl_agent`
Autonomous web data extraction agent. Searches and gathers information based on natural language prompts without requiring specific URLs.
@@ -274,4 +422,23 @@ Parse uploaded documents (PDF, DOCX, HTML, etc.) into clean markdown using Firec
| ↳ `error` | string | Error message if parse failed |
| `warning` | string | Warning message from the parse operation |
### `firecrawl_credit_usage`
Retrieve the remaining and allocated Firecrawl credits for the team.
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Firecrawl API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `remainingCredits` | number | Number of credits remaining for the team |
| `planCredits` | number | Credits allocated in the current plan |
| `billingPeriodStart` | string | Start of the current billing period |
| `billingPeriodEnd` | string | End of the current billing period |
@@ -694,6 +694,163 @@ List all permissions (who has access) for a file in Google Drive
| ↳ `permissionDetails` | json | Details about inherited permissions |
| `nextPageToken` | string | Token for fetching the next page of permissions |
### `google_drive_export`
Export a Google Workspace file (Docs, Sheets, Slides, Drawings) to a chosen format such as PDF, DOCX, XLSX, or CSV
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the Google Workspace file to export |
| `mimeType` | string | Yes | The target MIME type to export to \(e.g. application/pdf, text/csv\) |
| `fileName` | string | No | Optional filename override for the exported file |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | file | Exported file stored in execution files |
| `exportedMimeType` | string | The MIME type the file was exported to |
### `google_drive_list_revisions`
List the revision history of a file in Google Drive
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to list revisions for |
| `pageSize` | number | No | Maximum number of revisions to return \(1-1000, default 200\) |
| `pageToken` | string | No | The page token to use for pagination |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `revisions` | array | List of revisions for the file \(most recent last\) |
| ↳ `id` | string | Revision ID |
| ↳ `mimeType` | string | MIME type of the revision |
| ↳ `modifiedTime` | string | When this revision was created |
| ↳ `keepForever` | boolean | Whether this revision is preserved forever |
| ↳ `published` | boolean | Whether this revision is published |
| ↳ `publishedLink` | string | Public link to the published revision |
| ↳ `lastModifyingUser` | json | User who created this revision |
| ↳ `originalFilename` | string | Original filename for binary revisions |
| ↳ `md5Checksum` | string | MD5 checksum for binary revisions |
| ↳ `size` | string | Size of the revision in bytes |
| ↳ `exportLinks` | json | Export format links for the revision |
| `nextPageToken` | string | Token for fetching the next page of revisions |
### `google_drive_get_revision`
Get metadata for a specific revision of a file in Google Drive
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file the revision belongs to |
| `revisionId` | string | Yes | The ID of the revision to retrieve |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `revision` | json | The revision metadata |
| ↳ `id` | string | Revision ID |
| ↳ `mimeType` | string | MIME type of the revision |
| ↳ `modifiedTime` | string | When this revision was created |
| ↳ `keepForever` | boolean | Whether this revision is preserved forever |
| ↳ `published` | boolean | Whether this revision is published |
| ↳ `publishedLink` | string | Public link to the published revision |
| ↳ `lastModifyingUser` | json | User who created this revision |
| ↳ `originalFilename` | string | Original filename for binary revisions |
| ↳ `md5Checksum` | string | MD5 checksum for binary revisions |
| ↳ `size` | string | Size of the revision in bytes |
| ↳ `exportLinks` | json | Export format links for the revision |
### `google_drive_list_comments`
List comments on a file in Google Drive
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to list comments for |
| `includeDeleted` | boolean | No | Whether to include deleted comments \(their content is stripped\) |
| `pageSize` | number | No | Maximum number of comments to return \(1-100, default 20\) |
| `startModifiedTime` | string | No | Only return comments modified after this RFC 3339 timestamp |
| `pageToken` | string | No | The page token to use for pagination |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `comments` | array | List of comments on the file |
| ↳ `id` | string | Comment ID |
| ↳ `content` | string | Plain text content of the comment |
| ↳ `htmlContent` | string | HTML-formatted content of the comment |
| ↳ `author` | json | User who authored the comment |
| ↳ `createdTime` | string | When the comment was created |
| ↳ `modifiedTime` | string | When the comment was last modified |
| ↳ `resolved` | boolean | Whether the comment has been resolved |
| ↳ `deleted` | boolean | Whether the comment has been deleted |
| ↳ `anchor` | string | Region of the document the comment refers to |
| ↳ `quotedFileContent` | json | The file content the comment quotes |
| ↳ `replies` | json | Threaded replies to the comment |
| `nextPageToken` | string | Token for fetching the next page of comments |
### `google_drive_create_comment`
Add a comment to a file in Google Drive
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file to comment on |
| `content` | string | Yes | The plain text content of the comment |
| `anchor` | string | No | A region of the document the comment refers to \(JSON anchor string\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `comment` | json | The created comment |
| ↳ `id` | string | Comment ID |
| ↳ `content` | string | Plain text content of the comment |
| ↳ `htmlContent` | string | HTML-formatted content of the comment |
| ↳ `author` | json | User who authored the comment |
| ↳ `createdTime` | string | When the comment was created |
| ↳ `modifiedTime` | string | When the comment was last modified |
| ↳ `resolved` | boolean | Whether the comment has been resolved |
| ↳ `deleted` | boolean | Whether the comment has been deleted |
| ↳ `anchor` | string | Region of the document the comment refers to |
| ↳ `quotedFileContent` | json | The file content the comment quotes |
| ↳ `replies` | json | Threaded replies to the comment |
### `google_drive_delete_comment`
Delete a comment from a file in Google Drive
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `fileId` | string | Yes | The ID of the file the comment belongs to |
| `commentId` | string | Yes | The ID of the comment to delete |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Whether the comment was successfully deleted |
| `fileId` | string | The ID of the file |
| `commentId` | string | The ID of the deleted comment |
### `google_drive_get_about`
Get information about the user and their Google Drive (storage quota, capabilities)
@@ -29,7 +29,7 @@ In Sim, the Pinecone integration enables your agents to leverage vector search c
## Usage Instructions
Integrate Pinecone into the workflow. Can generate embeddings, upsert text, search with text, fetch vectors, and search with vectors.
Integrate Pinecone into the workflow. Generate embeddings, upsert and update text records, delete vectors, search with text or vectors, fetch and list vectors, inspect index statistics, and manage indexes.
@@ -75,6 +75,49 @@ Insert or update text records in a Pinecone index
| --------- | ---- | ----------- |
| `statusText` | string | Status of the upsert operation |
### `pinecone_update_vector`
Update the values, sparse values, or metadata of a vector in a Pinecone namespace
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `indexHost` | string | Yes | Full Pinecone index host URL \(e.g., "https://my-index-abc123.svc.pinecone.io"\) |
| `id` | string | Yes | Unique ID of the vector to update |
| `namespace` | string | No | Namespace containing the vector \(e.g., "documents", "embeddings"\) |
| `values` | array | No | New dense vector values to overwrite the existing values |
| `sparseValues` | object | No | New sparse vector values with indices and values arrays |
| `setMetadata` | object | No | Metadata key-value pairs to add or overwrite on the vector |
| `apiKey` | string | Yes | Pinecone API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `statusText` | string | Status of the update operation |
### `pinecone_delete_vectors`
Delete vectors from a Pinecone namespace by IDs, by metadata filter, or delete all
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `indexHost` | string | Yes | Full Pinecone index host URL \(e.g., "https://my-index-abc123.svc.pinecone.io"\) |
| `namespace` | string | No | Namespace to delete vectors from \(e.g., "documents", "embeddings"\) |
| `ids` | array | No | Vector IDs to delete \(1-1000 items\). Mutually exclusive with deleteAll and filter |
| `deleteAll` | boolean | No | Delete all vectors in the namespace. Mutually exclusive with ids and filter |
| `filter` | object | No | Metadata filter selecting vectors to delete \(e.g., \{"category": \{"$eq": "product"\}\}\). Mutually exclusive with ids and deleteAll |
| `apiKey` | string | Yes | Pinecone API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `statusText` | string | Status of the delete operation |
### `pinecone_search_text`
Search for similar text in a Pinecone index
@@ -157,4 +200,102 @@ Fetch vectors by ID from a Pinecone index
| `usage` | object | Usage statistics including total read units |
| ↳ `total_tokens` | number | Read units consumed |
### `pinecone_list_vector_ids`
List vector IDs in a Pinecone namespace by prefix (serverless indexes only)
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `indexHost` | string | Yes | Full Pinecone index host URL \(e.g., "https://my-index-abc123.svc.pinecone.io"\) |
| `namespace` | string | Yes | Namespace to list vector IDs from \(e.g., "documents", "embeddings"\) |
| `prefix` | string | No | Filter vector IDs by a common prefix \(e.g., "doc1#"\) |
| `limit` | number | No | Maximum number of IDs to return per page \(default 100\) |
| `paginationToken` | string | No | Pagination token from a previous response to fetch the next page |
| `apiKey` | string | Yes | Pinecone API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `vectorIds` | array | Vector IDs in the namespace |
| `pagination` | object | Pagination info with a next token when more results exist |
| ↳ `next` | string | Token to fetch the next page |
| `namespace` | string | Namespace the IDs were listed from |
| `usage` | object | Usage statistics including read units |
| ↳ `total_tokens` | number | Read units consumed |
### `pinecone_describe_index_stats`
Get statistics about a Pinecone index, including per-namespace vector counts
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `indexHost` | string | Yes | Full Pinecone index host URL \(e.g., "https://my-index-abc123.svc.pinecone.io"\) |
| `filter` | object | No | Metadata filter to limit which vectors are counted \(pod-based indexes only, e.g., \{"category": \{"$eq": "product"\}\}\) |
| `apiKey` | string | Yes | Pinecone API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `namespaces` | json | Map of namespace name to its summary including vectorCount |
| `dimension` | number | Dimensionality of the indexed vectors |
| `indexFullness` | number | Fullness of the index \(pod-based indexes only\) |
| `totalVectorCount` | number | Total number of vectors across all namespaces |
### `pinecone_list_indexes`
List all Pinecone indexes in the project
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Pinecone API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `indexes` | array | List of indexes with name, dimension, metric, host, spec, and status |
| ↳ `name` | string | Index name |
| ↳ `dimension` | number | Vector dimensionality |
| ↳ `metric` | string | Distance metric \(cosine, euclidean, dotproduct\) |
| ↳ `host` | string | Index host URL for data-plane operations |
| ↳ `vectorType` | string | Vector type \(dense or sparse\) |
| ↳ `deletionProtection` | string | Deletion protection \(enabled or disabled\) |
| ↳ `tags` | object | Custom user tags on the index |
| ↳ `spec` | object | Index spec \(serverless or pod configuration\) |
| ↳ `status` | object | Index status with ready and state |
### `pinecone_describe_index`
Get the configuration and status of a Pinecone index by name
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `indexName` | string | Yes | Name of the index to describe |
| `apiKey` | string | Yes | Pinecone API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `index` | object | Index configuration and status |
| ↳ `name` | string | Index name |
| ↳ `dimension` | number | Vector dimensionality |
| ↳ `metric` | string | Distance metric \(cosine, euclidean, dotproduct\) |
| ↳ `host` | string | Index host URL for data-plane operations |
| ↳ `vectorType` | string | Vector type \(dense or sparse\) |
| ↳ `deletionProtection` | string | Deletion protection \(enabled or disabled\) |
| ↳ `tags` | object | Custom user tags on the index |
| ↳ `spec` | object | Index spec \(serverless or pod configuration\) |
| ↳ `status` | object | Index status with ready and state |
@@ -94,6 +94,23 @@ Retrieve details of a previously sent email by its ID
| ↳ `name` | string | Tag name |
| ↳ `value` | string | Tag value |
### `resend_cancel_email`
Cancel a scheduled email before it is sent
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `cancelEmailId` | string | Yes | The ID of the scheduled email to cancel |
| `resendApiKey` | string | Yes | Resend API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Canceled email ID |
### `resend_create_contact`
Create a new contact in Resend
@@ -197,6 +214,151 @@ Delete a contact from Resend by ID or email
| `id` | string | Deleted contact ID |
| `deleted` | boolean | Whether the contact was successfully deleted |
### `resend_create_audience`
Create a new audience in Resend
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `audienceName` | string | Yes | The name of the audience to create |
| `resendApiKey` | string | Yes | Resend API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Created audience ID |
| `name` | string | Audience name |
### `resend_get_audience`
Retrieve details of an audience by ID
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `audienceId` | string | Yes | The ID of the audience to retrieve |
| `resendApiKey` | string | Yes | Resend API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Audience ID |
| `name` | string | Audience name |
| `createdAt` | string | Audience creation timestamp |
### `resend_list_audiences`
List all audiences in Resend
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `resendApiKey` | string | Yes | Resend API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `audiences` | array | Array of audiences |
| ↳ `id` | string | Audience ID |
| ↳ `name` | string | Audience name |
| ↳ `created_at` | string | Audience creation timestamp |
| `hasMore` | boolean | Whether there are more audiences to retrieve |
### `resend_delete_audience`
Delete an audience from Resend by ID
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `audienceId` | string | Yes | The ID of the audience to delete |
| `resendApiKey` | string | Yes | Resend API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Deleted audience ID |
| `deleted` | boolean | Whether the audience was successfully deleted |
### `resend_create_broadcast`
Create a broadcast email for an audience in Resend
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `audienceId` | string | Yes | The ID of the audience to send the broadcast to |
| `broadcastFrom` | string | Yes | Sender email address \(e.g., "sender@example.com" or "Sender Name &lt;sender@example.com&gt;"\) |
| `broadcastSubject` | string | Yes | Broadcast email subject line |
| `broadcastHtml` | string | No | HTML content of the broadcast |
| `broadcastText` | string | No | Plain text content of the broadcast |
| `broadcastReplyTo` | string | No | Reply-to email address |
| `broadcastName` | string | No | Friendly internal name for the broadcast |
| `broadcastPreviewText` | string | No | Preview text shown in the inbox before the email is opened |
| `resendApiKey` | string | Yes | Resend API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Created broadcast ID |
### `resend_send_broadcast`
Send a broadcast immediately or schedule it for later
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `broadcastId` | string | Yes | The ID of the broadcast to send |
| `broadcastScheduledAt` | string | No | Schedule delivery in natural language \(e.g., "in 1 min"\) or ISO 8601 format. Sends immediately if omitted |
| `resendApiKey` | string | Yes | Resend API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Broadcast ID |
### `resend_get_broadcast`
Retrieve details of a broadcast by ID
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `broadcastId` | string | Yes | The ID of the broadcast to retrieve |
| `resendApiKey` | string | Yes | Resend API key |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `id` | string | Broadcast ID |
| `name` | string | Broadcast name |
| `audienceId` | string | Audience ID \(legacy\) |
| `segmentId` | string | Segment ID \(the current recipient field\) |
| `from` | string | Sender email address |
| `subject` | string | Broadcast subject |
| `replyTo` | string | Reply-to email address |
| `previewText` | string | Inbox preview text |
| `status` | string | Broadcast status \(e.g., draft, sent\) |
| `createdAt` | string | Broadcast creation timestamp |
| `scheduledAt` | string | Scheduled send timestamp |
| `sentAt` | string | Timestamp the broadcast was sent |
### `resend_list_domains`
List all verified domains in your Resend account
+142 -2
View File
@@ -1,6 +1,6 @@
---
title: S3
description: Upload, download, list, and manage S3 files
description: Upload, download, list, and manage S3 files and buckets
---
import { BlockInfoCard } from "@/components/ui/block-info-card"
@@ -29,7 +29,7 @@ In Sim, the S3 integration enables your agents to retrieve and access files stor
## Usage Instructions
Integrate S3 into the workflow. Upload files, download objects, list bucket contents, delete objects, and copy objects between buckets. Requires AWS access key and secret access key.
Integrate S3 into the workflow. Upload, download, copy, and delete objects (individually or in batches), inspect object metadata, generate time-limited presigned URLs, list bucket contents, and create, list, or delete buckets. Requires AWS access key and secret access key.
@@ -155,4 +155,144 @@ Copy an object within or between AWS S3 buckets
| `uri` | string | S3 URI of the copied object \(s3://bucket/key\) |
| `metadata` | object | Copy operation metadata |
### `s3_list_buckets`
List the S3 buckets owned by the authenticated AWS account
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | Yes | Your AWS Access Key ID |
| `secretAccessKey` | string | Yes | Your AWS Secret Access Key |
| `region` | string | Yes | AWS region to address the request to \(e.g., us-east-1\) |
| `prefix` | string | No | Limit the response to bucket names that begin with this prefix |
| `maxBuckets` | number | No | Maximum number of buckets to return \(1-10000\) |
| `continuationToken` | string | No | Token for pagination from a previous list buckets response |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `buckets` | array | List of S3 buckets owned by the account |
| ↳ `name` | string | Bucket name |
| ↳ `creationDate` | string | Bucket creation timestamp |
| ↳ `region` | string | AWS region where the bucket is located |
| `metadata` | object | Listing metadata including owner and pagination info |
### `s3_head_object`
Retrieve metadata for an S3 object without downloading its body
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | Yes | Your AWS Access Key ID |
| `secretAccessKey` | string | Yes | Your AWS Secret Access Key |
| `region` | string | Yes | AWS region \(e.g., us-east-1\) |
| `bucketName` | string | Yes | S3 bucket name \(e.g., my-bucket\) |
| `objectKey` | string | Yes | Object key/path to inspect \(e.g., folder/file.txt\) |
| `versionId` | string | No | Specific object version ID to inspect \(for versioned buckets\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `exists` | boolean | Whether the object exists and was reachable |
| `metadata` | object | Object metadata including size, content type, ETag, and last modified date |
### `s3_create_bucket`
Create a new AWS S3 bucket in the specified region
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | Yes | Your AWS Access Key ID |
| `secretAccessKey` | string | Yes | Your AWS Secret Access Key |
| `region` | string | Yes | AWS region to create the bucket in \(e.g., us-east-1\) |
| `bucketName` | string | Yes | Name for the new S3 bucket \(must be globally unique\) |
| `acl` | string | No | Canned ACL for the bucket \(e.g., private, public-read\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `metadata` | object | Created bucket metadata including name and location |
### `s3_delete_bucket`
Delete an empty AWS S3 bucket
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | Yes | Your AWS Access Key ID |
| `secretAccessKey` | string | Yes | Your AWS Secret Access Key |
| `region` | string | Yes | AWS region where the bucket is located \(e.g., us-east-1\) |
| `bucketName` | string | Yes | Name of the S3 bucket to delete \(must be empty\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | boolean | Whether the bucket was successfully deleted |
| `metadata` | object | Deletion metadata including bucket name |
### `s3_presigned_url`
Generate a time-limited presigned URL to download or upload an S3 object
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | Yes | Your AWS Access Key ID |
| `secretAccessKey` | string | Yes | Your AWS Secret Access Key |
| `region` | string | Yes | AWS region where the bucket is located \(e.g., us-east-1\) |
| `bucketName` | string | Yes | S3 bucket name \(e.g., my-bucket\) |
| `objectKey` | string | Yes | Object key/path for the presigned URL \(e.g., folder/file.txt\) |
| `method` | string | Yes | Operation the URL grants: get \(download\) or put \(upload\) |
| `expiresIn` | number | No | URL validity in seconds \(1-604800, default 3600\) |
| `contentType` | string | No | Content-Type the upload must use \(only applies to put URLs\) |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `url` | string | The generated presigned URL |
| `metadata` | object | Presigned URL metadata including method and expiration |
### `s3_delete_objects`
Delete multiple objects from an AWS S3 bucket in a single batch request
#### Input
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | Yes | Your AWS Access Key ID |
| `secretAccessKey` | string | Yes | Your AWS Secret Access Key |
| `region` | string | Yes | AWS region \(e.g., us-east-1\) |
| `bucketName` | string | Yes | S3 bucket name \(e.g., my-bucket\) |
| `keys` | json | Yes | Array of object keys to delete \(e.g., \["a.txt", "folder/b.txt"\]\). Max 1000. |
| `quiet` | boolean | No | Return only deletion errors, omitting successfully deleted keys |
#### Output
| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `deleted` | array | Objects that were successfully deleted |
| ↳ `key` | string | Deleted object key |
| ↳ `versionId` | string | Version ID of the deleted object |
| ↳ `deleteMarker` | boolean | Whether a delete marker was created |
| `errors` | array | Objects that failed to delete |
| ↳ `key` | string | Object key that failed |
| ↳ `code` | string | Error code |
| ↳ `message` | string | Error message |
| `metadata` | object | Batch deletion summary including counts |