@mindstudio-ai/agent 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/llms.txt CHANGED
@@ -37,189 +37,698 @@ import { MindStudioError } from '@mindstudio-ai/agent';
37
37
  // 429 errors are retried automatically (3 retries by default)
38
38
  ```
39
39
 
40
- ## Available methods
41
-
42
- Each entry: `method(requiredParams) -> outputKeys` — description
40
+ ## Methods
43
41
 
44
42
  ### General
45
43
 
46
- - `addSubtitlesToVideo(videoUrl, language, fontName, fontSize, fontWeight, fontColor, highlightColor, strokeWidth, strokeColor, backgroundColor, backgroundOpacity, position, yOffset, wordsPerSubtitle, enableAnimation)` -> { videoUrl } — Add Subtitles To Video
47
- - `analyzeImage(prompt, imageUrl)` -> { analysis } — Analyze Image
48
- - `analyzeVideo(prompt, videoUrl)` -> { analysis } Analyze Video
49
- - `captureThumbnail(videoUrl, at)` -> { thumbnailUrl } — Get Image from Video Frame
50
- - `convertPdfToImages(pdfUrl)` -> { imageUrls } — Convert PDF to Images
51
- - `createDataSource(name)` — Create Data Source
52
- - `deleteDataSource(dataSourceId)` — Delete Data Source
53
- - `deleteDataSourceDocument(dataSourceId, documentId)` Delete Data Source Document
54
- - `detectPII(input, language, entities)` -> { detected, detections } — Detect PII
55
- - `downloadVideo(videoUrl, format)` -> { videoUrl } — Download Video
56
- - `enhanceImageGenerationPrompt(initialPrompt, includeNegativePrompt, systemPrompt)` -> { prompt } — Enhance Image Prompt
57
- - `enhanceVideoGenerationPrompt(initialPrompt, includeNegativePrompt, systemPrompt)` -> { prompt } — Enhance Video Prompt
58
- - `extractAudioFromVideo(videoUrl)` -> { audioUrl } Extract Audio from Video
59
- - `extractText(url)` -> { text } — Extract Text from URL
60
- - `fetchDataSourceDocument(dataSourceId, documentId)` — Fetch Data Source Document
61
- - `fetchSlackChannelHistory(connectionId, channelId)` -> { messages } — Fetch Slack Channel History
62
- - `generateAsset(source, sourceType, outputFormat, pageSize, testData)` -> { url } — Generate HTML Asset
63
- - `generateChart(chart)` -> { chartUrl } Generate Chart
64
- - `generateImage(prompt)` -> { imageUrl } — Generate Image
65
- - `generateLipsync()` — Generate Lipsync
66
- - `generateMusic(text)` — Generate Music
67
- - `generateStaticVideoFromImage(imageUrl, duration)` -> { videoUrl } — Generate Static Video from Image
68
- - `generateText(message)` -> { content } — User Message
69
- - `generateVideo(prompt)` -> { videoUrl } — Generate Video
70
- - `getMediaMetadata(mediaUrl)` -> { metadata } — Get Media Metadata
71
- - `httpRequest(url, method, headers, queryParams, body, bodyItems, contentType, customContentType)` -> { ok, status, statusText, response } — HTTP Request
72
- - `imageFaceSwap(imageUrl, faceImageUrl, engine)` -> { imageUrl } — Image Face Swap
73
- - `imageRemoveWatermark(imageUrl, engine)` -> { imageUrl } — Remove Image Watermark
74
- - `insertVideoClips(baseVideoUrl, overlayVideos)` -> { videoUrl } — Insert Video Clips
75
- - `listDataSources()` — List Data Sources
76
- - `logic(context, cases)` -> { selectedCase } — Evaluate Logic
77
- - `makeDotComRunScenario(webhookUrl, input)` -> { data } — Make.com Run Scenario
78
- - `mergeAudio(mp3Urls)` -> { audioUrl } — Merge Audio
79
- - `mergeVideos(videoUrls)` -> { videoUrl } — Merge Videos
80
- - `mixAudioIntoVideo(videoUrl, audioUrl, options)` -> { videoUrl } — Mix Audio into Video
81
- - `muteVideo(videoUrl)` -> { videoUrl } — Mute Video
82
- - `n8nRunNode(method, authentication, user, password, webhookUrl, input)` -> { data } — N8N Run Node
83
- - `postToSlackChannel(channelId, messageType, message, connectionId)` Post to Slack Channel
84
- - `postToZapier(webhookUrl, input)` -> { data } — Post to Zapier
85
- - `queryDataSource(dataSourceId, query, maxResults)` -> { text, chunks, query, citations, latencyMs } — Query Data Source
86
- - `queryExternalDatabase(connectionId, query, outputFormat)` -> { data } — Query External SQL Database
87
- - `redactPII(input, language, entities)` -> { text } — Redact PII
88
- - `removeBackgroundFromImage(imageUrl)` -> { imageUrl } Remove Background From Image
89
- - `resizeVideo(videoUrl, mode)` -> { videoUrl } Resize Video
90
- - `runPackagedWorkflow(appId, workflowId, inputVariables, outputVariables, name)` -> { data } — Run Packaged Workflow
91
- - `scrapeLinkedInCompany(url)` -> { company } — Scrape LinkedIn Company
92
- - `scrapeLinkedInProfile(url)` -> { profile } — Scrape LinkedIn Profile
93
- - `scrapeUrl(url)` -> { content } Scrape URL
94
- - `scrapeXPost(url)` -> { post } — Scrape X Post
95
- - `scrapeXProfile(url)` -> { profile } — Scrape X Profile
96
- - `searchGoogle(query, exportType)` -> { results } — Search Google
97
- - `searchGoogleImages(query, exportType)` -> { images } — Search Google Images
98
- - `searchGoogleNews(text, exportType)` -> { articles } Search Google News
99
- - `searchGoogleTrends(text, hl, geo, data_type, cat, date, ts)` -> { trends } — Search Google Trends
100
- - `searchPerplexity(query, exportType)` -> { results } — Search Perplexity
101
- - `sendEmail(subject, body, connectionId)` -> { recipients } — Send Email
102
- - `sendSMS(body, connectionId)` — Send SMS
103
- - `setRunTitle(title)` Set Run Title
104
- - `setVariable(value, type)` -> { variableName, value } — Set Variable
105
- - `telegramSendAudio(botToken, chatId, audioUrl, mode)` — Send Telegram Audio
106
- - `telegramSendFile(botToken, chatId, fileUrl)` — Send Telegram File
107
- - `telegramSendImage(botToken, chatId, imageUrl)` — Send Telegram Image
108
- - `telegramSendMessage(botToken, chatId, text)` Send Telegram Message
109
- - `telegramSendVideo(botToken, chatId, videoUrl)` Send Telegram Video
110
- - `telegramSetTyping(botToken, chatId)` — Telegram Set Typing
111
- - `textToSpeech(text)` -> { audioUrl } — Text to Speech
112
- - `transcribeAudio(audioUrl, prompt)` -> { text } — Transcribe Audio
113
- - `trimMedia(inputUrl)` -> { mediaUrl } Trim Media
114
- - `uploadDataSourceDocument(dataSourceId, file, fileName)` Upload Data Source Document
115
- - `upscaleImage(imageUrl, targetResolution, engine)` -> { imageUrl } — Upscale Image
116
- - `upscaleVideo(videoUrl, targetResolution, engine)` -> { videoUrl } — Upscale Video
117
- - `videoFaceSwap(videoUrl, faceImageUrl, targetIndex, engine)` -> { videoUrl } — Video Face Swap
118
- - `videoRemoveBackground(videoUrl, newBackground, engine)` -> { videoUrl } Remove Video Background
119
- - `videoRemoveWatermark(videoUrl, engine)` -> { videoUrl } — Remove Video Watermark
120
- - `watermarkImage(imageUrl, watermarkImageUrl, corner, paddingPx, widthPx)` -> { imageUrl } — Watermark Image
121
- - `watermarkVideo(videoUrl, imageUrl, corner, paddingPx, widthPx)` -> { videoUrl } — Watermark Video
44
+ #### addSubtitlesToVideo
45
+ Add Subtitles To Video.
46
+ - Input: `{ videoUrl: string, language: string, fontName: string, fontSize: number, fontWeight: "normal" | "bold" | "black", fontColor: "white" | "black" | "red" | "green" | "blue" | "yellow" | "orange" | "purple" | "pink" | "brown" | "gray" | "cyan" | "magenta", highlightColor: "white" | "black" | "red" | "green" | "blue" | "yellow" | "orange" | "purple" | "pink" | "brown" | "gray" | "cyan" | "magenta", strokeWidth: number, strokeColor: "black" | "white" | "red" | "green" | "blue" | "yellow" | "orange" | "purple" | "pink" | "brown" | "gray" | "cyan" | "magenta", backgroundColor: "black" | "white" | "red" | "green" | "blue" | "yellow" | "orange" | "purple" | "pink" | "brown" | "gray" | "cyan" | "magenta" | "none", backgroundOpacity: number, position: "top" | "center" | "bottom", yOffset: number, wordsPerSubtitle: number, enableAnimation: boolean, skipAssetCreation?: boolean }`
47
+ - Output: `{ videoUrl: string }`
48
+
49
+ #### analyzeImage
50
+ Analyze Image.
51
+ - Input: `{ prompt: string, imageUrl: string, visionModelOverride?: { model: string, config?: object } | { model: string, temperature: number, maxResponseTokens: number, ignorePreamble?: boolean, userMessagePreprocessor?: { dataSource?: string, messageTemplate?: string, maxResults?: number, enabled?: boolean, shouldInherit?: boolean }, preamble?: string, multiModelEnabled?: boolean, editResponseEnabled?: boolean, config?: object } }`
52
+ - Output: `{ analysis: string }`
53
+
54
+ #### analyzeVideo
55
+ Analyze Video.
56
+ - Input: `{ prompt: string, videoUrl: string, videoAnalysisModelOverride?: { model: string, config?: object } | { model: string, temperature: number, maxResponseTokens: number, ignorePreamble?: boolean, userMessagePreprocessor?: { dataSource?: string, messageTemplate?: string, maxResults?: number, enabled?: boolean, shouldInherit?: boolean }, preamble?: string, multiModelEnabled?: boolean, editResponseEnabled?: boolean, config?: object } }`
57
+ - Output: `{ analysis: string }`
58
+
59
+ #### captureThumbnail
60
+ Get Image from Video Frame.
61
+ - Input: `{ videoUrl: string, at: number | string }`
62
+ - Output: `{ thumbnailUrl: string }`
63
+
64
+ #### convertPdfToImages
65
+ Convert PDF to Images.
66
+ - Input: `{ pdfUrl: string }`
67
+ - Output: `{ imageUrls: string[] }`
68
+
69
+ #### createDataSource
70
+ Create Data Source.
71
+ - Input: `{ name: string }`
72
+ - Output: `unknown`
73
+
74
+ #### deleteDataSource
75
+ Delete Data Source.
76
+ - Input: `{ dataSourceId: string }`
77
+ - Output: `unknown`
78
+
79
+ #### deleteDataSourceDocument
80
+ Delete Data Source Document.
81
+ - Input: `{ dataSourceId: string, documentId: string }`
82
+ - Output: `unknown`
83
+
84
+ #### detectPII
85
+ Detect PII.
86
+ - Input: `{ input: string, language: string, entities: string[], detectedStepId?: string, notDetectedStepId?: string, outputLogVariable?: string | null }`
87
+ - Output: `{ detected: boolean, detections: { entity_type: string, start: number, end: number, score: number }[] }`
88
+
89
+ #### downloadVideo
90
+ Download Video.
91
+ - Input: `{ videoUrl: string, format: "mp4" | "mp3" }`
92
+ - Output: `{ videoUrl: string }`
93
+
94
+ #### enhanceImageGenerationPrompt
95
+ Enhance Image Prompt.
96
+ - Input: `{ initialPrompt: string, includeNegativePrompt: boolean, negativePromptDestinationVariableName?: string, systemPrompt: string, modelOverride?: unknown }`
97
+ - Output: `{ prompt: string, negativePrompt?: string }`
98
+
99
+ #### enhanceVideoGenerationPrompt
100
+ Enhance Video Prompt.
101
+ - Input: `{ initialPrompt: string, includeNegativePrompt: boolean, negativePromptDestinationVariableName?: string, systemPrompt: string, modelOverride?: unknown }`
102
+ - Output: `{ prompt: string, negativePrompt?: string }`
103
+
104
+ #### extractAudioFromVideo
105
+ Extract Audio from Video.
106
+ - Input: `{ videoUrl: string }`
107
+ - Output: `{ audioUrl: string }`
108
+
109
+ #### extractText
110
+ Extract Text from URL.
111
+ - Input: `{ url: string | string[] }`
112
+ - Output: `{ text: string | string[] }`
113
+
114
+ #### fetchDataSourceDocument
115
+ Fetch Data Source Document.
116
+ - Input: `{ dataSourceId: string, documentId: string }`
117
+ - Output: `unknown`
118
+
119
+ #### fetchSlackChannelHistory
120
+ Fetch Slack Channel History.
121
+ - Input: `{ connectionId: string, channelId: string, limit?: number, startDate?: string, endDate?: string, includeImages?: boolean, includeRawMessage?: boolean }`
122
+ - Output: `{ messages: { from: string, content: string, timestamp?: string, images?: string[], rawMessage?: { app_id?: string, assistant_app_thread?: { first_user_thread_reply?: string, title?: string, title_blocks?: unknown[] }, attachments?: { actions?: unknown[], app_id?: string, app_unfurl_url?: string, author_icon?: string, author_id?: string, author_link?: string, author_name?: string, author_subname?: string, blocks?: unknown[], bot_id?: string, bot_team_id?: string, callback_id?: string, channel_id?: string, channel_name?: string, channel_team?: string, color?: string, fallback?: string, fields?: unknown[], file_id?: string, filename?: string, files?: unknown[], footer?: string, footer_icon?: string, from_url?: string, hide_border?: boolean, hide_color?: boolean, id?: number, image_bytes?: number, image_height?: number, image_url?: string, image_width?: number, indent?: boolean, is_app_unfurl?: boolean, is_file_attachment?: boolean, is_msg_unfurl?: boolean, is_reply_unfurl?: boolean, is_thread_root_unfurl?: boolean, list?: unknown, list_record?: unknown, list_record_id?: string, list_records?: unknown[], list_schema?: unknown[], list_view?: unknown, list_view_id?: string, message_blocks?: unknown[], metadata?: unknown, mimetype?: string, mrkdwn_in?: string[], msg_subtype?: string, original_url?: string, pretext?: string, preview?: unknown, service_icon?: string, service_name?: string, service_url?: string, size?: number, text?: string, thumb_height?: number, thumb_url?: string, thumb_width?: number, title?: string, title_link?: string, ts?: string, url?: string, video_html?: string, video_html_height?: number, video_html_width?: number, video_url?: string }[], blocks?: { accessory?: unknown, alt_text?: string, api_decoration_available?: boolean, app_collaborators?: string[], app_id?: string, author_name?: string, block_id?: string, bot_user_id?: string, button_label?: string, call?: unknown, call_id?: string, description?: unknown, developer_trace_id?: string, dispatch_action?: boolean, element?: unknown, elements?: unknown[], expand?: boolean, external_id?: string, fallback?: string, fields?: unknown[], file?: unknown, file_id?: string, function_trigger_id?: string, hint?: unknown, image_bytes?: number, image_height?: number, image_url?: string, image_width?: number, is_animated?: boolean, is_workflow_app?: boolean, label?: unknown, optional?: boolean, owning_team_id?: string, provider_icon_url?: string, provider_name?: string, sales_home_workflow_app_type?: number, share_url?: string, slack_file?: unknown, source?: string, text?: unknown, thumbnail_url?: string, title?: unknown, title_url?: string, trigger_subtype?: string, trigger_type?: string, type?: unknown, url?: string, video_url?: string, workflow_id?: string }[], bot_id?: string, bot_profile?: { app_id?: string, deleted?: boolean, icons?: unknown, id?: string, name?: string, team_id?: string, updated?: number }, client_msg_id?: string, display_as_bot?: boolean, edited?: { ts?: string, user?: string }, files?: { access?: string, alt_txt?: string, app_id?: string, app_name?: string, attachments?: unknown[], blocks?: unknown[], bot_id?: string, can_toggle_canvas_lock?: boolean, canvas_printing_enabled?: boolean, canvas_template_mode?: string, cc?: unknown[], channel_actions_count?: number, channel_actions_ts?: string, channels?: string[], comments_count?: number, converted_pdf?: string, created?: number, deanimate?: string, deanimate_gif?: string, display_as_bot?: boolean, dm_mpdm_users_with_file_access?: unknown[], duration_ms?: number, edit_link?: string, edit_timestamp?: number, editable?: boolean, editor?: string, editors?: string[], external_id?: string, external_type?: string, external_url?: string, favorites?: unknown[], file_access?: string, filetype?: string, from?: unknown[], groups?: string[], has_more?: boolean, has_more_shares?: boolean, has_rich_preview?: boolean, headers?: unknown, hls?: string, hls_embed?: string, id?: string, image_exif_rotation?: number, ims?: string[], initial_comment?: unknown, is_channel_space?: boolean, is_external?: boolean, is_public?: boolean, is_restricted_sharing_enabled?: boolean, is_starred?: boolean, last_editor?: string, last_read?: number, lines?: number, lines_more?: number, linked_channel_id?: string, list_csv_download_url?: string, list_limits?: unknown, list_metadata?: unknown, media_display_type?: string, media_progress?: unknown, mimetype?: string, mode?: string, mp4?: string, mp4_low?: string, name?: string, non_owner_editable?: boolean, num_stars?: number, org_or_workspace_access?: string, original_attachment_count?: number, original_h?: string, original_w?: string, permalink?: string, permalink_public?: string, pinned_to?: string[], pjpeg?: string, plain_text?: string, pretty_type?: string, preview?: string, preview_highlight?: string, preview_is_truncated?: boolean, preview_plain_text?: string, private_channels_with_file_access_count?: number, private_file_with_access_count?: number, public_url_shared?: boolean, quip_thread_id?: string, reactions?: unknown[], saved?: unknown, sent_to_self?: boolean, shares?: unknown, show_badge?: boolean, simplified_html?: string, size?: number, source_team?: string, subject?: string, subtype?: string, team_pref_version_history_enabled?: boolean, teams_shared_with?: unknown[], template_conversion_ts?: number, template_description?: string, template_icon?: string, template_name?: string, template_title?: string, thumb_1024?: string, thumb_1024_gif?: string, thumb_1024_h?: string, thumb_1024_w?: string, thumb_160?: string, thumb_160_gif?: string, thumb_160_h?: string, thumb_160_w?: string, thumb_360?: string, thumb_360_gif?: string, thumb_360_h?: string, thumb_360_w?: string, thumb_480?: string, thumb_480_gif?: string, thumb_480_h?: string, thumb_480_w?: string, thumb_64?: string, thumb_64_gif?: string, thumb_64_h?: string, thumb_64_w?: string, thumb_720?: string, thumb_720_gif?: string, thumb_720_h?: string, thumb_720_w?: string, thumb_80?: string, thumb_800?: string, thumb_800_gif?: string, thumb_800_h?: string, thumb_800_w?: string, thumb_80_gif?: string, thumb_80_h?: string, thumb_80_w?: string, thumb_960?: string, thumb_960_gif?: string, thumb_960_h?: string, thumb_960_w?: string, thumb_gif?: string, thumb_pdf?: string, thumb_pdf_h?: string, thumb_pdf_w?: string, thumb_tiny?: string, thumb_video?: string, thumb_video_h?: number, thumb_video_w?: number, timestamp?: number, title?: string, title_blocks?: unknown[], to?: unknown[], transcription?: unknown, update_notification?: number, updated?: number, url_private?: string, url_private_download?: string, url_static_preview?: string, user?: string, user_team?: string, username?: string, vtt?: string }[], icons?: { emoji?: string, image_36?: string, image_48?: string, image_64?: string, image_72?: string }, inviter?: string, is_locked?: boolean, latest_reply?: string, metadata?: { event_payload?: unknown, event_type?: string }, parent_user_id?: string, purpose?: string, reactions?: { count?: number, name?: string, url?: string, users?: string[] }[], reply_count?: number, reply_users?: string[], reply_users_count?: number, root?: { bot_id?: string, icons?: unknown, latest_reply?: string, parent_user_id?: string, reply_count?: number, reply_users?: string[], reply_users_count?: number, subscribed?: boolean, subtype?: string, text?: string, thread_ts?: string, ts?: string, type?: string, username?: string }, subscribed?: boolean, subtype?: string, team?: string, text?: string, thread_ts?: string, topic?: string, ts?: string, type?: string, upload?: boolean, user?: string, username?: string, x_files?: string[] } }[] }`
123
+
124
+ #### generateAsset
125
+ Generate HTML Asset.
126
+ - Input: `{ source: string, sourceType: "html" | "markdown" | "spa" | "raw" | "dynamic" | "customInterface", outputFormat: "pdf" | "png" | "html" | "mp4" | "openGraph", pageSize: "full" | "letter" | "A4" | "custom", testData: object, options?: { pageWidthPx?: number, pageHeightPx?: number, pageOrientation?: "portrait" | "landscape", rehostMedia?: boolean, videoDurationSeconds?: number }, spaSource?: { paths: string[], root: string, zipUrl: string }, rawSource?: string, dynamicPrompt?: string, dynamicSourceModelOverride?: { model: string, temperature: number, maxResponseTokens: number, ignorePreamble?: boolean, userMessagePreprocessor?: { dataSource?: string, messageTemplate?: string, maxResults?: number, enabled?: boolean, shouldInherit?: boolean }, preamble?: string, multiModelEnabled?: boolean, editResponseEnabled?: boolean, config?: object }, transitionControl?: "default" | "native", shareControl?: "default" | "hidden", shareImageUrl?: string, skipAssetCreation?: boolean }`
127
+ - Output: `{ url: string }`
128
+
129
+ #### generateChart
130
+ Generate Chart.
131
+ - Input: `{ chart: { chartType: "bar" | "line" | "pie", data: string, options: { width: string, height: string } } }`
132
+ - Output: `{ chartUrl: string }`
133
+
134
+ #### generateImage
135
+ Generate Image.
136
+ - Input: `{ prompt: string, skipAssetCreation?: boolean, imageModelOverride?: { model: string, config?: object }, generateVariants?: boolean, numVariants?: number, addWatermark?: boolean }`
137
+ - Output: `{ imageUrl: string | string[] }`
138
+
139
+ #### generateLipsync
140
+ Generate Lipsync.
141
+ - Input: `{ skipAssetCreation?: boolean, addWatermark?: boolean, lipsyncModelOverride?: { model: string, config?: object } }`
142
+ - Output: `unknown`
143
+
144
+ #### generateMusic
145
+ Generate Music.
146
+ - Input: `{ text: string, skipAssetCreation?: boolean, musicModelOverride?: { model: string, config?: object } }`
147
+ - Output: `unknown`
148
+
149
+ #### generateStaticVideoFromImage
150
+ Generate Static Video from Image.
151
+ - Input: `{ imageUrl: string, duration: string }`
152
+ - Output: `{ videoUrl: string }`
153
+
154
+ #### generateText
155
+ User Message.
156
+ - Input: `{ message: string, source?: "user" | "system", modelOverride?: { model: string, temperature: number, maxResponseTokens: number, ignorePreamble?: boolean, userMessagePreprocessor?: { dataSource?: string, messageTemplate?: string, maxResults?: number, enabled?: boolean, shouldInherit?: boolean }, preamble?: string, multiModelEnabled?: boolean, editResponseEnabled?: boolean, config?: object }, structuredOutputType?: "text" | "json" | "csv", structuredOutputExample?: string, chatHistoryMode?: "include" | "exclude" }`
157
+ - Output: `{ content: string }`
158
+
159
+ #### generateVideo
160
+ Generate Video.
161
+ - Input: `{ prompt: string, skipAssetCreation?: boolean, videoModelOverride?: { model: string, config?: object }, generateVariants?: boolean, numVariants?: number, addWatermark?: boolean }`
162
+ - Output: `{ videoUrl: string | string[] }`
163
+
164
+ #### getMediaMetadata
165
+ Get Media Metadata.
166
+ - Input: `{ mediaUrl: string }`
167
+ - Output: `{ metadata: string }`
168
+
169
+ #### httpRequest
170
+ HTTP Request.
171
+ - Input: `{ url: string, method: string, headers: object, queryParams: object, body: string, bodyItems: object, contentType: "none" | "application/json" | "application/x-www-form-urlencoded" | "multipart/form-data" | "custom", customContentType: string, testData?: object }`
172
+ - Output: `{ ok: boolean, status: number, statusText: string, response: string }`
173
+
174
+ #### imageFaceSwap
175
+ Image Face Swap.
176
+ - Input: `{ imageUrl: string, faceImageUrl: string, engine: string }`
177
+ - Output: `{ imageUrl: string }`
178
+
179
+ #### imageRemoveWatermark
180
+ Remove Image Watermark.
181
+ - Input: `{ imageUrl: string, engine: string, skipAssetCreation?: boolean }`
182
+ - Output: `{ imageUrl: string }`
183
+
184
+ #### insertVideoClips
185
+ Insert Video Clips.
186
+ - Input: `{ baseVideoUrl: string, overlayVideos: { videoUrl: string, startTimeSec: number }[], transition?: string, transitionDuration?: number, useOverlayAudio?: boolean, skipAssetCreation?: boolean }`
187
+ - Output: `{ videoUrl: string }`
188
+
189
+ #### listDataSources
190
+ List Data Sources.
191
+ - Input: `object`
192
+ - Output: `unknown`
193
+
194
+ #### logic
195
+ Evaluate Logic.
196
+ - Input: `{ context: string, cases: ({ id: string, condition: string, destinationStepId?: string } | string)[] }`
197
+ - Output: `{ selectedCase: number }`
198
+
199
+ #### makeDotComRunScenario
200
+ Make.com Run Scenario.
201
+ - Input: `{ webhookUrl: string, input: object }`
202
+ - Output: `{ data: unknown }`
203
+
204
+ #### mergeAudio
205
+ Merge Audio.
206
+ - Input: `{ mp3Urls: string[], fileMetadata?: object, albumArtUrl?: string, skipAssetCreation?: boolean }`
207
+ - Output: `{ audioUrl: string }`
208
+
209
+ #### mergeVideos
210
+ Merge Videos.
211
+ - Input: `{ videoUrls: string[], transition?: string, transitionDuration?: number, skipAssetCreation?: boolean }`
212
+ - Output: `{ videoUrl: string }`
213
+
214
+ #### mixAudioIntoVideo
215
+ Mix Audio into Video.
216
+ - Input: `{ videoUrl: string, audioUrl: string, options: { keepVideoAudio?: boolean, audioGainDb?: number, videoGainDb?: number, loopAudio?: boolean }, skipAssetCreation?: boolean }`
217
+ - Output: `{ videoUrl: string }`
218
+
219
+ #### muteVideo
220
+ Mute Video.
221
+ - Input: `{ videoUrl: string, skipAssetCreation?: boolean }`
222
+ - Output: `{ videoUrl: string }`
223
+
224
+ #### n8nRunNode
225
+ N8N Run Node.
226
+ - Input: `{ method: string, authentication: "none" | "basic" | "string", user: string, password: string, webhookUrl: string, input: object }`
227
+ - Output: `{ data: unknown }`
228
+
229
+ #### postToSlackChannel
230
+ Post to Slack Channel.
231
+ - Input: `{ channelId: string, messageType: "string" | "blocks", message: string, connectionId: string }`
232
+ - Output: `unknown`
233
+
234
+ #### postToZapier
235
+ Post to Zapier.
236
+ - Input: `{ webhookUrl: string, input: object }`
237
+ - Output: `{ data: unknown }`
238
+
239
+ #### queryDataSource
240
+ Query Data Source.
241
+ - Input: `{ dataSourceId: string, query: string, maxResults: number }`
242
+ - Output: `{ text: string, chunks: string[], query: string, citations: unknown[], latencyMs: number }`
243
+
244
+ #### queryExternalDatabase
245
+ Query External SQL Database.
246
+ - Input: `{ connectionId: string, query: string, outputFormat: "json" | "csv" }`
247
+ - Output: `{ data: unknown }`
248
+
249
+ #### redactPII
250
+ Redact PII.
251
+ - Input: `{ input: string, language: string, entities: string[] }`
252
+ - Output: `{ text: string }`
253
+
254
+ #### removeBackgroundFromImage
255
+ Remove Background From Image.
256
+ - Input: `{ imageUrl: string }`
257
+ - Output: `{ imageUrl: string }`
258
+
259
+ #### resizeVideo
260
+ Resize Video.
261
+ - Input: `{ videoUrl: string, mode: "fit" | "exact", maxWidth?: number, maxHeight?: number, width?: number, height?: number, strategy?: "pad" | "crop", skipAssetCreation?: boolean }`
262
+ - Output: `{ videoUrl: string }`
263
+
264
+ #### runPackagedWorkflow
265
+ Run Packaged Workflow.
266
+ - Input: `{ appId: string, workflowId: string, inputVariables: object, outputVariables: object, name: string }`
267
+ - Output: `{ data: unknown }`
268
+
269
+ #### scrapeLinkedInCompany
270
+ Scrape LinkedIn Company.
271
+ - Input: `{ url: string }`
272
+ - Output: `{ company: unknown }`
273
+
274
+ #### scrapeLinkedInProfile
275
+ Scrape LinkedIn Profile.
276
+ - Input: `{ url: string }`
277
+ - Output: `{ profile: unknown }`
278
+
279
+ #### scrapeUrl
280
+ Scrape URL.
281
+ - Input: `{ url: string, service?: "default" | "firecrawl", autoEnhance?: boolean, pageOptions?: { onlyMainContent: boolean, screenshot: boolean, waitFor: number, replaceAllPathsWithAbsolutePaths: boolean, headers: object, removeTags: string[], mobile: boolean } }`
282
+ - Output: `{ content: string | string[] | { text: string, html: string, json?: object, screenshotUrl?: string, metadata?: { title: string, description: string, url: string, image: string } } | { text: string, html: string, json?: object, screenshotUrl?: string, metadata?: { title: string, description: string, url: string, image: string } }[], screenshot?: string }`
283
+
284
+ #### scrapeXPost
285
+ Scrape X Post.
286
+ - Input: `{ url: string }`
287
+ - Output: `{ post: { text: string, html: string, json?: object, screenshotUrl?: string, metadata?: { title: string, description: string, url: string, image: string } } }`
288
+
289
+ #### scrapeXProfile
290
+ Scrape X Profile.
291
+ - Input: `{ url: string }`
292
+ - Output: `{ profile: { text: string, html: string, json?: object, screenshotUrl?: string, metadata?: { title: string, description: string, url: string, image: string } } }`
293
+
294
+ #### searchGoogle
295
+ Search Google.
296
+ - Input: `{ query: string, exportType: "text" | "json", countryCode?: string, languageCode?: string, dateRange?: "hour" | "day" | "week" | "month" | "year" | "any", numResults?: number }`
297
+ - Output: `{ results: { title: string, description: string, url: string }[] }`
298
+
299
+ #### searchGoogleImages
300
+ Search Google Images.
301
+ - Input: `{ query: string, exportType: "text" | "json", countryCode?: string, languageCode?: string, dateRange?: "hour" | "day" | "week" | "month" | "year" | "any", numResults?: number }`
302
+ - Output: `{ images: { title: string, imageUrl: string, imageWidth: number, imageHeight: number, thumbnailUrl: string, thumbnailWidth: number, thumbnailHeight: number, source: string, domain: string, link: string, googleUrl: string, position: number }[] }`
303
+
304
+ #### searchGoogleNews
305
+ Search Google News.
306
+ - Input: `{ text: string, exportType: "text" | "json", numResults?: number }`
307
+ - Output: `{ articles: { title: string, link: string, date: string, source: { name: string }, snippet?: string }[] }`
308
+
309
+ #### searchGoogleTrends
310
+ Search Google Trends.
311
+ - Input: `{ text: string, hl: string, geo: string, data_type: "TIMESERIES" | "GEO_MAP" | "GEO_MAP_0" | "RELATED_TOPICS" | "RELATED_QUERIES", cat: string, date: string, ts: string }`
312
+ - Output: `{ trends: object }`
313
+
314
+ #### searchPerplexity
315
+ Search Perplexity.
316
+ - Input: `{ query: string, exportType: "text" | "json", countryCode?: string, numResults?: number }`
317
+ - Output: `{ results: { title: string, description: string, url: string }[] }`
318
+
319
+ #### sendEmail
320
+ Send Email.
321
+ - Input: `{ subject: string, body: string, connectionId: string, generateHtml?: boolean, generateHtmlInstructions?: string, generateHtmlModelOverride?: { model: string, temperature: number, maxResponseTokens: number, ignorePreamble?: boolean, userMessagePreprocessor?: { dataSource?: string, messageTemplate?: string, maxResults?: number, enabled?: boolean, shouldInherit?: boolean }, preamble?: string, multiModelEnabled?: boolean, editResponseEnabled?: boolean, config?: object }, attachments?: string[] }`
322
+ - Output: `{ recipients: string[] }`
323
+
324
+ #### sendSMS
325
+ Send SMS.
326
+ - Input: `{ body: string, connectionId: string }`
327
+ - Output: `unknown`
328
+
329
+ #### setRunTitle
330
+ Set Run Title.
331
+ - Input: `{ title: string }`
332
+ - Output: `unknown`
333
+
334
+ #### setVariable
335
+ Set Variable.
336
+ - Input: `{ value: string | string[], type: "imageUrl" | "videoUrl" | "fileUrl" | "plaintext" | "textArray" | "imageUrlArray" | "videoUrlArray" }`
337
+ - Output: `{ variableName: string, value: string | string[] }`
338
+
339
+ #### telegramSendAudio
340
+ Send Telegram Audio.
341
+ - Input: `{ botToken: string, chatId: string, audioUrl: string, mode: "audio" | "voice", caption?: string }`
342
+ - Output: `unknown`
343
+
344
+ #### telegramSendFile
345
+ Send Telegram File.
346
+ - Input: `{ botToken: string, chatId: string, fileUrl: string, caption?: string }`
347
+ - Output: `unknown`
348
+
349
+ #### telegramSendImage
350
+ Send Telegram Image.
351
+ - Input: `{ botToken: string, chatId: string, imageUrl: string, caption?: string }`
352
+ - Output: `unknown`
353
+
354
+ #### telegramSendMessage
355
+ Send Telegram Message.
356
+ - Input: `{ botToken: string, chatId: string, text: string }`
357
+ - Output: `unknown`
358
+
359
+ #### telegramSendVideo
360
+ Send Telegram Video.
361
+ - Input: `{ botToken: string, chatId: string, videoUrl: string, caption?: string }`
362
+ - Output: `unknown`
363
+
364
+ #### telegramSetTyping
365
+ Telegram Set Typing.
366
+ - Input: `{ botToken: string, chatId: string }`
367
+ - Output: `unknown`
368
+
369
+ #### textToSpeech
370
+ Text to Speech.
371
+ - Input: `{ text: string, skipAssetCreation?: boolean, speechModelOverride?: { model: string, config?: object } }`
372
+ - Output: `{ audioUrl: string }`
373
+
374
+ #### transcribeAudio
375
+ Transcribe Audio.
376
+ - Input: `{ audioUrl: string, prompt: string, transcriptionModelOverride?: { model: string, config?: object } }`
377
+ - Output: `{ text: string }`
378
+
379
+ #### trimMedia
380
+ Trim Media.
381
+ - Input: `{ inputUrl: string, start?: number | string, duration?: string | number, skipAssetCreation?: boolean }`
382
+ - Output: `{ mediaUrl: string }`
383
+
384
+ #### uploadDataSourceDocument
385
+ Upload Data Source Document.
386
+ - Input: `{ dataSourceId: string, file: string, fileName: string }`
387
+ - Output: `unknown`
388
+
389
+ #### upscaleImage
390
+ Upscale Image.
391
+ - Input: `{ imageUrl: string, targetResolution: "2k" | "4k" | "8k", engine: "standard" | "pro" }`
392
+ - Output: `{ imageUrl: string }`
393
+
394
+ #### upscaleVideo
395
+ Upscale Video.
396
+ - Input: `{ videoUrl: string, targetResolution: "720p" | "1080p" | "2K" | "4K", engine: "standard" | "pro" | "ultimate" | "flashvsr" | "seedance" | "seedvr2" | "runwayml/upscale-v1", skipAssetCreation?: boolean }`
397
+ - Output: `{ videoUrl: string }`
398
+
399
+ #### videoFaceSwap
400
+ Video Face Swap.
401
+ - Input: `{ videoUrl: string, faceImageUrl: string, targetIndex: number, engine: string, skipAssetCreation?: boolean }`
402
+ - Output: `{ videoUrl: string }`
403
+
404
+ #### videoRemoveBackground
405
+ Remove Video Background.
406
+ - Input: `{ videoUrl: string, newBackground: "transparent" | "image", newBackgroundImageUrl?: string, engine: string, skipAssetCreation?: boolean }`
407
+ - Output: `{ videoUrl: string }`
408
+
409
+ #### videoRemoveWatermark
410
+ Remove Video Watermark.
411
+ - Input: `{ videoUrl: string, engine: string, skipAssetCreation?: boolean }`
412
+ - Output: `{ videoUrl: string }`
413
+
414
+ #### watermarkImage
415
+ Watermark Image.
416
+ - Input: `{ imageUrl: string, watermarkImageUrl: string, corner: "top-left" | "top-right" | "bottom-left" | "bottom-right", paddingPx: number, widthPx: number, skipAssetCreation?: boolean }`
417
+ - Output: `{ imageUrl: string }`
418
+
419
+ #### watermarkVideo
420
+ Watermark Video.
421
+ - Input: `{ videoUrl: string, imageUrl: string, corner: "top-left" | "top-right" | "bottom-left" | "bottom-right", paddingPx: number, widthPx: number, skipAssetCreation?: boolean }`
422
+ - Output: `{ videoUrl: string }`
122
423
 
123
424
  ### ActiveCampaign
124
425
 
125
- - `activeCampaignAddNote(contactId, note, connectionId)` — Add Note
126
- - `activeCampaignCreateContact(email, firstName, lastName, phone, accountId, customFields, connectionId)` -> { contactId } — Create Contact
426
+ #### activeCampaignAddNote
427
+ Add Note.
428
+ - Input: `{ contactId: string, note: string, connectionId: string }`
429
+ - Output: `unknown`
430
+
431
+ #### activeCampaignCreateContact
432
+ Create Contact.
433
+ - Input: `{ email: string, firstName: string, lastName: string, phone: string, accountId: string, customFields: object, connectionId: string }`
434
+ - Output: `{ contactId: string }`
127
435
 
128
436
  ### Airtable
129
437
 
130
- - `airtableCreateUpdateRecord(connectionId, baseId, tableId, fields, recordData)` -> { recordId } — Create/Update record
131
- - `airtableDeleteRecord(connectionId, baseId, tableId, recordId)` -> { deleted } — Delete record
132
- - `airtableGetRecord(connectionId, baseId, tableId, recordId)` -> { record } Get record
133
- - `airtableGetTableRecords(connectionId, baseId, tableId)` -> { records } — Get table records
438
+ #### airtableCreateUpdateRecord
439
+ Create/Update record.
440
+ - Input: `{ connectionId: string, baseId: string, tableId: string, recordId?: string, updateMode?: "onlySpecified" | "all", fields: unknown, recordData: object }`
441
+ - Output: `{ recordId: string }`
442
+
443
+ #### airtableDeleteRecord
444
+ Delete record.
445
+ - Input: `{ connectionId: string, baseId: string, tableId: string, recordId: string }`
446
+ - Output: `{ deleted: boolean }`
447
+
448
+ #### airtableGetRecord
449
+ Get record.
450
+ - Input: `{ connectionId: string, baseId: string, tableId: string, recordId: string }`
451
+ - Output: `{ record: { id: string, createdTime: string, fields: object } | null }`
452
+
453
+ #### airtableGetTableRecords
454
+ Get table records.
455
+ - Input: `{ connectionId: string, baseId: string, tableId: string, outputFormat?: "json" | "csv", limit?: number }`
456
+ - Output: `{ records: { id: string, createdTime: string, fields: object }[] }`
134
457
 
135
458
  ### Apollo
136
459
 
137
- - `enrichPerson(params)` -> { data } — Enrich Person
138
- - `peopleSearch(smartQuery, enrichPeople, enrichOrganizations, limit, page, params)` -> { results } — People Search
460
+ #### enrichPerson
461
+ Enrich Person.
462
+ - Input: `{ params: { id: string, name: string, linkedinUrl: string, email: string, domain: string } }`
463
+ - Output: `{ data: unknown }`
464
+
465
+ #### peopleSearch
466
+ People Search.
467
+ - Input: `{ smartQuery: string, enrichPeople: boolean, enrichOrganizations: boolean, limit: string, page: string, params: { personTitles: string, includeSimilarTitles: string, qKeywords: string, personLocations: string, personSeniorities: string, organizationLocations: string, qOrganizationDomainsList: string, contactEmailStatus: string, organizationNumEmployeesRanges: string, revenueRangeMin: string, revenueRangeMax: string, currentlyUsingAllOfTechnologyUids: string, currentlyUsingAnyOfTechnologyUids: string, currentlyNotUsingAnyOfTechnologyUids: string } }`
468
+ - Output: `{ results: unknown }`
139
469
 
140
470
  ### Coda
141
471
 
142
- - `codaCreateUpdatePage(connectionId, pageData)` -> { pageId } — Create/Update page
143
- - `codaCreateUpdateRow(connectionId, docId, tableId, rowData)` -> { rowId } — Create/Update row
144
- - `codaFindRow(connectionId, docId, tableId, rowData)` -> { row } Find row
145
- - `codaGetPage(connectionId, docId, pageId)` -> { content } — Get page
146
- - `codaGetTableRows(connectionId, docId, tableId)` -> { rows } — Get table rows
472
+ #### codaCreateUpdatePage
473
+ Create/Update page.
474
+ - Input: `{ connectionId: string, pageData: { docId: string, pageId?: string, name: string, subtitle: string, iconName: string, imageUrl: string, parentPageId?: string, pageContent: string | unknown, contentUpdate?: unknown, insertionMode?: string } }`
475
+ - Output: `{ pageId: string }`
476
+
477
+ #### codaCreateUpdateRow
478
+ Create/Update row.
479
+ - Input: `{ connectionId: string, docId: string, tableId: string, rowId?: string, rowData: object }`
480
+ - Output: `{ rowId: string }`
481
+
482
+ #### codaFindRow
483
+ Find row.
484
+ - Input: `{ connectionId: string, docId: string, tableId: string, rowData: object }`
485
+ - Output: `{ row: { id: string, values: object } | null }`
486
+
487
+ #### codaGetPage
488
+ Get page.
489
+ - Input: `{ connectionId: string, docId: string, pageId: string, outputFormat?: "html" | "markdown" }`
490
+ - Output: `{ content: string }`
491
+
492
+ #### codaGetTableRows
493
+ Get table rows.
494
+ - Input: `{ connectionId: string, docId: string, tableId: string, limit?: number | string, outputFormat?: "json" | "csv" }`
495
+ - Output: `{ rows: { id: string, values: object }[] }`
147
496
 
148
497
  ### Facebook
149
498
 
150
- - `scrapeFacebookPage(pageUrl)` -> { data } — Scrape Page
151
- - `scrapeFacebookPosts(pageUrl)` -> { data } — Scrape Posts for Page
499
+ #### scrapeFacebookPage
500
+ Scrape Page.
501
+ - Input: `{ pageUrl: string }`
502
+ - Output: `{ data: unknown }`
503
+
504
+ #### scrapeFacebookPosts
505
+ Scrape Posts for Page.
506
+ - Input: `{ pageUrl: string }`
507
+ - Output: `{ data: unknown }`
152
508
 
153
509
  ### Google
154
510
 
155
- - `createGoogleDoc(title, text, connectionId, textType)` -> { documentUrl } — Create Google Doc
156
- - `createGoogleSheet(title, text, connectionId)` -> { spreadsheetUrl } — Create Google Sheet
157
- - `fetchGoogleDoc(documentId, connectionId, exportType)` -> { content } Fetch Google Doc
158
- - `fetchGoogleSheet(spreadsheetId, range, connectionId, exportType)` -> { content } — Fetch Google Sheet
159
- - `updateGoogleDoc(documentId, connectionId, text, textType, operationType)` -> { documentUrl } — Update Google Doc
160
- - `updateGoogleSheet(text, connectionId, spreadsheetId, range, operationType)` -> { spreadsheetUrl } — Update Google Sheet
511
+ #### createGoogleDoc
512
+ Create Google Doc.
513
+ - Input: `{ title: string, text: string, connectionId: string, textType: "plain" | "html" | "markdown" }`
514
+ - Output: `{ documentUrl: string }`
515
+
516
+ #### createGoogleSheet
517
+ Create Google Sheet.
518
+ - Input: `{ title: string, text: string, connectionId: string }`
519
+ - Output: `{ spreadsheetUrl: string }`
520
+
521
+ #### fetchGoogleDoc
522
+ Fetch Google Doc.
523
+ - Input: `{ documentId: string, connectionId: string, exportType: "html" | "markdown" | "json" | "plain" }`
524
+ - Output: `{ content: string }`
525
+
526
+ #### fetchGoogleSheet
527
+ Fetch Google Sheet.
528
+ - Input: `{ spreadsheetId: string, range: string, connectionId: string, exportType: "csv" | "json" }`
529
+ - Output: `{ content: string }`
530
+
531
+ #### updateGoogleDoc
532
+ Update Google Doc.
533
+ - Input: `{ documentId: string, connectionId: string, text: string, textType: "plain" | "html" | "markdown", operationType: "addToTop" | "addToBottom" | "overwrite" }`
534
+ - Output: `{ documentUrl: string }`
535
+
536
+ #### updateGoogleSheet
537
+ Update Google Sheet.
538
+ - Input: `{ text: string, connectionId: string, spreadsheetId: string, range: string, operationType: "addToBottom" | "overwrite" | "range" }`
539
+ - Output: `{ spreadsheetUrl: string }`
161
540
 
162
541
  ### Google Calendar
163
542
 
164
- - `createGoogleCalendarEvent(connectionId, summary, startDateTime, endDateTime)` -> { eventId, htmlLink } — Create Event
165
- - `deleteGoogleCalendarEvent(connectionId, eventId)` — Get Event
166
- - `getGoogleCalendarEvent(connectionId, eventId, exportType)` -> { event } Get Event
167
- - `listGoogleCalendarEvents(connectionId, limit, exportType)` -> { events } List Events
168
- - `updateGoogleCalendarEvent(connectionId, eventId)` -> { eventId, htmlLink } — Update Event
543
+ #### createGoogleCalendarEvent
544
+ Create Event.
545
+ - Input: `{ connectionId: string, summary: string, description?: string, location?: string, startDateTime: string, endDateTime: string, attendees?: string, addMeetLink?: boolean, calendarId?: string }`
546
+ - Output: `{ eventId: string, htmlLink: string }`
547
+
548
+ #### deleteGoogleCalendarEvent
549
+ Get Event.
550
+ - Input: `{ connectionId: string, eventId: string, calendarId?: string }`
551
+ - Output: `unknown`
552
+
553
+ #### getGoogleCalendarEvent
554
+ Get Event.
555
+ - Input: `{ connectionId: string, eventId: string, exportType: "json" | "text", calendarId?: string }`
556
+ - Output: `{ event: { id?: string | null, status?: string | null, htmlLink?: string | null, created?: string | null, updated?: string | null, summary?: string | null, description?: string | null, location?: string | null, organizer?: { displayName?: string | null, email?: string | null } | null, start?: { dateTime?: string | null, timeZone?: string | null } | null, end?: { dateTime?: string | null, timeZone?: string | null } | null, attendees?: ({ displayName?: string | null, email?: string | null, responseStatus?: string | null })[] | null } }`
557
+
558
+ #### listGoogleCalendarEvents
559
+ List Events.
560
+ - Input: `{ connectionId: string, limit: number, exportType: "json" | "text", calendarId?: string }`
561
+ - Output: `{ events: ({ id?: string | null, status?: string | null, htmlLink?: string | null, created?: string | null, updated?: string | null, summary?: string | null, description?: string | null, location?: string | null, organizer?: { displayName?: string | null, email?: string | null } | null, start?: { dateTime?: string | null, timeZone?: string | null } | null, end?: { dateTime?: string | null, timeZone?: string | null } | null, attendees?: ({ displayName?: string | null, email?: string | null, responseStatus?: string | null })[] | null })[] }`
562
+
563
+ #### updateGoogleCalendarEvent
564
+ Update Event.
565
+ - Input: `{ connectionId: string, eventId: string, summary?: string, description?: string, location?: string, startDateTime?: string, endDateTime?: string, attendees?: string, calendarId?: string }`
566
+ - Output: `{ eventId: string, htmlLink: string }`
169
567
 
170
568
  ### HubSpot
171
569
 
172
- - `hubspotCreateCompany(connectionId, company, enabledProperties)` -> { companyId } — Create/Update Company
173
- - `hubspotCreateContact(connectionId, contact, enabledProperties, companyDomain)` -> { contactId } — Create/Update Contact
174
- - `hubspotGetCompany(connectionId, searchBy, companyDomain, companyId, additionalProperties)` -> { company } Get Company
175
- - `hubspotGetContact(connectionId, searchBy, contactEmail, contactId, additionalProperties)` -> { contact } — Get Contact
570
+ #### hubspotCreateCompany
571
+ Create/Update Company.
572
+ - Input: `{ connectionId: string, company: { domain: string, name: string }, enabledProperties: ({ label: string, value: string, type: "string" | "number" | "bool" })[] }`
573
+ - Output: `{ companyId: string }`
574
+
575
+ #### hubspotCreateContact
576
+ Create/Update Contact.
577
+ - Input: `{ connectionId: string, contact: { email: string, firstname: string, lastname: string }, enabledProperties: ({ label: string, value: string, type: "string" | "number" | "bool" })[], companyDomain: string }`
578
+ - Output: `{ contactId: string }`
579
+
580
+ #### hubspotGetCompany
581
+ Get Company.
582
+ - Input: `{ connectionId: string, searchBy: "domain" | "id", companyDomain: string, companyId: string, additionalProperties: string[] }`
583
+ - Output: `{ company: { id: string, properties: object, createdAt: string, updatedAt: string, archived: boolean } | null }`
584
+
585
+ #### hubspotGetContact
586
+ Get Contact.
587
+ - Input: `{ connectionId: string, searchBy: "email" | "id", contactEmail: string, contactId: string, additionalProperties: string[] }`
588
+ - Output: `{ contact: { id: string, properties: object, createdAt: string, updatedAt: string, archived: boolean } | null }`
176
589
 
177
590
  ### Hunter.io
178
591
 
179
- - `hunterApiCompanyEnrichment(domain)` -> { data } — Enrich Company
180
- - `hunterApiDomainSearch(domain)` -> { data } — Domain Search
181
- - `hunterApiEmailFinder(domain, firstName, lastName)` -> { data } — Find Email
182
- - `hunterApiEmailVerification(email)` -> { data } Verify Email
183
- - `hunterApiPersonEnrichment(email)` -> { data } — Enrich Person
592
+ #### hunterApiCompanyEnrichment
593
+ Enrich Company.
594
+ - Input: `{ domain: string }`
595
+ - Output: `{ data: { name: string, domain: string, description: string | null, country: string | null, state: string | null, city: string | null, industry: string | null, employees_range: string | null, logo_url: string | null, technologies: string[] } | null }`
596
+
597
+ #### hunterApiDomainSearch
598
+ Domain Search.
599
+ - Input: `{ domain: string }`
600
+ - Output: `{ data: { domain: string, disposable: boolean, webmail: boolean, accept_all: boolean, pattern: string, organization: string, country: string | null, state: string | null, emails: ({ value: string, type: string, confidence: number, first_name: string | null, last_name: string | null, position: string | null, seniority: string | null, department: string | null, linkedin: string | null, twitter: string | null, phone_number: string | null })[], linked_domains: string[] } }`
601
+
602
+ #### hunterApiEmailFinder
603
+ Find Email.
604
+ - Input: `{ domain: string, firstName: string, lastName: string }`
605
+ - Output: `{ data: { first_name: string, last_name: string, email: string, score: number, domain: string, accept_all: boolean, position: string | null, twitter: string | null, linkedin_url: string | null, phone_number: string | null, company: string | null, sources: { domain: string, uri: string, extracted_on: string }[] } }`
606
+
607
+ #### hunterApiEmailVerification
608
+ Verify Email.
609
+ - Input: `{ email: string }`
610
+ - Output: `{ data: { status: string, result: string, score: number, email: string, regexp: boolean, gibberish: boolean, disposable: boolean, webmail: boolean, mx_records: boolean, smtp_server: boolean, smtp_check: boolean, accept_all: boolean, block: boolean, sources: { domain: string, uri: string, extracted_on: string }[] } }`
611
+
612
+ #### hunterApiPersonEnrichment
613
+ Enrich Person.
614
+ - Input: `{ email: string }`
615
+ - Output: `{ data: { first_name: string, last_name: string, email: string, position: string | null, seniority: string | null, department: string | null, linkedin_url: string | null, twitter: string | null, phone_number: string | null, company: { name: string, domain: string, industry: string | null } | null } | { error: string } }`
184
616
 
185
617
  ### Instagram
186
618
 
187
- - `scrapeInstagramComments(postUrl, resultsLimit)` -> { data } — Scrape Comments
188
- - `scrapeInstagramMentions(profileUrl, resultsLimit)` -> { data } — Scrape Mentions
189
- - `scrapeInstagramPosts(profileUrl, resultsLimit, onlyPostsNewerThan)` -> { data } Scrape Posts
190
- - `scrapeInstagramProfile(profileUrl)` -> { data } — Scrape Profile
191
- - `scrapeInstagramReels(profileUrl, resultsLimit)` -> { data } — Scrape Reels
619
+ #### scrapeInstagramComments
620
+ Scrape Comments.
621
+ - Input: `{ postUrl: string, resultsLimit: string }`
622
+ - Output: `{ data: unknown }`
623
+
624
+ #### scrapeInstagramMentions
625
+ Scrape Mentions.
626
+ - Input: `{ profileUrl: string, resultsLimit: string }`
627
+ - Output: `{ data: unknown }`
628
+
629
+ #### scrapeInstagramPosts
630
+ Scrape Posts.
631
+ - Input: `{ profileUrl: string, resultsLimit: string, onlyPostsNewerThan: string }`
632
+ - Output: `{ data: unknown }`
633
+
634
+ #### scrapeInstagramProfile
635
+ Scrape Profile.
636
+ - Input: `{ profileUrl: string }`
637
+ - Output: `{ data: unknown }`
638
+
639
+ #### scrapeInstagramReels
640
+ Scrape Reels.
641
+ - Input: `{ profileUrl: string, resultsLimit: string }`
642
+ - Output: `{ data: unknown }`
192
643
 
193
644
  ### LinkedIn
194
645
 
195
- - `postToLinkedIn(message, visibility, connectionId)` — Create post
646
+ #### postToLinkedIn
647
+ Create post.
648
+ - Input: `{ message: string, visibility: "PUBLIC" | "CONNECTIONS", videoUrl?: string, descriptionText?: string, titleText?: string, imageUrl?: string, connectionId: string }`
649
+ - Output: `unknown`
196
650
 
197
651
  ### Meta Threads
198
652
 
199
- - `scrapeMetaThreadsProfile(profileUrl)` -> { data } — Scrape Profile
653
+ #### scrapeMetaThreadsProfile
654
+ Scrape Profile.
655
+ - Input: `{ profileUrl: string }`
656
+ - Output: `{ data: unknown }`
200
657
 
201
658
  ### Notion
202
659
 
203
- - `notionCreatePage(pageId, content, title, connectionId)` -> { pageId, pageUrl } — Create Page
204
- - `notionUpdatePage(pageId, content, mode, connectionId)` -> { pageId, pageUrl } — Update Page
660
+ #### notionCreatePage
661
+ Create Page.
662
+ - Input: `{ pageId: string, content: string, title: string, connectionId: string }`
663
+ - Output: `{ pageId: string, pageUrl: string }`
664
+
665
+ #### notionUpdatePage
666
+ Update Page.
667
+ - Input: `{ pageId: string, content: string, mode: "append" | "overwrite", connectionId: string }`
668
+ - Output: `{ pageId: string, pageUrl: string }`
205
669
 
206
670
  ### X
207
671
 
208
- - `postToX(text, connectionId)` — Create post
209
- - `searchXPosts(query, scope, options)` -> { posts } — Search Posts
672
+ #### postToX
673
+ Create post.
674
+ - Input: `{ text: string, connectionId: string }`
675
+ - Output: `unknown`
676
+
677
+ #### searchXPosts
678
+ Search Posts.
679
+ - Input: `{ query: string, scope: "recent" | "all", options: { startTime?: string, endTime?: string, maxResults?: number } }`
680
+ - Output: `{ posts: { id: string, authorId: string, dateCreated: string, text: string, stats: { retweets: number, replies: number, likes: number } }[] }`
210
681
 
211
682
  ### YouTube
212
683
 
213
- - `fetchYoutubeCaptions(videoUrl, exportType, language)` -> { transcripts } — Fetch Captions
214
- - `fetchYoutubeChannel(channelUrl)` -> { channel } — Fetch Channel
215
- - `fetchYoutubeComments(videoUrl, exportType, limitPages)` -> { comments } — Fetch Comments
216
- - `fetchYoutubeVideo(videoUrl)` -> { video } Fetch Video
217
- - `searchYoutube(query, limitPages, filter, filterType)` -> { results } — Search Videos
218
- - `searchYoutubeTrends(bp, hl, gl)` -> { trends } — Search Trends
684
+ #### fetchYoutubeCaptions
685
+ Fetch Captions.
686
+ - Input: `{ videoUrl: string, exportType: "text" | "json", language: string }`
687
+ - Output: `{ transcripts: { text: string, start: number }[] }`
688
+
689
+ #### fetchYoutubeChannel
690
+ Fetch Channel.
691
+ - Input: `{ channelUrl: string }`
692
+ - Output: `{ channel: object }`
693
+
694
+ #### fetchYoutubeComments
695
+ Fetch Comments.
696
+ - Input: `{ videoUrl: string, exportType: "text" | "json", limitPages: string }`
697
+ - Output: `{ comments: { id: string, link: string, publishedDate: string, text: string, likes: number, replies: number, author: string, authorLink: string, authorImg: string }[] }`
698
+
699
+ #### fetchYoutubeVideo
700
+ Fetch Video.
701
+ - Input: `{ videoUrl: string }`
702
+ - Output: `{ video: object }`
703
+
704
+ #### searchYoutube
705
+ Search Videos.
706
+ - Input: `{ query: string, limitPages: string, filter: string, filterType: string, countryCode?: string, languageCode?: string }`
707
+ - Output: `{ results: object }`
708
+
709
+ #### searchYoutubeTrends
710
+ Search Trends.
711
+ - Input: `{ bp: "now" | "music" | "gaming" | "films", hl: string, gl: string }`
712
+ - Output: `{ trends: object }`
219
713
 
220
714
  ### Helpers
221
715
 
222
- - `listModels()` -> { models } — List all available AI models
223
- - `listModelsByType(modelType)` -> { models } — Filter by type: "llm_chat", "image_generation", "video_generation", "video_analysis", "text_to_speech", "vision", "transcription"
224
- - `listConnectors()` -> { services } — List available connector services
225
- - `getConnector(serviceId)` -> { service } — Get connector details
716
+ #### listModels
717
+ List all available AI models.
718
+ - Input: none
719
+ - Output: `{ models: MindStudioModel[] }`
720
+
721
+ #### listModelsByType
722
+ List AI models filtered by type.
723
+ - Input: `modelType: "llm_chat" | "image_generation" | "video_generation" | "video_analysis" | "text_to_speech" | "vision" | "transcription"`
724
+ - Output: `{ models: MindStudioModel[] }`
725
+
726
+ #### listConnectors
727
+ List available connector services.
728
+ - Input: none
729
+ - Output: `{ services: Array<{ service: object, actions: object[] }> }`
730
+
731
+ #### getConnector
732
+ Get details for a single connector service.
733
+ - Input: `serviceId: string`
734
+ - Output: `{ service: object }`