diff --git a/src/assets/docs/agent-connectors/hubspot/optional-scopes.png b/src/assets/docs/agent-connectors/hubspot/optional-scopes.png new file mode 100644 index 000000000..81a8e4951 Binary files /dev/null and b/src/assets/docs/agent-connectors/hubspot/optional-scopes.png differ diff --git a/src/components/templates/agent-connectors/_section-after-authentication-hubspot-app-types.mdx b/src/components/templates/agent-connectors/_section-after-authentication-hubspot-app-types.mdx new file mode 100644 index 000000000..6ed247396 --- /dev/null +++ b/src/components/templates/agent-connectors/_section-after-authentication-hubspot-app-types.mdx @@ -0,0 +1,21 @@ +import { Aside } from '@astrojs/starlight/components' + +export const sectionTitle = 'Choosing a HubSpot app type' + +HubSpot has three app shapes. The shape you choose determines which OAuth flow, scope format, and Scalekit configuration apply. + +| App type | OAuth redirect | Scope format | Use with Scalekit | +| --- | --- | --- | --- | +| Public app | Supported | Modern (`crm.objects.contacts.read`) | Recommended | +| Private app | Not supported | N/A — static API token only | Not supported | +| Legacy / developer-account app | Supported | Bare strings (`contacts`, `automation`) | Supported — enter bare strings in **Permissions** | + +**Public apps** are the standard choice for production integrations. They support the OAuth redirect flow that Scalekit manages, and they use the modern dotted scope format. + +**Private apps** issue static API tokens and have no OAuth redirect endpoint. Scalekit's HubSpot connector requires an OAuth flow, so Private apps are not compatible. + +**Legacy apps** (older apps created in HubSpot developer test accounts before the current console) still support OAuth but use an older scope vocabulary. If you already have a legacy app, you can connect it — you just need to enter the older bare scope strings exactly as HubSpot lists them in that app's **Auth** > **Scopes** page. + + diff --git a/src/components/templates/agent-connectors/_section-before-tool-list-googledwd-common-workflows.mdx b/src/components/templates/agent-connectors/_section-before-tool-list-googledwd-common-workflows.mdx index 78800cb67..859f1c34b 100644 --- a/src/components/templates/agent-connectors/_section-before-tool-list-googledwd-common-workflows.mdx +++ b/src/components/templates/agent-connectors/_section-before-tool-list-googledwd-common-workflows.mdx @@ -1,4 +1,4 @@ -export const sectionTitle = 'Common workflows' +export const sectionTitle = 'Execute tools' import { Tabs, TabItem } from '@astrojs/starlight/components' diff --git a/src/components/templates/agent-connectors/_section-before-tool-list-hubspot-optional-scopes.mdx b/src/components/templates/agent-connectors/_section-before-tool-list-hubspot-optional-scopes.mdx new file mode 100644 index 000000000..0ae1af050 --- /dev/null +++ b/src/components/templates/agent-connectors/_section-before-tool-list-hubspot-optional-scopes.mdx @@ -0,0 +1,53 @@ +import { Aside } from '@astrojs/starlight/components' + +export const sectionTitle = 'Required and optional scopes' + +HubSpot's OAuth connection requires one scope and supports up to 23 optional scopes. Grant only the scopes your tools actually need — a smaller scope set means a simpler consent screen and a faster app review for public listings. + +### Required scope + +`oauth` — included automatically on every HubSpot connection. You do not need to add it manually. + +### Optional scopes + +Add scopes that match the tools you plan to call. Common choices: + +| Scope | Enables | +| --- | --- | +| `crm.objects.contacts.read` | Read contacts | +| `crm.objects.contacts.write` | Create and update contacts | +| `crm.objects.companies.read` | Read companies | +| `crm.objects.companies.write` | Create and update companies | +| `crm.objects.deals.read` | Read deals | +| `crm.objects.deals.write` | Create and update deals | +| `crm.objects.line_items.read` | Read line items | +| `crm.objects.line_items.write` | Create and update line items | +| `crm.objects.quotes.read` | Read quotes | +| `crm.lists.read` | Read contact lists | +| `crm.lists.write` | Create and manage contact lists | +| `tickets` | Read and write support tickets | +| `forms` | Read forms and form submissions | +| `automation` | Read and trigger workflows and engagements | +| `e-commerce` | Products and orders | + +See HubSpot's [scope reference](https://developers.hubspot.com/docs/api/working-with-oauth#scopes) for the full list. + +### Configure optional scopes in your HubSpot app + +In your HubSpot app, go to **Auth** > **Auth settings** > **Scopes**. You'll see three categories: **Required scopes** (always requested), **Conditionally required scopes**, and **Optional scopes** (requested only when the user's account has access to them). + +![HubSpot Scopes page showing Required, Conditionally required, and Optional scopes sections](@/assets/docs/agent-connectors/hubspot/optional-scopes.png) + +Click **Add new scope** and select the optional scopes your app needs. Optional scopes let users without access to a feature still install your app — HubSpot simply skips those scopes at consent time. + +### Enable the same optional scopes in Scalekit + +![Selecting optional scopes in Scalekit](@/assets/docs/agent-connectors/hubspot/add-scopes.gif) + +1. Open the connection in **AgentKit** > **Connections**. +2. In the **Permissions** field, enter the scopes you need, space-separated. Example for a read-only CRM flow: `crm.objects.contacts.read crm.objects.companies.read crm.objects.deals.read`. +3. Make sure the scope set here matches exactly what you've configured in your HubSpot app. A mismatch causes an `invalid_scope` error when the user authorizes. + + diff --git a/src/components/templates/agent-connectors/_setup-hubspot.mdx b/src/components/templates/agent-connectors/_setup-hubspot.mdx index 48a4c5317..010c0a008 100644 --- a/src/components/templates/agent-connectors/_setup-hubspot.mdx +++ b/src/components/templates/agent-connectors/_setup-hubspot.mdx @@ -9,13 +9,13 @@ Register your Scalekit environment with the HubSpot connector so Scalekit handle ![Copy redirect URI from Scalekit dashboard](@/assets/docs/agent-connectors/hubspot/use-own-credentials-redirect-uri.png) - - Log in to your [HubSpot developer dashboard](https://developers.hubspot.com/), click **Manage apps**, click **Create app**, and select **Public app**. Do not select **Private app**; Private Apps use static API tokens and do not support OAuth redirect flows, so they do not show the Redirect URL field Scalekit needs. If you already have a HubSpot Public App, open that app instead. + - Log in to your [HubSpot developer dashboard](https://developers.hubspot.com/), click **Manage apps**, click **Create app**, and select **Public app**. If you already have an existing HubSpot app, open that app instead — see the **Choosing a HubSpot app type** section above for guidance on Public, Private, and legacy apps. - Go to **Auth** > **Auth settings** > **Redirect URL**, paste the redirect URI from Scalekit, and click **Save**. ![Adding redirect URL to HubSpot](@/assets/docs/agent-connectors/hubspot/add-redirect-url.png) - - Under **Auth** > **Auth settings** > **Scopes**, select the required scopes for your application. The scopes you select here must match exactly what you configure in Scalekit. For a read-only CRM enrichment flow that looks up contacts, companies, and deals, use: + - Under **Auth** > **Auth settings** > **Scopes**, select the scopes your application needs. The scopes you select here must match exactly what you configure in Scalekit. For a read-only CRM enrichment flow, start with: ```text crm.objects.contacts.read @@ -23,6 +23,8 @@ Register your Scalekit environment with the HubSpot connector so Scalekit handle crm.objects.deals.read ``` + These assume a modern Public app with dotted scope names. For legacy apps or the full scope reference, see the **Required and optional scopes** section on this page. + 2. ### Get client credentials - In your HubSpot app, go to **Auth** > **Auth settings**. @@ -36,7 +38,7 @@ Register your Scalekit environment with the HubSpot connector so Scalekit handle - Enter your credentials: - **Client ID** (from your HubSpot app) - **Client Secret** (from your HubSpot app) - - **Permissions** (OAuth scope strings such as `crm.objects.contacts.read`, entered exactly as configured in the HubSpot app) + - **Permissions** (OAuth scope strings such as `crm.objects.contacts.read`, entered exactly as configured in the HubSpot app). For a full list of available scopes and guidance on optional scopes, see the **Required and optional scopes** section on this page. ![Add credentials in Scalekit dashboard](@/assets/docs/agent-connectors/hubspot/add-credentials.png) diff --git a/src/components/templates/agent-connectors/index.ts b/src/components/templates/agent-connectors/index.ts index 53f7deee9..79222f115 100644 --- a/src/components/templates/agent-connectors/index.ts +++ b/src/components/templates/agent-connectors/index.ts @@ -25,13 +25,12 @@ export { default as SetupDiscordSection } from './_setup-discord.mdx' export { default as SetupDropboxSection } from './_setup-dropbox.mdx' export { default as SetupExaSection } from './_setup-exa.mdx' export { default as SetupFellowaimcpSection } from './_setup-fellowaimcp.mdx' -export { default as SetupFirecrawlmcpSection } from './_setup-firecrawlmcp.mdx' export { default as SetupFigmaSection } from './_setup-figma.mdx' +export { default as SetupFirecrawlmcpSection } from './_setup-firecrawlmcp.mdx' export { default as SetupGithubSection } from './_setup-github.mdx' export { default as SetupGitlabSection } from './_setup-gitlab.mdx' export { default as SetupGmailSection } from './_setup-gmail.mdx' export { default as SetupGongSection } from './_setup-gong.mdx' -export { default as SetupGrainmcpSection } from './_setup-grainmcp.mdx' export { default as SetupGoogleAdsSection } from './_setup-google-ads.mdx' export { default as SetupGoogleDocsSection } from './_setup-google-docs.mdx' export { default as SetupGoogleDriveSection } from './_setup-google-drive.mdx' @@ -41,6 +40,7 @@ export { default as SetupGoogleSheetsSection } from './_setup-google-sheets.mdx' export { default as SetupGooglecalendarSection } from './_setup-googlecalendar.mdx' export { default as SetupGoogledwdSection } from './_setup-googledwd.mdx' export { default as SetupGoogleslidesSection } from './_setup-googleslides.mdx' +export { default as SetupGrainmcpSection } from './_setup-grainmcp.mdx' export { default as SetupHarvestapiSection } from './_setup-harvestapi.mdx' export { default as SetupHeyreachSection } from './_setup-heyreach.mdx' export { default as SetupHubspotSection } from './_setup-hubspot.mdx' @@ -80,6 +80,7 @@ export { default as SetupZendeskSection } from './_setup-zendesk.mdx' export { default as SetupZoomSection } from './_setup-zoom.mdx' export { default as ConnectedAccountBigqueryserviceaccountSection } from './_connected-account-bigqueryserviceaccount.mdx' export { default as SectionAfterAuthenticationGoogledwdAuth } from './_section-after-authentication-googledwd-auth.mdx' +export { default as SectionAfterAuthenticationHubspotAppTypes } from './_section-after-authentication-hubspot-app-types.mdx' export { default as SectionAfterSetupAdobemarketingagentmcpCommonWorkflows } from './_section-after-setup-adobemarketingagentmcp-common-workflows.mdx' export { default as SectionAfterSetupAdzvisermcpCommonWorkflows } from './_section-after-setup-adzvisermcp-common-workflows.mdx' export { default as SectionAfterSetupAirtableCommonWorkflows } from './_section-after-setup-airtable-common-workflows.mdx' @@ -111,8 +112,8 @@ export { default as SectionAfterSetupDropboxCommonWorkflows } from './_section-a export { default as SectionAfterSetupExaCommonWorkflows } from './_section-after-setup-exa-common-workflows.mdx' export { default as SectionAfterSetupFathomCommonWorkflows } from './_section-after-setup-fathom-common-workflows.mdx' export { default as SectionAfterSetupFellowaimcpCommonWorkflows } from './_section-after-setup-fellowaimcp-common-workflows.mdx' -export { default as SectionAfterSetupFirecrawlmcpCommonWorkflows } from './_section-after-setup-firecrawlmcp-common-workflows.mdx' export { default as SectionAfterSetupFigmaCommonWorkflows } from './_section-after-setup-figma-common-workflows.mdx' +export { default as SectionAfterSetupFirecrawlmcpCommonWorkflows } from './_section-after-setup-firecrawlmcp-common-workflows.mdx' export { default as SectionAfterSetupFreshdeskCommonWorkflows } from './_section-after-setup-freshdesk-common-workflows.mdx' export { default as SectionAfterSetupGithubCommonWorkflows } from './_section-after-setup-github-common-workflows.mdx' export { default as SectionAfterSetupGmailCommonWorkflows } from './_section-after-setup-gmail-common-workflows.mdx' @@ -127,8 +128,8 @@ export { default as SectionAfterSetupGoogleformsCommonWorkflows } from './_secti export { default as SectionAfterSetupGooglemeetCommonWorkflows } from './_section-after-setup-googlemeet-common-workflows.mdx' export { default as SectionAfterSetupGooglesheetsCommonWorkflows } from './_section-after-setup-googlesheets-common-workflows.mdx' export { default as SectionAfterSetupGoogleslidesCommonWorkflows } from './_section-after-setup-googleslides-common-workflows.mdx' -export { default as SectionAfterSetupGranolamcpCommonWorkflows } from './_section-after-setup-granolamcp-common-workflows.mdx' export { default as SectionAfterSetupGrainmcpCommonWorkflows } from './_section-after-setup-grainmcp-common-workflows.mdx' +export { default as SectionAfterSetupGranolamcpCommonWorkflows } from './_section-after-setup-granolamcp-common-workflows.mdx' export { default as SectionAfterSetupHarvestapiCommonWorkflows } from './_section-after-setup-harvestapi-common-workflows.mdx' export { default as SectionAfterSetupHeyreachCommonWorkflows } from './_section-after-setup-heyreach-common-workflows.mdx' export { default as SectionAfterSetupHubspotCommonWorkflows } from './_section-after-setup-hubspot-common-workflows.mdx' @@ -169,6 +170,7 @@ export { default as SectionAfterSetupZoomCommonWorkflows } from './_section-afte export { default as SectionAfterToolListSalesforceMetadataApiSoap } from './_section-after-tool-list-salesforce-metadata-api-soap.mdx' export { default as SectionBeforeToolListDatadogResourceIds } from './_section-before-tool-list-datadog-resource-ids.mdx' export { default as SectionBeforeToolListGoogledwdCommonWorkflows } from './_section-before-tool-list-googledwd-common-workflows.mdx' +export { default as SectionBeforeToolListHubspotOptionalScopes } from './_section-before-tool-list-hubspot-optional-scopes.mdx' export { default as SectionBeforeToolListHubspotResourceIds } from './_section-before-tool-list-hubspot-resource-ids.mdx' export { default as SectionBeforeToolListLinearResourceIds } from './_section-before-tool-list-linear-resource-ids.mdx' export { default as SectionBeforeToolListMondayResourceIds } from './_section-before-tool-list-monday-resource-ids.mdx' diff --git a/src/content/docs/agentkit/connectors/adzvisermcp.mdx b/src/content/docs/agentkit/connectors/adzvisermcp.mdx index 8b3887965..46bb175b3 100644 --- a/src/content/docs/agentkit/connectors/adzvisermcp.mdx +++ b/src/content/docs/agentkit/connectors/adzvisermcp.mdx @@ -23,7 +23,9 @@ import ToolList from '@/components/ToolList.astro' import { tools } from '@/data/agent-connectors/adzvisermcp' import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' import { AgentKitCredentials } from '@components/templates' +import { SetupAdzvisermcpSection } from '@components/templates' import { QuickstartGenericOauthSection } from '@components/templates' +import { SectionAfterSetupAdzvisermcpCommonWorkflows } from '@components/templates' @@ -48,7 +50,18 @@ import { QuickstartGenericOauthSection } from '@components/templates' -3. ### Authorize and make your first call +3. ### Set up the connector + + Register your Adzviser MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment. + +
+ Dashboard setup steps + + + +
+ +4. ### Authorize and make your first call @@ -61,6 +74,10 @@ Connect this agent connector to let your agent: - **Data retrieve reporting** — Retrieve real-time reporting data from marketing channels like Google Ads, Facebook Ads and Google Analytics - **List workspace, metrics fb page, metrics and breakdowns zoho** — Retrieve a list of workspaces that have been created by the user and their data sources, such as Google Ads, Facebook Ads accounts connected with each +## Common workflows + + + ## Tool list Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. diff --git a/src/content/docs/agentkit/connectors/commonroommcp.mdx b/src/content/docs/agentkit/connectors/commonroommcp.mdx index 2f16065b2..5287cd418 100644 --- a/src/content/docs/agentkit/connectors/commonroommcp.mdx +++ b/src/content/docs/agentkit/connectors/commonroommcp.mdx @@ -23,7 +23,9 @@ import ToolList from '@/components/ToolList.astro' import { tools } from '@/data/agent-connectors/commonroommcp' import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' import { AgentKitCredentials } from '@components/templates' +import { SetupCommonroommcpSection } from '@components/templates' import { QuickstartGenericOauthSection } from '@components/templates' +import { SectionAfterSetupCommonroommcpCommonWorkflows } from '@components/templates' @@ -48,7 +50,18 @@ import { QuickstartGenericOauthSection } from '@components/templates' -3. ### Authorize and make your first call +3. ### Set up the connector + + Register your Commonroom MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment. + +
+ Dashboard setup steps + + + +
+ +4. ### Authorize and make your first call @@ -64,6 +77,10 @@ Connect this agent connector to let your agent: - **Get commonroom** — Retrieve the catalog of available object types, their properties, and allowed sort fields in Common Room - **Create commonroom** — Create a new object in Common Room — contact, organization, activity, or custom object type +## Common workflows + + + ## Tool list Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. diff --git a/src/content/docs/agentkit/connectors/customeriomcp.mdx b/src/content/docs/agentkit/connectors/customeriomcp.mdx index b7c94ca22..6a4f9801e 100644 --- a/src/content/docs/agentkit/connectors/customeriomcp.mdx +++ b/src/content/docs/agentkit/connectors/customeriomcp.mdx @@ -23,7 +23,9 @@ import ToolList from '@/components/ToolList.astro' import { tools } from '@/data/agent-connectors/customeriomcp' import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' import { AgentKitCredentials } from '@components/templates' +import { SetupCustomeriomcpSection } from '@components/templates' import { QuickstartGenericOauthSection } from '@components/templates' +import { SectionAfterSetupCustomeriomcpCommonWorkflows } from '@components/templates' @@ -48,7 +50,18 @@ import { QuickstartGenericOauthSection } from '@components/templates' -3. ### Authorize and make your first call +3. ### Set up the connector + + Register your Customer.io MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment. + +
+ Dashboard setup steps + + + +
+ +4. ### Authorize and make your first call @@ -65,6 +78,10 @@ Connect this agent connector to let your agent: - **Prime cio** — Print LLM-ready instructions for using the Customer.io API - **Delete cio** — Delete a resource via the Customer.io API (DELETE only) +## Common workflows + + + ## Tool list Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. diff --git a/src/content/docs/agentkit/connectors/fellowaimcp.mdx b/src/content/docs/agentkit/connectors/fellowaimcp.mdx index 3c8f81956..ae0561d79 100644 --- a/src/content/docs/agentkit/connectors/fellowaimcp.mdx +++ b/src/content/docs/agentkit/connectors/fellowaimcp.mdx @@ -23,7 +23,9 @@ import ToolList from '@/components/ToolList.astro' import { tools } from '@/data/agent-connectors/fellowaimcp' import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' import { AgentKitCredentials } from '@components/templates' +import { SetupFellowaimcpSection } from '@components/templates' import { QuickstartGenericOauthSection } from '@components/templates' +import { SectionAfterSetupFellowaimcpCommonWorkflows } from '@components/templates' @@ -48,7 +50,18 @@ import { QuickstartGenericOauthSection } from '@components/templates' -3. ### Authorize and make your first call +3. ### Set up the connector + + Register your FellowAI MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment. + +
+ Dashboard setup steps + + + +
+ +4. ### Authorize and make your first call @@ -62,6 +75,10 @@ Connect this agent connector to let your agent: - **List channels** — List all available channels in the workspace, optionally filtered by name or type - **Get meeting transcript, meeting summary, meeting participants** — Retrieve the transcript of a meeting +## Common workflows + + + ## Tool list Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. diff --git a/src/content/docs/agentkit/connectors/firecrawlmcp.mdx b/src/content/docs/agentkit/connectors/firecrawlmcp.mdx index 5d567b5ae..7c9164116 100644 --- a/src/content/docs/agentkit/connectors/firecrawlmcp.mdx +++ b/src/content/docs/agentkit/connectors/firecrawlmcp.mdx @@ -1,14 +1,13 @@ --- title: 'Firecrawl MCP connector' tableOfContents: true -description: 'Connect to Firecrawl MCP to scrape, crawl, search, extract structured data, and monitor websites using AI-powered web scraping.' +description: 'Connect to Firecrawl MCP. Scrape, crawl, search, extract structured data, and monitor websites using Firecrawl''s AI-powered web scraping API.' sidebar: label: 'Firecrawl MCP' overviewTitle: 'Quickstart' connectorIcon: https://cdn.scalekit.com/sk-connect/assets/provider-icons/firecrawl.svg -connectorAuthType: API Key -connectorCategories: [ai, developer-tools, search] -tags: [agentkit, connector, firecrawl, scraping, crawling, search, mcp] +connectorAuthType: Bearer Token +connectorCategories: [AI, Developer Tools, Search] head: - tag: style content: | @@ -53,7 +52,7 @@ import { SectionAfterSetupFirecrawlmcpCommonWorkflows } from '@components/templa 3. ### Set up the connector - Register your Firecrawl API key with Scalekit so it handles authentication for every tool call. You do this once per environment. + Register your Firecrawl MCP credentials with Scalekit so it can authenticate requests on your behalf. You do this once per environment.
Dashboard setup steps @@ -64,36 +63,7 @@ import { SectionAfterSetupFirecrawlmcpCommonWorkflows } from '@components/templa 4. ### Make your first call - - - ```typescript - const result = await scalekit.actions.executeTool({ - connectionName: 'firecrawlmcp', - identifier: 'user_123', - toolName: 'firecrawlmcp_firecrawl_scrape', - toolInput: { - url: 'https://firecrawl.dev', - onlyMainContent: true, - }, - }); - console.log(result.data); - ``` - - - ```python - result = scalekit_client.actions.execute_tool( - connection_name="firecrawlmcp", - identifier="user_123", - tool_name="firecrawlmcp_firecrawl_scrape", - tool_input={ - "url": "https://firecrawl.dev", - "onlyMainContent": True, - }, - ) - print(result.data) - ``` - - + @@ -101,11 +71,12 @@ import { SectionAfterSetupFirecrawlmcpCommonWorkflows } from '@components/templa Connect this agent connector to let your agent: -- **Scrape any URL** — extract clean markdown, HTML, screenshots, or structured JSON from any webpage, with JavaScript rendering support -- **Search the web** — run live web searches and get scraped content from the top results -- **Crawl entire sites** — follow links up to a configurable depth and extract content from every discovered page -- **Extract structured data** — use a natural-language prompt and optional JSON Schema to pull specific fields from one or more pages -- **Monitor for changes** — set up scheduled monitors that detect when pages are added, changed, or removed +- **Search firecrawl** — Send structured feedback on a previous search result to help improve future results +- **Scrape firecrawl** — Scrape a single URL and return its content in one or more formats (markdown, JSON, screenshot, etc.) +- **Update firecrawl monitor** — Update monitor settings such as name, status, schedule, or scrape options +- **Run firecrawl monitor** — Trigger an immediate check for a monitor outside its normal schedule +- **List firecrawl monitor, firecrawl browser** — List all monitors configured for the authenticated account, with pagination +- **Get firecrawl monitor** — Retrieve the configuration and status of a single monitor by its ID ## Common workflows diff --git a/src/content/docs/agentkit/connectors/googledwd.mdx b/src/content/docs/agentkit/connectors/googledwd.mdx index 9d2760a1a..893ca4e11 100644 --- a/src/content/docs/agentkit/connectors/googledwd.mdx +++ b/src/content/docs/agentkit/connectors/googledwd.mdx @@ -88,7 +88,7 @@ Connect this agent connector to let your agent: -## Common workflows +## Execute tools diff --git a/src/content/docs/agentkit/connectors/grainmcp.mdx b/src/content/docs/agentkit/connectors/grainmcp.mdx index 416b40fe0..45903eb2f 100644 --- a/src/content/docs/agentkit/connectors/grainmcp.mdx +++ b/src/content/docs/agentkit/connectors/grainmcp.mdx @@ -23,7 +23,9 @@ import ToolList from '@/components/ToolList.astro' import { tools } from '@/data/agent-connectors/grainmcp' import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' import { AgentKitCredentials } from '@components/templates' +import { SetupGrainmcpSection } from '@components/templates' import { QuickstartGenericOauthSection } from '@components/templates' +import { SectionAfterSetupGrainmcpCommonWorkflows } from '@components/templates' @@ -48,7 +50,18 @@ import { QuickstartGenericOauthSection } from '@components/templates' -3. ### Authorize and make your first call +3. ### Set up the connector + + Register your Grain MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment. + +
+ Dashboard setup steps + + + +
+ +4. ### Authorize and make your first call @@ -66,6 +79,10 @@ access to - **List workspace users, stories, projects** — Get information about all the users in the logged-in Grain user's workspace - **Fetch user recording notes, story, project** — Fetches the current user's private notes for a single Grain meeting by ID +## Common workflows + + + ## Tool list Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. diff --git a/src/content/docs/agentkit/connectors/gustomcp.mdx b/src/content/docs/agentkit/connectors/gustomcp.mdx new file mode 100644 index 000000000..aaefca7b5 --- /dev/null +++ b/src/content/docs/agentkit/connectors/gustomcp.mdx @@ -0,0 +1,68 @@ +--- +title: 'Gusto MCP connector' +tableOfContents: true +description: 'Connect to Gusto MCP. Manage employees, contractors, payroll, departments, and company data from your AI workflows.' +sidebar: + label: 'Gusto MCP' +overviewTitle: 'Quickstart' +connectorIcon: https://cdn.scalekit.com/sk-connect/assets/provider-icons/gusto.svg +connectorAuthType: OAuth 2.1/DCR +connectorCategories: [Accounting & Finance, Productivity] +head: + - tag: style + content: | + .sl-markdown-content h2 { + font-size: var(--sl-text-xl); + } + .sl-markdown-content h3 { + font-size: var(--sl-text-lg); + } +--- + +import ToolList from '@/components/ToolList.astro' +import { tools } from '@/data/agent-connectors/gustomcp' +import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' +import { AgentKitCredentials } from '@components/templates' +import { QuickstartGenericOauthSection } from '@components/templates' + + + +1. ### Install the SDK + + + + ```bash frame="terminal" + npm install @scalekit-sdk/node + ``` + + + ```bash frame="terminal" + pip install scalekit + ``` + + + + Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/) + +2. ### Set your credentials + + + +3. ### Authorize and make your first call + + + + + +## What you can do + +Connect this agent connector to let your agent: + +- **List time records, payrolls, payroll blockers** — List time records for the company over a pay period +- **Get token info, time sheet, payroll** — Return information about the current API token, including granted scopes and accessible resources + +## Tool list + +Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. + + diff --git a/src/content/docs/agentkit/connectors/hubspot.mdx b/src/content/docs/agentkit/connectors/hubspot.mdx index 4bd8f66c7..c19660d4e 100644 --- a/src/content/docs/agentkit/connectors/hubspot.mdx +++ b/src/content/docs/agentkit/connectors/hubspot.mdx @@ -25,7 +25,9 @@ import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' import { AgentKitCredentials } from '@components/templates' import { SetupHubspotSection } from '@components/templates' import { QuickstartHubspotSection } from '@components/templates' +import { SectionAfterAuthenticationHubspotAppTypes } from '@components/templates' import { SectionAfterSetupHubspotCommonWorkflows } from '@components/templates' +import { SectionBeforeToolListHubspotOptionalScopes } from '@components/templates' import { SectionBeforeToolListHubspotResourceIds } from '@components/templates' @@ -79,10 +81,18 @@ Connect this agent connector to let your agent: - **Log engagements** — record calls, meetings, notes, and emails against any CRM record - **Search, associate, and extend** — full-text search across all CRM objects, batch-manage associations, list owners, discover properties, and work with custom objects +## Choosing a HubSpot app type + + + ## Common workflows +## Required and optional scopes + + + ## Getting resource IDs diff --git a/src/content/docs/agentkit/connectors/jotformmcp.mdx b/src/content/docs/agentkit/connectors/jotformmcp.mdx new file mode 100644 index 000000000..f01cdaeaa --- /dev/null +++ b/src/content/docs/agentkit/connectors/jotformmcp.mdx @@ -0,0 +1,72 @@ +--- +title: 'Jotform MCP connector' +tableOfContents: true +description: 'Connect to Jotform MCP. Create and edit forms, retrieve submissions, assign forms, and search assets from your AI workflows.' +sidebar: + label: 'Jotform MCP' +overviewTitle: 'Quickstart' +connectorIcon: https://cdn.scalekit.com/sk-connect/assets/provider-icons/jotform.svg +connectorAuthType: OAuth 2.1/DCR +connectorCategories: [Productivity, Automation] +head: + - tag: style + content: | + .sl-markdown-content h2 { + font-size: var(--sl-text-xl); + } + .sl-markdown-content h3 { + font-size: var(--sl-text-lg); + } +--- + +import ToolList from '@/components/ToolList.astro' +import { tools } from '@/data/agent-connectors/jotformmcp' +import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' +import { AgentKitCredentials } from '@components/templates' +import { QuickstartGenericOauthSection } from '@components/templates' + + + +1. ### Install the SDK + + + + ```bash frame="terminal" + npm install @scalekit-sdk/node + ``` + + + ```bash frame="terminal" + pip install scalekit + ``` + + + + Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/) + +2. ### Set your credentials + + + +3. ### Authorize and make your first call + + + + + +## What you can do + +Connect this agent connector to let your agent: + +- **Search records** — Search Jotform assets by query with optional filters, ordering, and limit +- **Get submissions** — List submission IDs for a form with optional filters +- **Fetch records** — Fetch metadata and information for a Jotform form by its ID or URL +- **Form edit, assign** — Edit an existing form using a natural-language instruction +- **Create form** — Create a new Jotform form based on a natural-language description +- **Submissions analyze** — Perform AI-powered analysis on one or more forms' submissions using a natural-language query + +## Tool list + +Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. + + diff --git a/src/content/docs/agentkit/connectors/lucidmcp.mdx b/src/content/docs/agentkit/connectors/lucidmcp.mdx new file mode 100644 index 000000000..8f82c74e9 --- /dev/null +++ b/src/content/docs/agentkit/connectors/lucidmcp.mdx @@ -0,0 +1,72 @@ +--- +title: 'Lucid MCP connector' +tableOfContents: true +description: 'Connect to Lucid. Create and edit Lucidchart diagrams, Lucidspark boards, and Lucidscale visualizations from your AI workflows.' +sidebar: + label: 'Lucid MCP' +overviewTitle: 'Quickstart' +connectorIcon: https://cdn.scalekit.com/sk-connect/assets/provider-icons/lucid.svg +connectorAuthType: OAuth 2.1/DCR +connectorCategories: [Design, Productivity, Collaboration] +head: + - tag: style + content: | + .sl-markdown-content h2 { + font-size: var(--sl-text-xl); + } + .sl-markdown-content h3 { + font-size: var(--sl-text-lg); + } +--- + +import ToolList from '@/components/ToolList.astro' +import { tools } from '@/data/agent-connectors/lucidmcp' +import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' +import { AgentKitCredentials } from '@components/templates' +import { QuickstartGenericOauthSection } from '@components/templates' + + + +1. ### Install the SDK + + + + ```bash frame="terminal" + npm install @scalekit-sdk/node + ``` + + + ```bash frame="terminal" + pip install scalekit + ``` + + + + Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/) + +2. ### Set your credentials + + + +3. ### Authorize and make your first call + + + + + +## What you can do + +Connect this agent connector to let your agent: + +- **Collaborators share document with** — Share a Lucid document with collaborators by granting them access via email +- **Search records** — Search for Lucid documents by keyword with optional filters for product type and date range +- **Fetch lucid** — Fetch the source image attached to a specific item in a Lucid document +- **Png lucid export document as** — Export a page of a Lucid document as a PNG image +- **Item lucid edit** — Edit an existing block or line in a Lucid document — update position, size, text, or style +- **Delete lucid** — Delete one or more blocks or lines from a Lucid document by item ID + +## Tool list + +Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. + + diff --git a/src/content/docs/agentkit/connectors/makemcp.mdx b/src/content/docs/agentkit/connectors/makemcp.mdx new file mode 100644 index 000000000..263b55d7f --- /dev/null +++ b/src/content/docs/agentkit/connectors/makemcp.mdx @@ -0,0 +1,72 @@ +--- +title: 'Make MCP connector' +tableOfContents: true +description: 'Connect to Make (formerly Integromat). Build, run, and manage automation scenarios, data stores, webhooks, and connections across thousands of apps from...' +sidebar: + label: 'Make MCP' +overviewTitle: 'Quickstart' +connectorIcon: https://cdn.scalekit.com/sk-connect/assets/provider-icons/make.svg +connectorAuthType: OAuth 2.1/DCR +connectorCategories: [Automation, Productivity, Developer Tools] +head: + - tag: style + content: | + .sl-markdown-content h2 { + font-size: var(--sl-text-xl); + } + .sl-markdown-content h3 { + font-size: var(--sl-text-lg); + } +--- + +import ToolList from '@/components/ToolList.astro' +import { tools } from '@/data/agent-connectors/makemcp' +import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' +import { AgentKitCredentials } from '@components/templates' +import { QuickstartGenericOauthSection } from '@components/templates' + + + +1. ### Install the SDK + + + + ```bash frame="terminal" + npm install @scalekit-sdk/node + ``` + + + ```bash frame="terminal" + pip install scalekit + ``` + + + + Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/) + +2. ### Set your credentials + + + +3. ### Authorize and make your first call + + + + + +## What you can do + +Connect this agent connector to let your agent: + +- **Schema validate scheduling, validate blueprint** — Validates the Scheduling of the Scenario against the Schema +- **Configuration validate module, validate hook, validate epoch** — This tool validates that parameters and mapper collection are correctly configured for a given module in a given app +- **Me users** — Get current user (users): Get details of the current user +- **Update tools, scenarios, organizations** — This tool updates an existing Tool's details based on provided parameters +- **Get tools, teams, scenarios** — Retrieves details of a specific Tool by its ID +- **Create tools, teams, scenarios** — This tool creates a new Tool in the system based on provided parameters + +## Tool list + +Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. + + diff --git a/src/content/docs/agentkit/connectors/supermetricsmcp.mdx b/src/content/docs/agentkit/connectors/supermetricsmcp.mdx index 36ddd320c..fce6376f1 100644 --- a/src/content/docs/agentkit/connectors/supermetricsmcp.mdx +++ b/src/content/docs/agentkit/connectors/supermetricsmcp.mdx @@ -23,7 +23,9 @@ import ToolList from '@/components/ToolList.astro' import { tools } from '@/data/agent-connectors/supermetricsmcp' import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' import { AgentKitCredentials } from '@components/templates' +import { SetupSupermetricsmcpSection } from '@components/templates' import { QuickstartGenericOauthSection } from '@components/templates' +import { SectionAfterSetupSupermetricsmcpCommonWorkflows } from '@components/templates' @@ -48,7 +50,18 @@ import { QuickstartGenericOauthSection } from '@components/templates' -3. ### Authorize and make your first call +3. ### Set up the connector + + Register your Supermetrics MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment. + +
+ Dashboard setup steps + + + +
+ +4. ### Authorize and make your first call @@ -65,6 +78,10 @@ Connect this agent connector to let your agent: - **Query data** — Query marketing analytics data from any connected data source, with optional date ranges, field selection, and filters - **Supermetrics contact** — Send product feedback, create a support ticket, or submit a sales enquiry to Supermetrics +## Common workflows + + + ## Tool list Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. diff --git a/src/content/docs/agentkit/connectors/tavilymcp.mdx b/src/content/docs/agentkit/connectors/tavilymcp.mdx new file mode 100644 index 000000000..25534edb2 --- /dev/null +++ b/src/content/docs/agentkit/connectors/tavilymcp.mdx @@ -0,0 +1,71 @@ +--- +title: 'Tavily MCP connector' +tableOfContents: true +description: 'Connect to Tavily MCP. Search the web, crawl websites, extract content, map site structure, and run deep research using Tavily''s AI-powered search API.' +sidebar: + label: 'Tavily MCP' +overviewTitle: 'Quickstart' +connectorIcon: https://cdn.scalekit.com/sk-connect/assets/provider-icons/tavily.svg +connectorAuthType: OAuth 2.1/DCR +connectorCategories: [Search, AI, Developer Tools] +head: + - tag: style + content: | + .sl-markdown-content h2 { + font-size: var(--sl-text-xl); + } + .sl-markdown-content h3 { + font-size: var(--sl-text-lg); + } +--- + +import ToolList from '@/components/ToolList.astro' +import { tools } from '@/data/agent-connectors/tavilymcp' +import { Steps, Tabs, TabItem } from '@astrojs/starlight/components' +import { AgentKitCredentials } from '@components/templates' +import { QuickstartGenericOauthSection } from '@components/templates' + + + +1. ### Install the SDK + + + + ```bash frame="terminal" + npm install @scalekit-sdk/node + ``` + + + ```bash frame="terminal" + pip install scalekit + ``` + + + + Full SDK reference: [Node.js](/agentkit/sdks/node/) | [Python](/agentkit/sdks/python/) + +2. ### Set your credentials + + + +3. ### Authorize and make your first call + + + + + +## What you can do + +Connect this agent connector to let your agent: + +- **Search tavily** — Search the web for current information and return snippets with source URLs +- **Research tavily** — Run comprehensive multi-source research on a topic or question +- **Map tavily** — Map a website's URL structure starting from a base URL +- **Extract tavily** — Extract raw content from one or more URLs in markdown or plain text format +- **Crawl tavily** — Crawl a website from a starting URL and extract page content with configurable depth and breadth + +## Tool list + +Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first. + + diff --git a/src/data/agent-connectors/catalog.ts b/src/data/agent-connectors/catalog.ts index c74da4fa6..6871d3815 100644 --- a/src/data/agent-connectors/catalog.ts +++ b/src/data/agent-connectors/catalog.ts @@ -7,504 +7,534 @@ export interface ProviderMeta { } export const catalog: Record = { - 'adobemarketingagentmcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/adobe.svg", - authType: "OAuth 2.1/DCR", - categories: ["Marketing","Analytics","AI"], - }, - 'grainmcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/grain.svg", - authType: "OAuth 2.1/DCR", - categories: ["Transcription","Collaboration","AI"], - }, - 'leadiq': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/leadiq.svg", - authType: "API Key", - categories: ["CRM & Sales","Analytics"], - }, - 'adzvisermcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/adzviser.svg", - authType: "OAuth 2.1/DCR", - categories: ["Marketing","Analytics"], - }, - 'commonroommcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/commonroom.svg", - authType: "OAuth 2.1/DCR", - categories: ["Marketing","Analytics","CRM & Sales"], - }, - 'fellowaimcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/fellowai.svg", - authType: "OAuth 2.1/DCR", - categories: ["Productivity","Project Management"], - }, - 'supermetricsmcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/supermetrics.svg", - authType: "OAuth 2.1/DCR", - categories: ["Marketing","Analytics","CRM & Sales"], - }, - 'customeriomcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/customerio.svg", - authType: "OAuth 2.1/DCR", - categories: ["Marketing","Analytics","CRM & Sales"], - }, - 'zapiermcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/zapier.svg", - authType: "OAuth 2.1/DCR", - categories: ["Automation","Productivity","Developer Tools"], - }, - 'clickhouse': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/clickhouse.svg", - authType: "OAuth 2.1/DCR", - categories: ["Analytics","Developer Tools","Databases"], - }, - 'atlassianmcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/atlassian.svg", - authType: "OAuth 2.1/DCR", - categories: ["Project Management","Productivity","Collaboration"], - }, - 'ahrefsmcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/ahrefs.svg", - authType: "OAuth 2.1/DCR", - categories: ["Marketing","CRM & Sales"], - }, - 'clarifymcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/clarify.svg", - authType: "OAuth 2.1/DCR", - categories: ["CRM & Sales","Productivity","Analytics"], - }, - 'bitlymcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/bitly.svg", - authType: "OAuth 2.1/DCR", - categories: ["Marketing","CRM & Sales"], - }, - 'klaviyomcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/klaviyo.svg", - authType: "OAuth 2.1/DCR", - categories: ["Marketing","CRM & Sales"], - }, - 'googledwd': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google.svg", - authType: "Service Account (DWD)", - categories: ["Productivity","Communication"], - }, - 'xero': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/xero.svg", - authType: "OAuth 2.0", - categories: ["Accounting & Finance"], - }, - 'mailchimp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/mailchimp.svg", - authType: "OAuth 2.0", - categories: ["Marketing","Automation","Analytics"], - }, - 'datadog': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/datadog.svg", - authType: "API Key", - categories: ["Developer Tools","Monitoring"], - }, - 'quickbooks': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/Quickbooks.svg", - authType: "OAuth 2.0", - categories: ["Accounting & Finance"], - }, - 'tableau': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/tableau.svg", - authType: "API Key", - categories: ["Analytics","Productivity"], - }, - 'heyreach': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/heyreach.svg", - authType: "API Key", - categories: ["CRM & Sales"], - }, - 'posthogmcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/posthog-1.svg", - authType: "OAuth 2.1/DCR", - categories: ["Analytics"], - }, - 'box': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/box.svg", - authType: "OAuth 2.0", - categories: ["Productivity","Files & Documents"], - }, - 'bigqueryserviceaccount': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/bigquery.svg", - authType: "Service Account", - categories: ["Analytics","Databases"], - }, - 'close': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/close.svg", - authType: "OAuth 2.0", - categories: ["CRM & Sales","Communication"], - }, - 'miro': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/Miro.svg", - authType: "OAuth 2.0", - categories: ["Productivity","Collaboration","Design"], - }, - 'bitbucket': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/bitbucket.svg", - authType: "OAuth 2.0", - categories: ["Developer Tools","Collaboration"], - }, - 'dynamo': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/dynamo.svg", - authType: "Bearer Token", - categories: ["Accounting & Finance","CRM & Sales","Databases"], - }, - 'databricksworkspace': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/databricks-1.svg", - authType: "Service Principal (OAuth 2.0)", - categories: ["Analytics","Automation","Databases"], - }, - 'diarize': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/diarize.svg", - authType: "Bearer Token", - categories: ["Transcription","Media","Productivity","Analytics"], - }, - 'parallelaitaskmcp': { - iconUrl: "https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/parallel-ai.svg", - authType: "Bearer Token", - categories: ["Productivity","AI","Developer Tools"], - }, - 'calendly': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/calendly.svg", - authType: "OAuth 2.0", - categories: ["Productivity","Calendar"], - }, - 'apifymcp': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/apify.svg", - authType: "Bearer Token", - categories: ["AI","Automation","Developer Tools"], - }, - 'evertrace': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/evertrace.png", - authType: "Bearer Token", - categories: ["CRM & Sales"], - }, - 'figma': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/figma.svg", - authType: "OAuth 2.0", - categories: ["Design","Collaboration"], - }, - 'jiminny': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/jiminny.svg", - authType: "Bearer Token", - categories: ["CRM & Sales","AI","Automation","Transcription"], - }, - 'pagerduty': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/pagerduty.svg", - authType: "OAuth 2.0", - categories: ["Developer Tools","Monitoring"], - }, - 'vercel': { - iconUrl: "https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/vercel.svg", - authType: "OAuth 2.0", - categories: ["Developer Tools"], - }, - 'gitlab': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/gitlab.svg", - authType: "OAuth 2.0", - categories: ["Developer Tools","Collaboration"], - }, - 'pipedrive': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/pipedrive.svg", - authType: "OAuth 2.0", - categories: ["CRM & Sales"], - }, - 'linkedin': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/linkedin.svg", - authType: "OAuth 2.0", - categories: ["CRM & Sales"], - }, - 'outreach': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/outreach.png", - authType: "OAuth 2.0", - categories: ["CRM & Sales"], - }, - 'granolamcp': { - iconUrl: "https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/granola.svg", - authType: "OAuth 2.1/DCR", - categories: ["AI","Automation","Communication","Transcription"], - }, - 'twitter': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/X.svg", - authType: "Bearer Token", - categories: ["Communication","Marketing"], - }, - 'discord': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/discord.svg", - authType: "OAuth 2.0", - categories: ["Communication","Collaboration"], - }, - 'phantombuster': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/phantombuster.svg", - authType: "API Key", - categories: ["AI","Automation"], - }, - 'affinity': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/affinity.svg", - authType: "Bearer Token", - categories: ["CRM & Sales"], - }, - 'supadata': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/supadata.svg", - authType: "API Key", - categories: ["Analytics","Search"], - }, - 'granola': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/granola.svg", - authType: "Bearer Token", - categories: ["AI","Automation","Communication","Transcription"], - }, - 'brave': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/brave.svg", - authType: "API Key", - categories: ["Analytics","Search"], - }, - 'harvestapi': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/harvestapi.svg", - authType: "API Key", - categories: ["Marketing","Analytics"], - }, - 'exa': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/exa.svg", - authType: "API Key", - categories: ["Analytics","AI","Automation","Search"], - }, - 'snowflakekeyauth': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/snowflake.svg", - authType: "Bearer Token", - categories: ["Analytics","Databases"], - }, - 'attio': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/attio.svg", - authType: "OAuth 2.0", - categories: ["CRM & Sales"], - }, - 'apollo': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/apollo.svg", - authType: "OAuth 2.0", - categories: ["CRM & Sales"], - }, - 'vimeo': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/vimeo.svg", - authType: "OAuth 2.0", - categories: ["Media"], - }, - 'youtube': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/youtube.svg", - authType: "OAuth 2.0", - categories: ["Media","Marketing"], - }, - 'googleslides': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_slides.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'attention': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/attention.svg", - authType: "API Key", - categories: ["AI","Automation","CRM & Sales"], - }, - 'clari_copilot': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/clari.svg", - authType: "API Key", - categories: ["CRM & Sales","AI","Automation","Transcription"], - }, - 'chorus': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/chorus.svg", - authType: "Basic Auth", - categories: ["CRM & Sales","AI","Automation","Transcription"], - }, - 'google_ads': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_ads.png", - authType: "OAuth 2.0", - categories: ["Marketing","CRM & Sales"], - }, - 'servicenow': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/servicenow.svg", - authType: "OAuth 2.0", - categories: ["Customer Support","Communication"], - }, - 'zendesk': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/zendesk.svg", - authType: "API KEY", - categories: ["Customer Support","Communication"], - }, - 'googleforms': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_forms.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'microsoftword': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/word.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'microsoftexcel': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/excel.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents","Analytics"], - }, - 'onenote': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/onenote.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'snowflake': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/snowflake.svg", - authType: "OAuth 2.0", - categories: ["Analytics","Databases"], - }, - 'onedrive': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/onedrive.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'bigquery': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/bigquery.svg", - authType: "OAuth 2.0", - categories: ["Analytics","Databases"], - }, - 'airtable': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/airtable.svg", - authType: "OAuth 2.0", - categories: ["Project Management","Analytics"], - }, - 'clickup': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/clickup.svg", - authType: "OAuth 2.0", - categories: ["Project Management","Collaboration","Productivity"], - }, - 'fathom': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/fathom.svg", - authType: "API Key", - categories: ["AI","Automation","Communication","Transcription"], - }, - 'googlemeet': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_meet.svg", - authType: "OAuth 2.0", - categories: ["Communication","Calendar"], - }, - 'googlesheets': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_sheets.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents","Analytics"], - }, - 'intercom': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/intercom.svg", - authType: "OAuth 2.0", - categories: ["Customer Support","Communication"], - }, - 'monday': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/monday.svg", - authType: "OAuth 2.0", - categories: ["Project Management","Collaboration","Productivity"], - }, - 'sharepoint': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/sharepoint.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'outlook': { - iconUrl: "https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/outlook.svg", - authType: "OAuth 2.0", - categories: ["Communication","Calendar"], - }, - 'confluence': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/confluence.svg", - authType: "OAuth 2.0", - categories: ["Project Management","Files & Documents","Collaboration"], - }, - 'gong': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/gong.svg", - authType: "OAuth 2.0", - categories: ["CRM & Sales","AI","Automation","Transcription"], - }, - 'slack': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/slack.svg", - authType: "OAuth 2.0", - categories: ["Communication","Collaboration"], - }, - 'hubspot': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/hub_spot.svg", - authType: "OAuth 2.0", - categories: ["CRM & Sales"], - }, - 'salesforce': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/sales_force.svg", - authType: "OAuth 2.0", - categories: ["CRM & Sales"], - }, - 'googledocs': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_docs.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'googledrive': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_drive.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'microsoftteams': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/microsoft-teams.svg", - authType: "OAuth 2.0", - categories: ["Communication","Collaboration"], - }, - 'zoom': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/zoom.svg", - authType: "OAuth 2.0", - categories: ["Communication","Calendar"], - }, - 'linear': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/linear.svg", - authType: "OAuth 2.0", - categories: ["Developer Tools","Project Management"], - }, - 'jira': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/jira.svg", - authType: "OAuth 2.0", - categories: ["Developer Tools","Project Management"], - }, - 'dropbox': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/drop_box.svg", - authType: "OAuth 2.0", - categories: ["Files & Documents"], - }, - 'asana': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/asana-n.svg", - authType: "OAuth 2.0", - categories: ["Project Management","Collaboration","Productivity"], - }, - 'trello': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/trello_n.svg", - authType: "OAuth 1.0a", - categories: ["Project Management","Collaboration","Productivity"], - }, - 'github': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/github.png", - authType: "OAuth 2.0", - categories: ["Developer Tools","Collaboration"], - }, - 'notion': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/notion.svg", - authType: "OAuth 2.0", - categories: ["Project Management","Files & Documents","Collaboration"], - }, - 'freshdesk': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/freshdesk.png", - authType: "Basic Auth", - categories: ["Customer Support","Communication"], - }, - 'googlecalendar': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_calendar.svg", - authType: "OAuth 2.0", - categories: ["Communication","Calendar"], - }, - 'gmail': { - iconUrl: "https://cdn.scalekit.com/sk-connect/assets/provider-icons/gmail.svg", - authType: "OAuth 2.0", - categories: ["Communication"], + makemcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/make.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Automation', 'Productivity', 'Developer Tools'], + }, + lucidmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/lucid.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Design', 'Productivity', 'Collaboration'], + }, + jotformmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/jotform.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Productivity', 'Automation'], + }, + gustomcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/gusto.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Accounting & Finance', 'Productivity'], + }, + tavilymcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/tavily.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Search', 'AI', 'Developer Tools'], + }, + firecrawlmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/firecrawl.svg', + authType: 'Bearer Token', + categories: ['AI', 'Developer Tools', 'Search'], + }, + adobemarketingagentmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/adobe.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Marketing', 'Analytics', 'AI'], + }, + grainmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/grain.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Transcription', 'Collaboration', 'AI'], + }, + leadiq: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/leadiq.svg', + authType: 'API Key', + categories: ['CRM & Sales', 'Analytics'], + }, + adzvisermcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/adzviser.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Marketing', 'Analytics'], + }, + commonroommcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/commonroom.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Marketing', 'Analytics', 'CRM & Sales'], + }, + fellowaimcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/fellowai.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Productivity', 'Project Management'], + }, + supermetricsmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/supermetrics.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Marketing', 'Analytics', 'CRM & Sales'], + }, + customeriomcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/customerio.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Marketing', 'Analytics', 'CRM & Sales'], + }, + zapiermcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/zapier.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Automation', 'Productivity', 'Developer Tools'], + }, + clickhouse: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/clickhouse.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Analytics', 'Developer Tools', 'Databases'], + }, + atlassianmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/atlassian.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Project Management', 'Productivity', 'Collaboration'], + }, + ahrefsmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/ahrefs.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Marketing', 'CRM & Sales'], + }, + clarifymcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/clarify.svg', + authType: 'OAuth 2.1/DCR', + categories: ['CRM & Sales', 'Productivity', 'Analytics'], + }, + bitlymcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/bitly.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Marketing', 'CRM & Sales'], + }, + klaviyomcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/klaviyo.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Marketing', 'CRM & Sales'], + }, + googledwd: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google.svg', + authType: 'Service Account (DWD)', + categories: ['Productivity', 'Communication'], + }, + xero: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/xero.svg', + authType: 'OAuth 2.0', + categories: ['Accounting & Finance'], + }, + mailchimp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/mailchimp.svg', + authType: 'OAuth 2.0', + categories: ['Marketing', 'Automation', 'Analytics'], + }, + datadog: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/datadog.svg', + authType: 'API Key', + categories: ['Developer Tools', 'Monitoring'], + }, + quickbooks: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/Quickbooks.svg', + authType: 'OAuth 2.0', + categories: ['Accounting & Finance'], + }, + tableau: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/tableau.svg', + authType: 'API Key', + categories: ['Analytics', 'Productivity'], + }, + heyreach: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/heyreach.svg', + authType: 'API Key', + categories: ['CRM & Sales'], + }, + posthogmcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/posthog-1.svg', + authType: 'OAuth 2.1/DCR', + categories: ['Analytics'], + }, + box: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/box.svg', + authType: 'OAuth 2.0', + categories: ['Productivity', 'Files & Documents'], + }, + bigqueryserviceaccount: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/bigquery.svg', + authType: 'Service Account', + categories: ['Analytics', 'Databases'], + }, + close: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/close.svg', + authType: 'OAuth 2.0', + categories: ['CRM & Sales', 'Communication'], + }, + miro: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/Miro.svg', + authType: 'OAuth 2.0', + categories: ['Productivity', 'Collaboration', 'Design'], + }, + bitbucket: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/bitbucket.svg', + authType: 'OAuth 2.0', + categories: ['Developer Tools', 'Collaboration'], + }, + dynamo: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/dynamo.svg', + authType: 'Bearer Token', + categories: ['Accounting & Finance', 'CRM & Sales', 'Databases'], + }, + databricksworkspace: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/databricks-1.svg', + authType: 'Service Principal (OAuth 2.0)', + categories: ['Analytics', 'Automation', 'Databases'], + }, + diarize: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/diarize.svg', + authType: 'Bearer Token', + categories: ['Transcription', 'Media', 'Productivity', 'Analytics'], + }, + parallelaitaskmcp: { + iconUrl: 'https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/parallel-ai.svg', + authType: 'Bearer Token', + categories: ['Productivity', 'AI', 'Developer Tools'], + }, + calendly: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/calendly.svg', + authType: 'OAuth 2.0', + categories: ['Productivity', 'Calendar'], + }, + apifymcp: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/apify.svg', + authType: 'Bearer Token', + categories: ['AI', 'Automation', 'Developer Tools'], + }, + evertrace: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/evertrace.png', + authType: 'Bearer Token', + categories: ['CRM & Sales'], + }, + figma: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/figma.svg', + authType: 'OAuth 2.0', + categories: ['Design', 'Collaboration'], + }, + jiminny: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/jiminny.svg', + authType: 'Bearer Token', + categories: ['CRM & Sales', 'AI', 'Automation', 'Transcription'], + }, + pagerduty: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/pagerduty.svg', + authType: 'OAuth 2.0', + categories: ['Developer Tools', 'Monitoring'], + }, + vercel: { + iconUrl: 'https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/vercel.svg', + authType: 'OAuth 2.0', + categories: ['Developer Tools'], + }, + gitlab: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/gitlab.svg', + authType: 'OAuth 2.0', + categories: ['Developer Tools', 'Collaboration'], + }, + pipedrive: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/pipedrive.svg', + authType: 'OAuth 2.0', + categories: ['CRM & Sales'], + }, + linkedin: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/linkedin.svg', + authType: 'OAuth 2.0', + categories: ['CRM & Sales'], + }, + outreach: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/outreach.png', + authType: 'OAuth 2.0', + categories: ['CRM & Sales'], + }, + granolamcp: { + iconUrl: 'https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/granola.svg', + authType: 'OAuth 2.1/DCR', + categories: ['AI', 'Automation', 'Communication', 'Transcription'], + }, + twitter: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/X.svg', + authType: 'Bearer Token', + categories: ['Communication', 'Marketing'], + }, + discord: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/discord.svg', + authType: 'OAuth 2.0', + categories: ['Communication', 'Collaboration'], + }, + phantombuster: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/phantombuster.svg', + authType: 'API Key', + categories: ['AI', 'Automation'], + }, + affinity: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/affinity.svg', + authType: 'Bearer Token', + categories: ['CRM & Sales'], + }, + supadata: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/supadata.svg', + authType: 'API Key', + categories: ['Analytics', 'Search'], + }, + granola: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/granola.svg', + authType: 'Bearer Token', + categories: ['AI', 'Automation', 'Communication', 'Transcription'], + }, + brave: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/brave.svg', + authType: 'API Key', + categories: ['Analytics', 'Search'], + }, + harvestapi: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/harvestapi.svg', + authType: 'API Key', + categories: ['Marketing', 'Analytics'], + }, + exa: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/exa.svg', + authType: 'API Key', + categories: ['Analytics', 'AI', 'Automation', 'Search'], + }, + snowflakekeyauth: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/snowflake.svg', + authType: 'Bearer Token', + categories: ['Analytics', 'Databases'], + }, + attio: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/attio.svg', + authType: 'OAuth 2.0', + categories: ['CRM & Sales'], + }, + apollo: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/apollo.svg', + authType: 'OAuth 2.0', + categories: ['CRM & Sales'], + }, + vimeo: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/vimeo.svg', + authType: 'OAuth 2.0', + categories: ['Media'], + }, + youtube: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/youtube.svg', + authType: 'OAuth 2.0', + categories: ['Media', 'Marketing'], + }, + googleslides: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_slides.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + attention: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/attention.svg', + authType: 'API Key', + categories: ['AI', 'Automation', 'CRM & Sales'], + }, + clari_copilot: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/clari.svg', + authType: 'API Key', + categories: ['CRM & Sales', 'AI', 'Automation', 'Transcription'], + }, + chorus: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/chorus.svg', + authType: 'Basic Auth', + categories: ['CRM & Sales', 'AI', 'Automation', 'Transcription'], + }, + google_ads: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_ads.png', + authType: 'OAuth 2.0', + categories: ['Marketing', 'CRM & Sales'], + }, + servicenow: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/servicenow.svg', + authType: 'OAuth 2.0', + categories: ['Customer Support', 'Communication'], + }, + zendesk: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/zendesk.svg', + authType: 'API KEY', + categories: ['Customer Support', 'Communication'], + }, + googleforms: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_forms.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + microsoftword: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/word.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + microsoftexcel: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/excel.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents', 'Analytics'], + }, + onenote: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/onenote.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + snowflake: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/snowflake.svg', + authType: 'OAuth 2.0', + categories: ['Analytics', 'Databases'], + }, + onedrive: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/onedrive.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + bigquery: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/bigquery.svg', + authType: 'OAuth 2.0', + categories: ['Analytics', 'Databases'], + }, + airtable: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/airtable.svg', + authType: 'OAuth 2.0', + categories: ['Project Management', 'Analytics'], + }, + clickup: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/clickup.svg', + authType: 'OAuth 2.0', + categories: ['Project Management', 'Collaboration', 'Productivity'], + }, + fathom: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/fathom.svg', + authType: 'API Key', + categories: ['AI', 'Automation', 'Communication', 'Transcription'], + }, + googlemeet: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_meet.svg', + authType: 'OAuth 2.0', + categories: ['Communication', 'Calendar'], + }, + googlesheets: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_sheets.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents', 'Analytics'], + }, + intercom: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/intercom.svg', + authType: 'OAuth 2.0', + categories: ['Customer Support', 'Communication'], + }, + monday: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/monday.svg', + authType: 'OAuth 2.0', + categories: ['Project Management', 'Collaboration', 'Productivity'], + }, + sharepoint: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/sharepoint.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + outlook: { + iconUrl: 'https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/outlook.svg', + authType: 'OAuth 2.0', + categories: ['Communication', 'Calendar'], + }, + confluence: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/confluence.svg', + authType: 'OAuth 2.0', + categories: ['Project Management', 'Files & Documents', 'Collaboration'], + }, + gong: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/gong.svg', + authType: 'OAuth 2.0', + categories: ['CRM & Sales', 'AI', 'Automation', 'Transcription'], + }, + slack: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/slack.svg', + authType: 'OAuth 2.0', + categories: ['Communication', 'Collaboration'], + }, + hubspot: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/hub_spot.svg', + authType: 'OAuth 2.0', + categories: ['CRM & Sales'], + }, + salesforce: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/sales_force.svg', + authType: 'OAuth 2.0', + categories: ['CRM & Sales'], + }, + googledocs: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_docs.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + googledrive: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_drive.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + microsoftteams: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/microsoft-teams.svg', + authType: 'OAuth 2.0', + categories: ['Communication', 'Collaboration'], + }, + zoom: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/zoom.svg', + authType: 'OAuth 2.0', + categories: ['Communication', 'Calendar'], + }, + linear: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/linear.svg', + authType: 'OAuth 2.0', + categories: ['Developer Tools', 'Project Management'], + }, + jira: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/jira.svg', + authType: 'OAuth 2.0', + categories: ['Developer Tools', 'Project Management'], + }, + dropbox: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/drop_box.svg', + authType: 'OAuth 2.0', + categories: ['Files & Documents'], + }, + asana: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/asana-n.svg', + authType: 'OAuth 2.0', + categories: ['Project Management', 'Collaboration', 'Productivity'], + }, + trello: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/trello_n.svg', + authType: 'OAuth 1.0a', + categories: ['Project Management', 'Collaboration', 'Productivity'], + }, + github: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/github.png', + authType: 'OAuth 2.0', + categories: ['Developer Tools', 'Collaboration'], + }, + notion: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/notion.svg', + authType: 'OAuth 2.0', + categories: ['Project Management', 'Files & Documents', 'Collaboration'], + }, + freshdesk: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/freshdesk.png', + authType: 'Basic Auth', + categories: ['Customer Support', 'Communication'], + }, + googlecalendar: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/google_calendar.svg', + authType: 'OAuth 2.0', + categories: ['Communication', 'Calendar'], + }, + gmail: { + iconUrl: 'https://cdn.scalekit.com/sk-connect/assets/provider-icons/gmail.svg', + authType: 'OAuth 2.0', + categories: ['Communication'], }, } diff --git a/src/data/agent-connectors/firecrawlmcp.ts b/src/data/agent-connectors/firecrawlmcp.ts index 5aff6159d..604f1bf60 100644 --- a/src/data/agent-connectors/firecrawlmcp.ts +++ b/src/data/agent-connectors/firecrawlmcp.ts @@ -2,221 +2,711 @@ import type { Tool } from '../../types/agent-connectors' export const tools: Tool[] = [ { - name: 'firecrawlmcp_firecrawl_scrape', - description: `Scrape a single URL and return its content in markdown, HTML, or other formats.`, - params: [ - { name: 'url', type: 'string', required: true, description: 'The URL to scrape.' }, - { name: 'formats', type: 'string', required: false, description: 'Output formats to return. Pass as a JSON array via the SDK. Accepted values: markdown, html, rawHtml, screenshot, links, summary, json, query, audio.' }, - { name: 'onlyMainContent', type: 'boolean', required: false, description: 'Set to true to strip navigation, headers, footers, and other boilerplate.' }, - { name: 'includeTags', type: 'string', required: false, description: 'HTML tags or CSS selectors to restrict extraction to. Pass as a JSON array via the SDK.' }, - { name: 'excludeTags', type: 'string', required: false, description: 'HTML tags or CSS selectors to remove from extracted content. Pass as a JSON array via the SDK.' }, - { name: 'waitFor', type: 'number', required: false, description: 'Milliseconds to wait for JavaScript to render before extracting content.' }, - { name: 'mobile', type: 'boolean', required: false, description: 'Set to true to emulate a mobile browser viewport.' }, - { name: 'location', type: 'string', required: false, description: 'Country and optional languages for geo-localized scraping. Pass as a JSON object via the SDK, e.g. {"country": "US", "languages": ["en"]}.' }, - { name: 'proxy', type: 'string', required: false, description: 'Proxy tier to use. Accepted values: basic, stealth, enhanced, auto.' }, - { name: 'jsonOptions', type: 'string', required: false, description: 'Prompt and optional JSON Schema for structured data extraction. Pass as a JSON object via the SDK.' }, - { name: 'screenshotOptions', type: 'string', required: false, description: 'Screenshot settings such as full-page and quality. Pass as a JSON object via the SDK.' }, - { name: 'pdfOptions', type: 'string', required: false, description: 'PDF parsing options such as maximum pages. Pass as a JSON object via the SDK.' }, - { name: 'skipTlsVerification', type: 'boolean', required: false, description: 'Set to true to skip TLS certificate validation.' }, - { name: 'maxAge', type: 'number', required: false, description: 'Maximum cache age in seconds.' }, - { name: 'storeInCache', type: 'boolean', required: false, description: 'Set to true to cache this response for future maxAge-based lookups.' }, - { name: 'removeBase64Images', type: 'boolean', required: false, description: 'Set to true to strip inline base64-encoded images from the output.' }, - { name: 'zeroDataRetention', type: 'boolean', required: false, description: 'Set to true to prevent Firecrawl from storing any data for this request.' }, + name: 'firecrawlmcp_firecrawl_agent', + description: `Start an autonomous AI research agent that browses the web to answer a prompt. Returns a job ID; poll with firecrawlmcp_firecrawl_agent_status for results.`, + params: [ + { + name: 'prompt', + type: 'string', + required: true, + description: `Natural-language instruction to guide extraction or crawling.`, + }, + { + name: 'schema', + type: 'object', + required: false, + description: `JSON Schema defining the structure of data to extract.`, + }, + { + name: 'urls', + type: 'array', + required: false, + description: `List of URLs to extract structured data from.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_search', - description: `Search the web and return scraped content from the top results.`, + name: 'firecrawlmcp_firecrawl_agent_status', + description: `Retrieve the status and results of a running AI research agent job by its ID.`, params: [ - { name: 'query', type: 'string', required: true, description: 'The search query.' }, - { name: 'limit', type: 'number', required: false, description: 'Maximum number of results to return.' }, - { name: 'sources', type: 'string', required: false, description: 'Search sources to include. Pass as a JSON array via the SDK, e.g. [{"type": "web"}]. Accepted types: web, images, news.' }, - { name: 'location', type: 'string', required: false, description: 'Geographic location for localized search results.' }, - { name: 'includeDomains', type: 'string', required: false, description: 'Domains to restrict search results to. Pass as a JSON array via the SDK.' }, - { name: 'excludeDomains', type: 'string', required: false, description: 'Domains to exclude from search results. Pass as a JSON array via the SDK.' }, - { name: 'scrapeOptions', type: 'string', required: false, description: 'Scraping options applied to each result page. Pass as a JSON object via the SDK.' }, - { name: 'tbs', type: 'string', required: false, description: 'Time-based search filter (e.g. qdr:d for past day, qdr:w for past week).' }, - { name: 'filter', type: 'string', required: false, description: 'Advanced search filter string in Google tbs format.' }, + { + name: 'id', + type: 'string', + required: true, + description: `The unique identifier of the resource.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_crawl', - description: `Crawl a website starting from a URL and extract content from all discovered pages.`, + name: 'firecrawlmcp_firecrawl_browser_create', + description: `Create a persistent browser session for interactive scraping.`, params: [ - { name: 'url', type: 'string', required: true, description: 'The root URL to begin crawling.' }, - { name: 'limit', type: 'number', required: false, description: 'Maximum number of pages to crawl.' }, - { name: 'maxDiscoveryDepth', type: 'number', required: false, description: 'Maximum link depth to follow from the starting URL.' }, - { name: 'maxConcurrency', type: 'number', required: false, description: 'Maximum number of concurrent requests.' }, - { name: 'includePaths', type: 'string', required: false, description: 'URL path patterns to restrict the crawl to. Pass as a JSON array via the SDK.' }, - { name: 'excludePaths', type: 'string', required: false, description: 'URL path patterns to exclude from the crawl. Pass as a JSON array via the SDK.' }, - { name: 'allowExternalLinks', type: 'boolean', required: false, description: 'Set to true to follow links to external domains.' }, - { name: 'allowSubdomains', type: 'boolean', required: false, description: 'Set to true to crawl subdomains of the target domain.' }, - { name: 'scrapeOptions', type: 'string', required: false, description: 'Scraping options applied to each page. Pass as a JSON object via the SDK.' }, - { name: 'prompt', type: 'string', required: false, description: 'Natural-language instruction to filter which pages to include.' }, + { + name: 'activityTtl', + type: 'number', + required: false, + description: `Seconds of inactivity after which the session is automatically destroyed.`, + }, + { + name: 'profile', + type: 'object', + required: false, + description: `Named browser profile to use for authenticated scraping.`, + }, + { + name: 'streamWebView', + type: 'boolean', + required: false, + description: `Set to true to stream the browser viewport during the session.`, + }, + { + name: 'ttl', + type: 'number', + required: false, + description: `Session lifetime in seconds after creation.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_check_crawl_status', - description: `Check the status of a crawl job by its ID.`, + name: 'firecrawlmcp_firecrawl_browser_delete', + description: `Destroy a browser session and release its resources.`, params: [ - { name: 'id', type: 'string', required: true, description: 'The crawl job ID returned by firecrawlmcp_firecrawl_crawl.' }, + { + name: 'sessionId', + type: 'string', + required: true, + description: `The ID of the browser session. Get it from firecrawlmcp_firecrawl_browser_create.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_extract', - description: `Extract structured data from one or more URLs using a natural-language prompt and optional JSON Schema.`, + name: 'firecrawlmcp_firecrawl_browser_list', + description: `List active or destroyed browser sessions for the account.`, params: [ - { name: 'urls', type: 'string', required: true, description: 'URLs to extract content from. Pass as a JSON array via the SDK.' }, - { name: 'prompt', type: 'string', required: false, description: 'Natural-language instruction describing what data to extract.' }, - { name: 'schema', type: 'string', required: false, description: 'JSON Schema defining the shape of data to extract. Pass as a JSON object via the SDK.' }, - { name: 'allowExternalLinks', type: 'boolean', required: false, description: 'Set to true to follow links to external domains.' }, - { name: 'enableWebSearch', type: 'boolean', required: false, description: 'Set to true to supplement extraction with live web search results.' }, - { name: 'includeSubdomains', type: 'boolean', required: false, description: 'Set to true to include subdomains of the target domain.' }, + { + name: 'status', + type: 'string', + required: false, + description: `Filter browser sessions by status. Accepted values: active, destroyed.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_map', - description: `Map a website's URL structure starting from a base URL.`, + name: 'firecrawlmcp_firecrawl_check_crawl_status', + description: `Check the progress and results of an in-progress crawl job by its ID.`, params: [ - { name: 'url', type: 'string', required: true, description: 'The root URL to begin mapping.' }, - { name: 'limit', type: 'number', required: false, description: 'Maximum number of URLs to return.' }, - { name: 'search', type: 'string', required: false, description: 'Search term to filter the URLs returned.' }, - { name: 'includeSubdomains', type: 'boolean', required: false, description: 'Set to true to include subdomains.' }, - { name: 'ignoreQueryParameters', type: 'boolean', required: false, description: 'Set to true to treat URLs differing only by query string as duplicates.' }, - { name: 'sitemap', type: 'string', required: false, description: 'How to use the sitemap. Accepted values: include, skip, only.' }, + { + name: 'id', + type: 'string', + required: true, + description: `The unique identifier of the resource.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_agent', - description: `Run an AI web research agent that autonomously browses and extracts data based on a prompt.`, + name: 'firecrawlmcp_firecrawl_crawl', + description: `Start a crawl job that extracts content from all pages of a website. Returns a job ID; use firecrawlmcp_firecrawl_check_crawl_status to poll for results.`, params: [ - { name: 'prompt', type: 'string', required: true, description: 'Natural-language instruction to guide the agent.' }, - { name: 'urls', type: 'string', required: false, description: 'Seed URLs for the agent to start from. Pass as a JSON array via the SDK.' }, - { name: 'schema', type: 'string', required: false, description: 'JSON Schema defining the shape of data to extract. Pass as a JSON object via the SDK.' }, + { + name: 'url', + type: 'string', + required: true, + description: `The URL of the page or website to scrape, crawl, or map.`, + }, + { + name: 'allowExternalLinks', + type: 'boolean', + required: false, + description: `Set to true to follow links to external domains.`, + }, + { + name: 'allowSubdomains', + type: 'boolean', + required: false, + description: `Set to true to crawl subdomains of the target domain.`, + }, + { + name: 'crawlEntireDomain', + type: 'boolean', + required: false, + description: `Set to true to crawl all paths on the domain, not just the starting URL subtree.`, + }, + { + name: 'deduplicateSimilarURLs', + type: 'boolean', + required: false, + description: `Set to true to skip URLs that are similar to already-crawled URLs.`, + }, + { + name: 'delay', + type: 'number', + required: false, + description: `Milliseconds to wait between requests to avoid rate limiting.`, + }, + { + name: 'excludePaths', + type: 'array', + required: false, + description: `URL path patterns to exclude from the crawl (e.g. ["/admin", "/login"]).`, + }, + { + name: 'ignoreQueryParameters', + type: 'boolean', + required: false, + description: `Set to true to treat URLs differing only by query string as duplicates.`, + }, + { + name: 'includePaths', + type: 'array', + required: false, + description: `URL path patterns to restrict the crawl to (e.g. ["/blog/*"]).`, + }, + { + name: 'limit', + type: 'number', + required: false, + description: `Maximum number of results to return.`, + }, + { + name: 'maxConcurrency', + type: 'number', + required: false, + description: `Maximum number of concurrent requests during a crawl.`, + }, + { + name: 'maxDiscoveryDepth', + type: 'number', + required: false, + description: `Maximum link depth to follow from the starting URL.`, + }, + { + name: 'prompt', + type: 'string', + required: false, + description: `Natural-language instruction to guide extraction or crawling.`, + }, + { + name: 'scrapeOptions', + type: 'object', + required: false, + description: `Scraping options applied to each page during crawl or search (formats, tags, etc.).`, + }, + { + name: 'sitemap', + type: 'string', + required: false, + description: `How to use the sitemap: include to discover URLs from it, only to crawl only sitemap URLs, skip to ignore it.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_agent_status', - description: `Get the status and results of a running or completed AI agent job.`, + name: 'firecrawlmcp_firecrawl_extract', + description: `Extract structured data from one or more URLs using a natural-language prompt and optional JSON Schema.`, params: [ - { name: 'id', type: 'string', required: true, description: 'The agent job ID returned by firecrawlmcp_firecrawl_agent.' }, + { + name: 'urls', + type: 'array', + required: true, + description: `List of URLs to extract structured data from.`, + }, + { + name: 'allowExternalLinks', + type: 'boolean', + required: false, + description: `Set to true to follow links to external domains.`, + }, + { + name: 'enableWebSearch', + type: 'boolean', + required: false, + description: `Set to true to supplement extraction with live web search results.`, + }, + { + name: 'includeSubdomains', + type: 'boolean', + required: false, + description: `Set to true to include subdomains of the target domain.`, + }, + { + name: 'prompt', + type: 'string', + required: false, + description: `Natural-language instruction to guide extraction or crawling.`, + }, + { + name: 'schema', + type: 'object', + required: false, + description: `JSON Schema defining the structure of data to extract.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_browser_create', - description: `Create a persistent browser session for interactive scraping.`, + name: 'firecrawlmcp_firecrawl_interact', + description: `Run code or a natural-language prompt in a live browser session for a previously scraped page.`, params: [ - { name: 'ttl', type: 'number', required: false, description: 'Session lifetime in seconds after creation.' }, - { name: 'activityTtl', type: 'number', required: false, description: 'Seconds of inactivity after which the session is automatically destroyed.' }, - { name: 'streamWebView', type: 'boolean', required: false, description: 'Set to true to stream the browser viewport during the session.' }, - { name: 'profile', type: 'string', required: false, description: 'Named browser profile to use. Pass as a JSON object via the SDK, e.g. {"name": "my-profile", "saveChanges": false}.' }, + { + name: 'scrapeId', + type: 'string', + required: true, + description: `The ID of the active scrape session. Get it from firecrawlmcp_firecrawl_scrape when using interact.`, + }, + { + name: 'code', + type: 'string', + required: false, + description: `Code snippet to execute in the browser session.`, + }, + { + name: 'language', + type: 'string', + required: false, + description: `Programming language for the code snippet to execute in the browser session.`, + }, + { + name: 'prompt', + type: 'string', + required: false, + description: `Natural-language instruction to guide extraction or crawling.`, + }, + { + name: 'timeout', + type: 'number', + required: false, + description: `Milliseconds to wait for the browser interaction to complete.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_browser_list', - description: `List active or destroyed browser sessions for the account.`, + name: 'firecrawlmcp_firecrawl_interact_stop', + description: `End an active browser interaction session and release its resources.`, params: [ - { name: 'status', type: 'string', required: false, description: 'Filter by session status. Accepted values: active, destroyed.' }, + { + name: 'scrapeId', + type: 'string', + required: true, + description: `The ID of the active scrape session. Get it from firecrawlmcp_firecrawl_scrape when using interact.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_browser_delete', - description: `Destroy a browser session and release its resources.`, + name: 'firecrawlmcp_firecrawl_map', + description: `Discover all indexed URLs on a website or within a URL subtree, with optional search filtering.`, params: [ - { name: 'sessionId', type: 'string', required: true, description: 'The session ID. Get it from firecrawlmcp_firecrawl_browser_create.' }, + { + name: 'url', + type: 'string', + required: true, + description: `The URL of the page or website to scrape, crawl, or map.`, + }, + { + name: 'ignoreQueryParameters', + type: 'boolean', + required: false, + description: `Set to true to treat URLs differing only by query string as duplicates.`, + }, + { + name: 'includeSubdomains', + type: 'boolean', + required: false, + description: `Set to true to include subdomains of the target domain.`, + }, + { + name: 'limit', + type: 'number', + required: false, + description: `Maximum number of results to return.`, + }, + { + name: 'search', + type: 'string', + required: false, + description: `Search term to filter URLs returned by the map.`, + }, + { + name: 'sitemap', + type: 'string', + required: false, + description: `How to use the sitemap: include to discover URLs from it, only to crawl only sitemap URLs, skip to ignore it.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_interact', - description: `Execute code or a natural-language instruction in an active browser session.`, + name: 'firecrawlmcp_firecrawl_monitor_check', + description: `Retrieve the page-level diff results for a single monitor check run.`, params: [ - { name: 'scrapeId', type: 'string', required: true, description: 'The active scrape session ID. Get it from firecrawlmcp_firecrawl_scrape when using interact mode.' }, - { name: 'prompt', type: 'string', required: false, description: 'Natural-language instruction for the browser to execute.' }, - { name: 'code', type: 'string', required: false, description: 'Code snippet to execute in the browser session.' }, - { name: 'language', type: 'string', required: false, description: 'Programming language for the code. Accepted values: bash, python, node.' }, - { name: 'timeout', type: 'number', required: false, description: 'Milliseconds to wait for the interaction to complete.' }, + { + name: 'checkId', + type: 'string', + required: true, + description: `The ID of a specific monitor check. Get it from firecrawlmcp_firecrawl_monitor_checks.`, + }, + { + name: 'id', + type: 'string', + required: true, + description: `The unique identifier of the resource.`, + }, + { + name: 'limit', + type: 'integer', + required: false, + description: `Maximum number of results to return.`, + }, + { + name: 'pageStatus', + type: 'string', + required: false, + description: `Filter check results to pages with this change status.`, + }, + { + name: 'skip', + type: 'integer', + required: false, + description: `Number of items to skip for pagination.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_interact_stop', - description: `Stop an active browser interaction session.`, + name: 'firecrawlmcp_firecrawl_monitor_checks', + description: `List the historical check runs for a monitor, with pagination.`, params: [ - { name: 'scrapeId', type: 'string', required: true, description: 'The active scrape session ID to stop.' }, + { + name: 'id', + type: 'string', + required: true, + description: `The unique identifier of the resource.`, + }, + { + name: 'limit', + type: 'integer', + required: false, + description: `Maximum number of results to return.`, + }, + { + name: 'offset', + type: 'integer', + required: false, + description: `Number of items to skip for pagination.`, + }, ], }, { name: 'firecrawlmcp_firecrawl_monitor_create', - description: `Create a website monitor that detects page changes on a schedule.`, + description: `Create a recurring Firecrawl monitor that scrapes a URL on a schedule and diffs results against the previous run.`, params: [ - { name: 'body', type: 'string', required: true, description: 'Monitor configuration including name, url, and cron schedule. Pass as a JSON object via the SDK, e.g. {"name": "My Monitor", "url": "https://example.com", "schedule": "0 9 * * 1"}.' }, + { + name: 'body', + type: 'object', + required: true, + description: `Monitor configuration object. Include name, url, schedule (cron), and scrapeOptions.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_monitor_list', - description: `List all website monitors for the account.`, + name: 'firecrawlmcp_firecrawl_monitor_delete', + description: `Permanently delete a monitor and stop its scheduled checks.`, params: [ - { name: 'limit', type: 'number', required: false, description: 'Maximum number of monitors to return.' }, - { name: 'offset', type: 'number', required: false, description: 'Number of monitors to skip for pagination.' }, + { + name: 'id', + type: 'string', + required: true, + description: `The unique identifier of the resource.`, + }, ], }, { name: 'firecrawlmcp_firecrawl_monitor_get', - description: `Get details of a specific website monitor.`, + description: `Retrieve the configuration and status of a single monitor by its ID.`, params: [ - { name: 'id', type: 'string', required: true, description: 'The monitor ID. Get it from firecrawlmcp_firecrawl_monitor_list.' }, + { + name: 'id', + type: 'string', + required: true, + description: `The unique identifier of the resource.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_monitor_update', - description: `Update the configuration of an existing website monitor.`, + name: 'firecrawlmcp_firecrawl_monitor_list', + description: `List all monitors configured for the authenticated account, with pagination.`, params: [ - { name: 'id', type: 'string', required: true, description: 'The monitor ID to update.' }, - { name: 'body', type: 'string', required: true, description: 'Updated monitor configuration. Pass as a JSON object via the SDK.' }, + { + name: 'limit', + type: 'integer', + required: false, + description: `Maximum number of results to return.`, + }, + { + name: 'offset', + type: 'integer', + required: false, + description: `Number of items to skip for pagination.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_monitor_delete', - description: `Delete a website monitor.`, + name: 'firecrawlmcp_firecrawl_monitor_run', + description: `Trigger an immediate check for a monitor outside its normal schedule.`, params: [ - { name: 'id', type: 'string', required: true, description: 'The monitor ID to delete.' }, + { + name: 'id', + type: 'string', + required: true, + description: `The unique identifier of the resource.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_monitor_run', - description: `Trigger an immediate check for a monitor outside its normal schedule.`, + name: 'firecrawlmcp_firecrawl_monitor_update', + description: `Update monitor settings such as name, status, schedule, or scrape options.`, params: [ - { name: 'id', type: 'string', required: true, description: 'The monitor ID to run now.' }, + { + name: 'body', + type: 'object', + required: true, + description: `Monitor configuration object. Include name, url, schedule (cron), and scrapeOptions.`, + }, + { + name: 'id', + type: 'string', + required: true, + description: `The unique identifier of the resource.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_monitor_checks', - description: `List the check history for a monitor.`, + name: 'firecrawlmcp_firecrawl_scrape', + description: `Scrape a single URL and return its content in one or more formats (markdown, JSON, screenshot, etc.).`, params: [ - { name: 'id', type: 'string', required: true, description: 'The monitor ID.' }, - { name: 'limit', type: 'number', required: false, description: 'Maximum number of checks to return.' }, - { name: 'offset', type: 'number', required: false, description: 'Number of checks to skip for pagination.' }, + { + name: 'url', + type: 'string', + required: true, + description: `The URL of the page or website to scrape, crawl, or map.`, + }, + { + name: 'excludeTags', + type: 'array', + required: false, + description: `HTML tags or CSS selectors to remove from extracted content.`, + }, + { + name: 'formats', + type: 'array', + required: false, + description: `Output formats to return. Accepted values: markdown, html, rawHtml, screenshot, links, summary, branding, json, query, audio.`, + }, + { + name: 'includeTags', + type: 'array', + required: false, + description: `HTML tags or CSS selectors to restrict extraction to.`, + }, + { + name: 'jsonOptions', + type: 'object', + required: false, + description: `Options for JSON extraction: prompt and optional JSON Schema.`, + }, + { + name: 'location', + type: 'object', + required: false, + description: `Geographic location for localized content. Pass an object with country (ISO 3166-1 alpha-2 code) and optional languages array.`, + }, + { + name: 'lockdown', + type: 'boolean', + required: false, + description: `Set to true to serve from cache only, without any outbound network requests.`, + }, + { + name: 'maxAge', + type: 'number', + required: false, + description: `Maximum cache age in seconds; serve cached data up to this age for faster responses.`, + }, + { + name: 'mobile', + type: 'boolean', + required: false, + description: `Set to true to emulate a mobile browser viewport.`, + }, + { + name: 'onlyMainContent', + type: 'boolean', + required: false, + description: `Set to true to strip navigation, headers, footers, and other boilerplate.`, + }, + { + name: 'parsers', + type: 'array', + required: false, + description: `Additional parsers to apply. Accepted values: pdf.`, + }, + { + name: 'pdfOptions', + type: 'object', + required: false, + description: `Options for PDF parsing, such as the maximum number of pages.`, + }, + { + name: 'profile', + type: 'object', + required: false, + description: `Named browser profile to use for authenticated scraping.`, + }, + { + name: 'proxy', + type: 'string', + required: false, + description: `Proxy tier to use: basic for standard, stealth or enhanced for bot-resistant sites.`, + }, + { + name: 'queryOptions', + type: 'object', + required: false, + description: `Options for query-mode extraction: the prompt and response mode.`, + }, + { + name: 'removeBase64Images', + type: 'boolean', + required: false, + description: `Set to true to strip inline base64-encoded images from the output.`, + }, + { + name: 'screenshotOptions', + type: 'object', + required: false, + description: `Options for screenshot capture, such as full-page and quality settings.`, + }, + { + name: 'skipTlsVerification', + type: 'boolean', + required: false, + description: `Set to true to skip TLS certificate validation (use for self-signed certs).`, + }, + { + name: 'storeInCache', + type: 'boolean', + required: false, + description: `Set to true to cache this response for future maxAge-based lookups.`, + }, + { + name: 'waitFor', + type: 'number', + required: false, + description: `Milliseconds to wait for JavaScript to render before extracting content.`, + }, + { + name: 'zeroDataRetention', + type: 'boolean', + required: false, + description: `Set to true to prevent Firecrawl from storing any data for this request.`, + }, ], }, { - name: 'firecrawlmcp_firecrawl_monitor_check', - description: `Get the detailed results of a specific monitor check.`, + name: 'firecrawlmcp_firecrawl_search', + description: `Search the web and optionally scrape content from the top results.`, params: [ - { name: 'id', type: 'string', required: true, description: 'The monitor ID.' }, - { name: 'checkId', type: 'string', required: true, description: 'The check ID. Get it from firecrawlmcp_firecrawl_monitor_checks.' }, - { name: 'limit', type: 'number', required: false, description: 'Maximum number of results to return.' }, - { name: 'pageStatus', type: 'string', required: false, description: 'Filter by page change status. Accepted values: same, new, changed, removed, error.' }, - { name: 'skip', type: 'number', required: false, description: 'Number of items to skip for pagination.' }, + { + name: 'query', + type: 'string', + required: true, + description: `The search query to send to Firecrawl web search.`, + }, + { + name: 'enterprise', + type: 'array', + required: false, + description: `Search mode tier. Accepted values: default, anon, zdr.`, + }, + { + name: 'excludeDomains', + type: 'array', + required: false, + description: `Domains to exclude from search results.`, + }, + { + name: 'filter', + type: 'string', + required: false, + description: `Advanced search filter string in Google tbs format.`, + }, + { + name: 'includeDomains', + type: 'array', + required: false, + description: `Restrict search results to these domains only.`, + }, + { + name: 'limit', + type: 'number', + required: false, + description: `Maximum number of results to return.`, + }, + { + name: 'location', + type: 'string', + required: false, + description: `Geographic location for localized scraping or search results.`, + }, + { + name: 'scrapeOptions', + type: 'object', + required: false, + description: `Scraping options applied to each page during crawl or search (formats, tags, etc.).`, + }, + { + name: 'sources', + type: 'array', + required: false, + description: `Sources to include. Each item must have a type field. Accepted values for type: web, images, news.`, + }, + { + name: 'tbs', + type: 'string', + required: false, + description: `Time-based search filter (e.g. qdr:d for past day, qdr:w for past week).`, + }, ], }, { name: 'firecrawlmcp_firecrawl_search_feedback', - description: `Submit feedback on a previous search result to improve future results.`, + description: `Send structured feedback on a previous search result to help improve future results.`, params: [ - { name: 'searchId', type: 'string', required: true, description: 'The search ID returned by firecrawlmcp_firecrawl_search.' }, - { name: 'rating', type: 'string', required: true, description: 'Your quality rating. Accepted values: good, bad, partial.' }, - { name: 'valuableSources', type: 'string', required: false, description: 'Useful sources from the results. Pass as a JSON array via the SDK, e.g. [{"url": "https://docs.example.com", "reason": "Comprehensive docs"}].' }, - { name: 'missingContent', type: 'string', required: false, description: 'Topics missing from results. Pass as a JSON array via the SDK, e.g. [{"topic": "pricing", "description": "No pricing info found"}].' }, - { name: 'querySuggestions', type: 'string', required: false, description: 'Alternative search queries that might yield better results.' }, + { + name: 'rating', + type: 'string', + required: true, + description: `Your overall quality rating for the search result.`, + }, + { + name: 'searchId', + type: 'string', + required: true, + description: `The ID of a previous search result. Returned by firecrawlmcp_firecrawl_search.`, + }, + { + name: 'missingContent', + type: 'array', + required: false, + description: `Content types or topics that were missing from the search results.`, + }, + { + name: 'querySuggestions', + type: 'string', + required: false, + description: `Alternative search queries that might yield better results.`, + }, + { + name: 'valuableSources', + type: 'array', + required: false, + description: `URLs you found particularly useful in the search results.`, + }, ], }, ] diff --git a/src/data/agent-connectors/gustomcp.ts b/src/data/agent-connectors/gustomcp.ts new file mode 100644 index 000000000..67102807b --- /dev/null +++ b/src/data/agent-connectors/gustomcp.ts @@ -0,0 +1,892 @@ +import type { Tool } from '../../types/agent-connectors' + +export const tools: Tool[] = [ + { + name: 'gustomcp_get_company', + description: `Retrieve the company profile including legal name, entity type, EIN, and status.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_compensation', + description: `Retrieve a single pay rate record by UUID, including rate, frequency, and FLSA status.`, + params: [ + { + name: 'compensation_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the record`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_contractor', + description: `Retrieve full profile for a contractor by UUID, including name, email, and payment method.`, + params: [ + { + name: 'contractor_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the contractor`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_contractor_payment', + description: `Retrieve details for a single contractor payment by UUID, including amount and payment method.`, + params: [ + { + name: 'contractor_payment_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the contractor payment`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_contractor_payment_group', + description: `Retrieve all individual contractor payments within a batched payment group by UUID.`, + params: [ + { + name: 'contractor_payment_group_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the contractor payment group`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_department', + description: `Retrieve details for a single department by UUID, including name and assigned employees.`, + params: [ + { + name: 'department_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the department`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_employee', + description: `Retrieve full profile for an employee by UUID, including name, hire date, job, and location.`, + params: [ + { + name: 'employee_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the employee to retrieve`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'include', + type: 'string', + required: false, + description: `Comma-separated fields to include: all_compensations, all_home_addresses, company_name, current_home_address, custom_fields, portal_invitations`, + }, + ], + }, + { + name: 'gustomcp_get_employee_earnings_summary', + description: `Return per-employee earning breakdowns aggregated across all payrolls in a date range.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'end_date', + type: 'string', + required: false, + description: `End of date range (YYYY-MM-DD). Defaults to today.`, + }, + { + name: 'start_date', + type: 'string', + required: false, + description: `Start of date range (YYYY-MM-DD). Defaults to Jan 1 of current year.`, + }, + ], + }, + { + name: 'gustomcp_get_employee_home_address', + description: `Retrieve a single home address record by UUID, including street, city, state, and ZIP.`, + params: [ + { + name: 'home_address_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the address`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_employee_rehire', + description: `Retrieve rehire details for an employee, including new start date and updated employment terms.`, + params: [ + { + name: 'employee_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the employee`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_employee_work_address', + description: `Retrieve a single work location assignment by UUID, including address and effective dates.`, + params: [ + { + name: 'work_address_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the work location`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_job', + description: `Retrieve details for a job position by UUID, including title, department, and current pay rate.`, + params: [ + { + name: 'job_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the job`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'include', + type: 'string', + required: false, + description: `Use all_compensations to include all effective dated compensations instead of only the current compensation`, + }, + ], + }, + { + name: 'gustomcp_get_location', + description: `Retrieve details for a company location by UUID, including address and filing information.`, + params: [ + { + name: 'location_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the location`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_pay_schedule', + description: `Retrieve a pay schedule by UUID, including frequency and next scheduled pay dates.`, + params: [ + { + name: 'pay_schedule_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the pay schedule`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_payroll', + description: `Retrieve complete details for a payroll run by UUID, including earnings, taxes, and net pay.`, + params: [ + { + name: 'payroll_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the payroll`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'employee_compensations_page', + type: 'integer', + required: false, + description: `Page number for paginating employee compensations within the payroll. Defaults to 1.`, + }, + { + name: 'employee_compensations_per', + type: 'integer', + required: false, + description: `Number of employee compensations per page. Defaults to 100 (max).`, + }, + ], + }, + { + name: 'gustomcp_get_time_sheet', + description: `Retrieve time entries for a timesheet by UUID, including daily hours, overtime, and notes.`, + params: [ + { + name: 'time_sheet_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the timesheet`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_get_token_info', + description: `Return information about the current API token, including granted scopes and accessible resources.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_contractor_payment_groups', + description: `List batched contractor payment runs, showing payment group UUIDs and check dates.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'end_date', + type: 'string', + required: false, + description: `Optional end of date range (YYYY-MM-DD)`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + { + name: 'start_date', + type: 'string', + required: false, + description: `Optional start of date range (YYYY-MM-DD)`, + }, + ], + }, + { + name: 'gustomcp_list_contractor_payments', + description: `List payments made to contractors within a date range. Requires start_date and end_date.`, + params: [ + { + name: 'end_date', + type: 'string', + required: true, + description: `End of date range (YYYY-MM-DD) for contractor payments`, + }, + { + name: 'start_date', + type: 'string', + required: true, + description: `Start of date range (YYYY-MM-DD) for contractor payments`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'contractor_uuid', + type: 'string', + required: false, + description: `Filter payments by contractor UUID`, + }, + { + name: 'group_by_date', + type: 'boolean', + required: false, + description: `When true, groups results by check date`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + ], + }, + { + name: 'gustomcp_list_contractors', + description: `List all independent contractors for the company with pagination and search support.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'include', + type: 'string', + required: false, + description: `Comma-separated fields to include: company_name, portal_invitations`, + }, + { + name: 'onboarded', + type: 'boolean', + required: false, + description: `Filter by contractors who have completed onboarding`, + }, + { + name: 'onboarded_active', + type: 'boolean', + required: false, + description: `Filter by contractors who are onboarded and currently active`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + { + name: 'search_term', + type: 'string', + required: false, + description: `A string to search for in names`, + }, + { + name: 'sort_by', + type: 'string', + required: false, + description: `Sort field and optional direction, e.g. name:asc. Supported fields: created_at, name, onboarding_status, type`, + }, + { + name: 'terminated', + type: 'boolean', + required: false, + description: `Filter by contractors who are no longer active`, + }, + { + name: 'terminated_today', + type: 'boolean', + required: false, + description: `Filter by contractors whose last day was today`, + }, + ], + }, + { + name: 'gustomcp_list_custom_fields_schema', + description: `Retrieve definitions of all custom fields configured for the company, including types and options.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'page', + type: 'integer', + required: false, + description: `Page number for pagination (default 1)`, + }, + { + name: 'per', + type: 'integer', + required: false, + description: `Number of items per page (default 25, max 500)`, + }, + ], + }, + { + name: 'gustomcp_list_departments', + description: `List all departments in the company, including names, UUIDs, and assigned employees.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_earning_types', + description: `List all earning type categories for the company, such as regular pay, overtime, and bonuses.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_employee_custom_fields', + description: `Retrieve all custom field values set for a specific employee.`, + params: [ + { + name: 'employee_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the employee`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + ], + }, + { + name: 'gustomcp_list_employee_employment_history', + description: `Retrieve the work history timeline for an employee, including all roles and status changes.`, + params: [ + { + name: 'employee_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the employee`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_employee_home_addresses', + description: `List all home addresses on file for an employee, including current and historical entries.`, + params: [ + { + name: 'employee_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the employee`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_employee_jobs', + description: `List all job positions held by an employee, including title, location, and rate information.`, + params: [ + { + name: 'employee_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the employee`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'include', + type: 'string', + required: false, + description: `Use all_compensations to include all effective dated compensations for each job`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + ], + }, + { + name: 'gustomcp_list_employee_terminations', + description: `Retrieve separation records for an employee, including departure dates and final pay details.`, + params: [ + { + name: 'employee_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the employee`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_employee_work_addresses', + description: `List all work locations assigned to an employee, with effective dates.`, + params: [ + { + name: 'employee_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the employee`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_employees', + description: `List all employees for the company with pagination and filtering by status, onboarding, or name.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'include', + type: 'string', + required: false, + description: `Comma-separated fields to include: all_compensations, all_home_addresses, company_name, current_home_address, custom_fields, portal_invitations`, + }, + { + name: 'location_uuid', + type: 'string', + required: false, + description: `Filter by employees assigned to a specific location UUID`, + }, + { + name: 'onboarded', + type: 'boolean', + required: false, + description: `Filter by employees who have completed onboarding`, + }, + { + name: 'onboarded_active', + type: 'boolean', + required: false, + description: `Filter by employees who are onboarded and currently active`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { + name: 'payroll_uuid', + type: 'string', + required: false, + description: `Filter by employees included in a specific payroll UUID`, + }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + { + name: 'search_term', + type: 'string', + required: false, + description: `A string to search for in names`, + }, + { + name: 'sort_by', + type: 'string', + required: false, + description: `Sort field and optional direction, e.g. name:asc. Supported fields: created_at, name, onboarding_status`, + }, + { + name: 'terminated', + type: 'boolean', + required: false, + description: `Filter by employees who are no longer active with the company`, + }, + { + name: 'terminated_today', + type: 'boolean', + required: false, + description: `Filter by employees whose last day was today`, + }, + { + name: 'uuids', + type: 'string', + required: false, + description: `Comma-separated subset of employee UUIDs to fetch`, + }, + ], + }, + { + name: 'gustomcp_list_job_compensations', + description: `List the pay rate history for a job position, showing all rate changes over time.`, + params: [ + { + name: 'job_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the job`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'include', + type: 'string', + required: false, + description: `Use all_compensations to include all effective dated compensations instead of only the current compensation`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + ], + }, + { + name: 'gustomcp_list_locations', + description: `List all physical office and work locations registered for the company.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + ], + }, + { + name: 'gustomcp_list_pay_periods', + description: `List all pay periods for the company, showing start and end dates and linked payroll runs.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'end_date', + type: 'string', + required: false, + description: `Filter pay periods ending on or before this date (YYYY-MM-DD). Defaults to today. Cannot be more than 3 months in the future.`, + }, + { + name: 'payroll_types', + type: 'string', + required: false, + description: `Comma-separated payroll types to include: regular, transition`, + }, + { + name: 'start_date', + type: 'string', + required: false, + description: `Filter pay periods starting on or after this date (YYYY-MM-DD). Defaults to 6 months ago. Must be within 1 year of end_date.`, + }, + ], + }, + { + name: 'gustomcp_list_pay_schedule_assignments', + description: `Show which employees are assigned to which pay schedules.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_pay_schedules', + description: `List all pay schedules for the company, showing frequency and schedule UUID.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { name: 'page', type: 'integer', required: false, description: `Page number for pagination` }, + { name: 'per', type: 'integer', required: false, description: `Number of items per page` }, + ], + }, + { + name: 'gustomcp_list_payroll_blockers', + description: `Identify issues preventing a payroll from being processed, such as missing setup or documents.`, + params: [ + { + name: 'payroll_uuid', + type: 'string', + required: true, + description: `The unique identifier (UUID) for the payroll to check blockers for`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, + { + name: 'gustomcp_list_payrolls', + description: `List all payroll runs for the company with optional filtering by type, date, and status.`, + params: [ + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + { + name: 'date_filter_by', + type: 'string', + required: false, + description: `Specifies which date field to use when filtering with start_date and end_date. Only applies to regular processed payrolls. Defaults to pay period if not provided. Valid value is check_date.`, + }, + { + name: 'end_date', + type: 'string', + required: false, + description: `Filters where the pay period ends on or before this date (YYYY-MM-DD). Cannot be more than 3 months in the future and must be within 1 year of start_date.`, + }, + { + name: 'include', + type: 'string', + required: false, + description: `Comma-separated: taxes, totals, payroll_status_meta, risk_blockers, reversals`, + }, + { + name: 'page', + type: 'integer', + required: false, + description: `The page that is requested. When unspecified, will load all objects unless endpoint forces pagination.`, + }, + { + name: 'payroll_types', + type: 'string', + required: false, + description: `Comma-separated: regular,off_cycle,external`, + }, + { + name: 'per', + type: 'integer', + required: false, + description: `Number of objects per page. For majority of endpoints will default to 25.`, + }, + { + name: 'processing_statuses', + type: 'string', + required: false, + description: `Comma-separated: processed,unprocessed`, + }, + { + name: 'sort_by', + type: 'string', + required: false, + description: `Sort field: pay_period or check_date`, + }, + { + name: 'sort_order', + type: 'string', + required: false, + description: `Sort payrolls in ascending (asc) or descending (desc) chronological order. Defaults to asc.`, + }, + { + name: 'start_date', + type: 'string', + required: false, + description: `Filters where the pay period starts on or after this date (YYYY-MM-DD). Must be within 1 year of end_date.`, + }, + ], + }, + { + name: 'gustomcp_list_time_records', + description: `List time records for the company over a pay period. Requires pay_period with start and end dates.`, + params: [ + { + name: 'pay_period', + type: 'object', + required: true, + description: `Date range to query. Pass as an object with start_date and end_date in YYYY-MM-DD format.`, + }, + { + name: '_context', + type: 'string', + required: false, + description: `The original user question or request that prompted this tool call`, + }, + ], + }, +] diff --git a/src/data/agent-connectors/jotformmcp.ts b/src/data/agent-connectors/jotformmcp.ts new file mode 100644 index 000000000..4914f2304 --- /dev/null +++ b/src/data/agent-connectors/jotformmcp.ts @@ -0,0 +1,138 @@ +import type { Tool } from '../../types/agent-connectors' + +export const tools: Tool[] = [ + { + name: 'jotformmcp_analyze_submissions', + description: `Perform AI-powered analysis on one or more forms' submissions using a natural-language query.`, + params: [ + { + name: 'analysisQuery', + type: 'string', + required: true, + description: `A natural-language query describing the desired analysis. Examples: "What are the most common responses?", "Show submission trends by month", "Analyze sentiment in feedback", "Give me a statistical breakdown of all answers".`, + }, + { + name: 'formIDs', + type: 'array', + required: true, + description: `Form IDs whose submissions will be analyzed. Provide a single form ID by default. Only supply more than one ID when the user explicitly requests cross-form comparison or combined analysis. Use the search_asset tool first if you need to find the form ID.`, + }, + { + name: 'limit', + type: 'number', + required: true, + description: `Maximum number of submissions to include in the analysis. Higher values provide more comprehensive results but increase processing time.`, + }, + ], + }, + { + name: 'jotformmcp_assign_form', + description: `Assign a form to a user by email address with an optional message.`, + params: [ + { + name: 'assignee_email', + type: 'string', + required: true, + description: `The email address to assign the form to`, + }, + { + name: 'assignee_message', + type: 'string', + required: true, + description: `The message to assign the form to. This will be used in the email that will be sent to the assignee.`, + }, + { + name: 'assignee_name', + type: 'string', + required: true, + description: `The name of the assignee. This will be used in the email that will be sent to the assignee.`, + }, + { + name: 'form_id', + type: 'string', + required: true, + description: `The ID of the form to assign`, + }, + ], + }, + { + name: 'jotformmcp_create_form', + description: `Create a new Jotform form based on a natural-language description.`, + params: [ + { + name: 'description', + type: 'string', + required: true, + description: `Description of the form to create`, + }, + ], + }, + { + name: 'jotformmcp_edit_form', + description: `Edit an existing form using a natural-language instruction.`, + params: [ + { + name: 'description', + type: 'string', + required: true, + description: `High-level natural-language instruction describing what to change (e.g., add/move/rename questions). Avoid specifying internal types or identifiers; another agent will infer the appropriate field types.`, + }, + { + name: 'form_id', + type: 'string', + required: true, + description: `The ID of the form to edit`, + }, + ], + }, + { + name: 'jotformmcp_fetch', + description: `Fetch metadata and information for a Jotform form by its ID or URL.`, + params: [ + { + name: 'id', + type: 'string', + required: true, + description: `The form id or the submission id to fetch information and metadata from`, + }, + ], + }, + { + name: 'jotformmcp_get_submissions', + description: `List submission IDs for a form with optional filters.`, + params: [ + { name: 'filter', type: 'object', required: true, description: `No description.` }, + { + name: 'form_id', + type: 'string', + required: true, + description: `The ID of the form to list submissions from`, + }, + ], + }, + { + name: 'jotformmcp_search', + description: `Search Jotform assets by query with optional filters, ordering, and limit.`, + params: [ + { name: 'filter', type: 'object', required: true, description: `No description.` }, + { + name: 'limit', + type: 'number', + required: true, + description: `Maximum items fetched per underlying request (default: 20).`, + }, + { + name: 'order_by', + type: 'string', + required: true, + description: `Sort order for the results. The default value is "last_activity", only use another option if a sorting is really needed.`, + }, + { + name: 'user_query', + type: 'string', + required: true, + description: `A natural-language instruction describing what the user wants to find and list from assets.`, + }, + ], + }, +] diff --git a/src/data/agent-connectors/lucidmcp.ts b/src/data/agent-connectors/lucidmcp.ts new file mode 100644 index 000000000..3f8dfe0b1 --- /dev/null +++ b/src/data/agent-connectors/lucidmcp.ts @@ -0,0 +1,330 @@ +import type { Tool } from '../../types/agent-connectors' + +export const tools: Tool[] = [ + { + name: 'lucidmcp__lucid_create_embed', + description: `Create an embed for a Lucid document. Internal tool for MCP Apps extension only.`, + params: [ + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + ], + }, + { + name: 'lucidmcp__lucid_create_embed_session_token', + description: `Create a session token for an existing Lucid embed. Internal tool for MCP Apps extension only.`, + params: [ + { name: 'embed_id', type: 'string', required: true, description: `No description.` }, + { name: 'origin', type: 'string', required: true, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_fetch', + description: `Retrieve the structured content of a Lucid document by ID, including pages, blocks, and lines.`, + params: [ + { name: 'id', type: 'string', required: true, description: `No description.` }, + { name: 'page_index', type: 'string', required: false, description: `No description.` }, + { name: 'region_index', type: 'string', required: false, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_get_mcp_resource', + description: `Read a resource from the Lucid MCP server by its URI.`, + params: [ + { name: 'resource_uri', type: 'string', required: false, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_add_block', + description: `Add a new shape or block to a Lucid document with optional position, size, text, and style properties.`, + params: [ + { name: 'block_type', type: 'string', required: true, description: `No description.` }, + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + { name: 'bold', type: 'string', required: false, description: `No description.` }, + { name: 'container_id', type: 'string', required: false, description: `No description.` }, + { name: 'fill_color', type: 'string', required: false, description: `No description.` }, + { name: 'font_family', type: 'string', required: false, description: `No description.` }, + { name: 'font_size', type: 'string', required: false, description: `No description.` }, + { name: 'height', type: 'string', required: false, description: `No description.` }, + { name: 'highlight_color', type: 'string', required: false, description: `No description.` }, + { name: 'italic', type: 'string', required: false, description: `No description.` }, + { name: 'line_color', type: 'string', required: false, description: `No description.` }, + { name: 'line_width', type: 'string', required: false, description: `No description.` }, + { name: 'page_id', type: 'string', required: false, description: `No description.` }, + { name: 'rotation', type: 'string', required: false, description: `No description.` }, + { name: 'strike', type: 'string', required: false, description: `No description.` }, + { name: 'stroke_style', type: 'string', required: false, description: `No description.` }, + { name: 'subscript', type: 'string', required: false, description: `No description.` }, + { name: 'superscript', type: 'string', required: false, description: `No description.` }, + { name: 'text', type: 'string', required: false, description: `No description.` }, + { name: 'text_align', type: 'string', required: false, description: `No description.` }, + { name: 'text_color', type: 'string', required: false, description: `No description.` }, + { name: 'text_v_align', type: 'string', required: false, description: `No description.` }, + { name: 'underline', type: 'string', required: false, description: `No description.` }, + { name: 'width', type: 'string', required: false, description: `No description.` }, + { name: 'x', type: 'number', required: false, description: `No description.` }, + { name: 'y', type: 'number', required: false, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_add_line', + description: `Add a new line or connector to a Lucid document, optionally linking two shapes.`, + params: [ + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + { name: 'bold', type: 'string', required: false, description: `No description.` }, + { + name: 'endpoint1_auto_link', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint1_position_x', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint1_position_y', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint1_shape_id', + type: 'string', + required: false, + description: `No description.`, + }, + { name: 'endpoint1_style', type: 'string', required: false, description: `No description.` }, + { name: 'endpoint1_x', type: 'string', required: false, description: `No description.` }, + { name: 'endpoint1_y', type: 'string', required: false, description: `No description.` }, + { + name: 'endpoint2_auto_link', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint2_position_x', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint2_position_y', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint2_shape_id', + type: 'string', + required: false, + description: `No description.`, + }, + { name: 'endpoint2_style', type: 'string', required: false, description: `No description.` }, + { name: 'endpoint2_x', type: 'string', required: false, description: `No description.` }, + { name: 'endpoint2_y', type: 'string', required: false, description: `No description.` }, + { name: 'font_family', type: 'string', required: false, description: `No description.` }, + { name: 'font_size', type: 'string', required: false, description: `No description.` }, + { name: 'highlight_color', type: 'string', required: false, description: `No description.` }, + { name: 'italic', type: 'string', required: false, description: `No description.` }, + { name: 'line_color', type: 'string', required: false, description: `No description.` }, + { name: 'line_shape', type: 'string', required: false, description: `No description.` }, + { name: 'line_width', type: 'string', required: false, description: `No description.` }, + { name: 'page_id', type: 'string', required: false, description: `No description.` }, + { name: 'strike', type: 'string', required: false, description: `No description.` }, + { name: 'stroke_style', type: 'string', required: false, description: `No description.` }, + { name: 'subscript', type: 'string', required: false, description: `No description.` }, + { name: 'superscript', type: 'string', required: false, description: `No description.` }, + { name: 'text', type: 'string', required: false, description: `No description.` }, + { name: 'text_color', type: 'string', required: false, description: `No description.` }, + { name: 'underline', type: 'string', required: false, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_create_diagram_from_specification', + description: `Create a Lucid document from a Standard Import JSON specification (.lucid file format).`, + params: [ + { name: 'product', type: 'string', required: true, description: `No description.` }, + { + name: 'standard_import_json', + type: 'string', + required: true, + description: `No description.`, + }, + { name: 'title', type: 'string', required: true, description: `No description.` }, + { + name: 'use_assisted_layout', + type: 'boolean', + required: false, + description: `No description.`, + }, + ], + }, + { + name: 'lucidmcp_lucid_create_document_share_link', + description: `Generate a share link for a Lucid document with configurable permissions and optional expiry.`, + params: [ + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + { name: 'role', type: 'string', required: true, description: `No description.` }, + { name: 'allow_anonymous', type: 'boolean', required: false, description: `No description.` }, + { name: 'expires', type: 'string', required: false, description: `No description.` }, + { + name: 'restrict_to_account', + type: 'boolean', + required: false, + description: `No description.`, + }, + ], + }, + { + name: 'lucidmcp_lucid_create_mind_map', + description: `Create a Lucid document containing a mind map from structured node data.`, + params: [ + { name: 'nodes', type: 'array', required: true, description: `No description.` }, + { name: 'title', type: 'string', required: true, description: `No description.` }, + { name: 'product', type: 'string', required: false, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_create_org_chart', + description: `Create a Lucidchart document containing an org chart from a list of nodes with parent relationships.`, + params: [ + { name: 'nodes', type: 'array', required: true, description: `No description.` }, + { name: 'title', type: 'string', required: true, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_create_sequence_diagram', + description: `Create a Lucid document containing a UML sequence diagram from PlantUML markup.`, + params: [ + { name: 'markup', type: 'string', required: true, description: `No description.` }, + { name: 'product', type: 'string', required: true, description: `No description.` }, + { name: 'title', type: 'string', required: true, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_delete_items', + description: `Delete one or more blocks or lines from a Lucid document by item ID.`, + params: [ + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + { name: 'item_ids', type: 'array', required: true, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_edit_item', + description: `Edit an existing block or line in a Lucid document — update position, size, text, or style.`, + params: [ + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + { name: 'item_id', type: 'string', required: true, description: `No description.` }, + { name: 'bold', type: 'string', required: false, description: `No description.` }, + { + name: 'endpoint1_position_x', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint1_position_y', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint1_shape_id', + type: 'string', + required: false, + description: `No description.`, + }, + { name: 'endpoint1_x', type: 'string', required: false, description: `No description.` }, + { name: 'endpoint1_y', type: 'string', required: false, description: `No description.` }, + { + name: 'endpoint2_position_x', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint2_position_y', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'endpoint2_shape_id', + type: 'string', + required: false, + description: `No description.`, + }, + { name: 'endpoint2_x', type: 'string', required: false, description: `No description.` }, + { name: 'endpoint2_y', type: 'string', required: false, description: `No description.` }, + { name: 'fill_color', type: 'string', required: false, description: `No description.` }, + { name: 'font_family', type: 'string', required: false, description: `No description.` }, + { name: 'font_size', type: 'string', required: false, description: `No description.` }, + { name: 'height', type: 'string', required: false, description: `No description.` }, + { name: 'highlight_color', type: 'string', required: false, description: `No description.` }, + { name: 'italic', type: 'string', required: false, description: `No description.` }, + { name: 'line_color', type: 'string', required: false, description: `No description.` }, + { name: 'line_width', type: 'string', required: false, description: `No description.` }, + { name: 'rotation', type: 'string', required: false, description: `No description.` }, + { name: 'strike', type: 'string', required: false, description: `No description.` }, + { name: 'stroke_style', type: 'string', required: false, description: `No description.` }, + { name: 'subscript', type: 'string', required: false, description: `No description.` }, + { name: 'superscript', type: 'string', required: false, description: `No description.` }, + { name: 'text', type: 'string', required: false, description: `No description.` }, + { name: 'text_align', type: 'string', required: false, description: `No description.` }, + { name: 'text_color', type: 'string', required: false, description: `No description.` }, + { name: 'text_v_align', type: 'string', required: false, description: `No description.` }, + { name: 'underline', type: 'string', required: false, description: `No description.` }, + { name: 'width', type: 'string', required: false, description: `No description.` }, + { name: 'x', type: 'string', required: false, description: `No description.` }, + { name: 'y', type: 'string', required: false, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_export_document_as_png', + description: `Export a page of a Lucid document as a PNG image.`, + params: [ + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + { name: 'page', type: 'integer', required: false, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_lucid_fetch_item_image', + description: `Fetch the source image attached to a specific item in a Lucid document.`, + params: [ + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + { name: 'item_id', type: 'string', required: true, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_search', + description: `Search for Lucid documents by keyword with optional filters for product type and date range. Returns up to 200 results.`, + params: [ + { name: 'query', type: 'string', required: true, description: `No description.` }, + { name: 'created_end_time', type: 'string', required: false, description: `No description.` }, + { + name: 'created_start_time', + type: 'string', + required: false, + description: `No description.`, + }, + { + name: 'last_modified_after', + type: 'string', + required: false, + description: `No description.`, + }, + { name: 'product', type: 'string', required: false, description: `No description.` }, + ], + }, + { + name: 'lucidmcp_share_document_with_collaborators', + description: `Share a Lucid document with collaborators by granting them access via email.`, + params: [ + { name: 'document_id', type: 'string', required: true, description: `No description.` }, + { name: 'emails', type: 'array', required: true, description: `No description.` }, + { name: 'role', type: 'string', required: false, description: `No description.` }, + ], + }, +] diff --git a/src/data/agent-connectors/makemcp.ts b/src/data/agent-connectors/makemcp.ts new file mode 100644 index 000000000..80cc78c1f --- /dev/null +++ b/src/data/agent-connectors/makemcp.ts @@ -0,0 +1,2202 @@ +import type { Tool } from '../../types/agent-connectors' + +export const tools: Tool[] = [ + { + name: 'makemcp_app_documentation_get', + description: `Retrieves markdown documentation for the specific Make App. Use when configuring Make Apps and Modules and when you need to learn more about the available capabilities.`, + params: [ + { + name: 'appName', + type: 'string', + required: true, + description: `Name of the App to get the documentation for.`, + }, + ], + }, + { + name: 'makemcp_app-module_get', + description: `Retrieves a single Module from the given App in the given Organization.`, + params: [ + { + name: 'appName', + type: 'string', + required: true, + description: `Name of the App from which Module should be retrieved.`, + }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `Version of the App from which Module should be retrieved.`, + }, + { + name: 'moduleName', + type: 'string', + required: true, + description: `Name of the Module to retrieve.`, + }, + { + name: 'organizationId', + type: 'integer', + required: true, + description: `The ID of the Organization to get App Module for.`, + }, + { + name: 'format', + type: 'string', + required: false, + description: `Format of the output allowing transformation before being returned.`, + }, + ], + }, + { + name: 'makemcp_app-modules_list', + description: `Retrieves a list of Modules available for the given App in the given Organization and Team.`, + params: [ + { + name: 'appName', + type: 'string', + required: true, + description: `Name of the App from which Modules should be listed.`, + }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `Version of the App from which Modules should be listed.`, + }, + { + name: 'organizationId', + type: 'integer', + required: true, + description: `The ID of the Organization to list App Modules for.`, + }, + { + name: 'usage', + type: 'string', + required: false, + description: `Optionally applies usage filter to return only modules that are relevant for it.`, + }, + ], + }, + { + name: 'makemcp_apps_recommend', + description: `Based on the user's intention, recommend applications that can assist in achieving their goals. This tool should provide a list of applications that are relevant to the user's needs, including their names and versions.`, + params: [ + { + name: 'intention', + type: 'string', + required: true, + description: `The intention for which the recommended apps are requested. This should be a clear and concise description of the user's needs or goals.`, + }, + ], + }, + { + name: 'makemcp_connection-metadata_get', + description: `Retrieves metadata of the given connection, or returns an error when the connection type doesn't exist.`, + params: [ + { + name: 'typeName', + type: 'string', + required: true, + description: `Name of the Connection to retrieve metadata for.`, + }, + ], + }, + { + name: 'makemcp_connections_get', + description: `Get connection (connections): Get details of a specific connection.`, + params: [ + { + name: 'connectionId', + type: 'number', + required: true, + description: `The connection ID to get`, + }, + ], + }, + { + name: 'makemcp_connections_list', + description: `List connections (connections): List connections for a team.`, + params: [ + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID to list connections for`, + }, + { + name: 'scopes', + type: 'object', + required: false, + description: `Scopes that are required on the requested connection types. Each connection type is a key in this object with an array of scopes as the value.`, + }, + { name: 'type', type: 'array', required: false, description: `Filter by connection type` }, + ], + }, + { + name: 'makemcp_credential-requests_create', + description: `Create credential request (credential-requests): Create a credential request for the currently authenticated user to set up connections and keys. This will return a URL where the user can authorize the credentials, so that they can be used in scenarios.`, + params: [ + { + name: 'credentials', + type: 'array', + required: true, + description: `Array of app/module selections to derive credentials from.`, + }, + { name: 'teamId', type: 'number', required: true, description: `Team ID` }, + { + name: 'description', + type: 'string', + required: false, + description: `Description of the Request which will be displayed to the End Users who open it.`, + }, + { + name: 'name', + type: 'string', + required: false, + description: `Name of the Request which will be displayed to the End Users who open it.`, + }, + ], + }, + { + name: 'makemcp_credential-requests_create-by-credentials', + description: `Create credential request by connection/key types (credential-requests): Create a credential request for one or more connections (OAuth) and/or keys (API keys) by their type identifiers (e.g. "google", "slack", "apikeyauth"). Use this when you know the exact connection or key types needed. The response includes the created request, an array of credentials associated with the request, and a publicUri where the end-user must go to authorize the requested credentials. At least one connection or one key must be provided.`, + params: [ + { + name: 'teamId', + type: 'number', + required: true, + description: `The numeric ID of the Make team where the connections/keys will be created once authorized.`, + }, + { + name: 'connections', + type: 'array', + required: false, + description: `Array of OAuth or basic-auth connections to request. Each item needs at least a "type" (e.g. "google", "slack", "github").`, + }, + { + name: 'description', + type: 'string', + required: false, + description: `Instructions or context for the end-user, displayed on the authorization page.`, + }, + { + name: 'keys', + type: 'array', + required: false, + description: `Array of API keys to request. Each item needs at least a "type" (e.g. "apikeyauth", "basicauth").`, + }, + { + name: 'name', + type: 'string', + required: false, + description: `Human-readable name for the credential request, displayed to the end-user who will authorize it.`, + }, + ], + }, + { + name: 'makemcp_credential-requests_credential-decline', + description: `Decline credential (credential-requests): Decline a credential authorization request by ID, setting its status to "declined" and preventing it from being authorized. An optional reason can be provided to explain the decision. This operation is idempotent - declining an already-declined credential has no additional effect.`, + params: [ + { + name: 'credentialId', + type: 'string', + required: true, + description: `The credential ID to decline`, + }, + { + name: 'reason', + type: 'string', + required: false, + description: `Optional reason for declining`, + }, + ], + }, + { + name: 'makemcp_credential-requests_credential-delete', + description: `Delete credential (credential-requests): Delete a credential (e.g., revoke OAuth tokens or remove stored API keys) and reset its state to pending. Use this when a credential needs re-authorization with updated permissions, tokens have become stale, or you want to force re-authentication. After deletion, the credential can be authorized again through the normal flow.`, + params: [ + { + name: 'credentialId', + type: 'string', + required: true, + description: `The credential ID to delete`, + }, + ], + }, + { + name: 'makemcp_credential-requests_delete', + description: `Delete credential request (credential-requests): Permanently delete a credential request and all associated credentials (connections and API keys) by ID. Any scenarios using connections from this request will lose access to the corresponding services. This action cannot be undone.`, + params: [ + { + name: 'requestId', + type: 'string', + required: true, + description: `The credential request ID to delete`, + }, + ], + }, + { + name: 'makemcp_credential-requests_extend-connection', + description: `Extend connection OAuth scopes (credential-requests): Add new OAuth scopes to an existing connection. Use this when a connection exists but lacks the permissions (scopes) needed for a specific operation. Creates a credential request that the end-user must authorize via the returned publicUri to grant the additional scopes. Fails if all requested scopes are already present on the connection.`, + params: [ + { + name: 'connectionId', + type: 'number', + required: true, + description: `The numeric ID of an existing Make connection whose OAuth scopes need to be expanded.`, + }, + { + name: 'scopes', + type: 'array', + required: true, + description: `One or more new OAuth scope strings to add to the connection. At least one scope must be new (not already granted).`, + }, + ], + }, + { + name: 'makemcp_credential-requests_get', + description: `Get credential request details (credential-requests): Retrieve detailed information about a specific credential request by its ID. Returns all associated credentials with their authorization status, provider configuration, user details, and authorization URLs for pending credentials. Use this to check the state of credentials within a request.`, + params: [ + { + name: 'requestId', + type: 'string', + required: true, + description: `The credential request ID to get details for`, + }, + ], + }, + { + name: 'makemcp_credential-requests_list', + description: `List credential requests (credential-requests): Retrieve a list of credential requests. Each request can contain multiple credentials (connections and API keys). Filter by team, user, provider, status, or name to find specific requests.`, + params: [ + { name: 'teamId', type: 'number', required: true, description: `Filter by team ID` }, + { + name: 'makeProviderId', + type: 'string', + required: false, + description: `Filter by Make provider ID`, + }, + { name: 'name', type: 'string', required: false, description: `Filter by name` }, + { name: 'status', type: 'string', required: false, description: `Filter by status` }, + { name: 'userId', type: 'number', required: false, description: `Filter by user ID` }, + ], + }, + { + name: 'makemcp_credential-requests_list-app-modules-with-creden', + description: `List app modules with credentials (credential-requests): List all modules of a given Make app (and version) that require credentials, along with the required credential type and OAuth scopes. Use this to discover which modules exist for an app before constructing a credential request — the returned \`id\` values are what you pass in \`credentials[].appModules\` for \`credential-requests_create\`. For custom/SDK apps, prefix the app name with \`app#\` (e.g. \`app#my-custom-app\`).`, + params: [ + { + name: 'appName', + type: 'string', + required: true, + description: `App name (e.g. \`slack\`). For custom/SDK apps, prefix with \`app#\` (e.g. \`app#my-custom-app\`).`, + }, + { + name: 'appVersion', + type: 'string', + required: true, + description: `App major version number (e.g. \`4\`), or the literal string \`"latest"\`.`, + }, + ], + }, + { + name: 'makemcp_custom_apps_connections_configure', + description: `Create new connection or update existing connection.`, + params: [ + { + name: 'mode', + type: 'string', + required: true, + description: `Specify whether to create a new connection or update an existing one`, + }, + { + name: 'appName', + type: 'string', + required: false, + description: `Required for CREATE mode. The name of the app to create the connection for`, + }, + { + name: 'connectionName', + type: 'string', + required: false, + description: `Required for UPDATE mode only. The connection ID (auto-generated during creation, typically appName or appName with suffix)`, + }, + { + name: 'label', + type: 'string', + required: false, + description: `Required for CREATE mode. The title of the connection, visible in the scenario builder. Will update when in UPDATE mode`, + }, + { + name: 'sections', + type: 'object', + required: false, + description: `Configure connection sections: api, parameters, scopes, scope. Each section value can be a JSON value (object/array) or a JSONC string (to preserve comments). Example: {"api": {"baseUrl": "https://api.example.com"}, "parameters": [{"name": "apikey", "type": "text", "required": true}]}`, + }, + { + name: 'type', + type: 'string', + required: false, + description: `Required for CREATE mode. The type of the connection`, + }, + ], + }, + { + name: 'makemcp_custom_apps_connections_delete', + description: `Delete a connection`, + params: [ + { + name: 'connectionName', + type: 'string', + required: true, + description: `The name of the connection`, + }, + ], + }, + { + name: 'makemcp_custom_apps_connections_fetch', + description: `List all connections for an app or get metadata for a specific connection with optional sections.`, + params: [ + { + name: 'appName', + type: 'string', + required: false, + description: `The name of the app. Required when listing all connections for an app.`, + }, + { + name: 'connectionName', + type: 'string', + required: false, + description: `The connection ID (often identical to the app name). If provided, gets this specific connection.`, + }, + { + name: 'sections', + type: 'array', + required: false, + description: `Optional sections to include when fetching a specific connection.`, + }, + ], + }, + { + name: 'makemcp_custom_apps_create', + description: `Create new custom app. This is is the first step in creating a new custom app for Make.com Note that the "name" that you pass in is just a prefix and the "name" in the response is the identifier for the app that needs to be passed in later requests`, + params: [ + { + name: 'label', + type: 'string', + required: true, + description: `The title of your custom app. This field is required, and users will see it in the app list.`, + }, + { + name: 'description', + type: 'string', + required: false, + description: `Optional short description of your custom app.`, + }, + { + name: 'name', + type: 'string', + required: false, + description: `The prefix for the app id, the created app will contain a random string postfix, which should be included when referencing the app for later operations`, + }, + { + name: 'theme', + type: 'string', + required: false, + description: `The color that Make uses for your custom app modules and forms.`, + }, + ], + }, + { + name: 'makemcp_custom_apps_delete', + description: `Delete a custom app by name and version`, + params: [ + { name: 'name', type: 'string', required: true, description: `The name of the app` }, + { name: 'version', type: 'number', required: true, description: `The version of the app` }, + ], + }, + { + name: 'makemcp_custom_apps_fetch', + description: `List existing custom apps or get metadata for a specific app with optional sections and/or docs.`, + params: [ + { + name: 'appName', + type: 'string', + required: false, + description: `The name of the app. If not provided, all apps will be listed.`, + }, + { + name: 'appVersion', + type: 'number', + required: false, + description: `The version of the app. Required only when appName is provided.`, + }, + { + name: 'includeDocs', + type: 'boolean', + required: false, + description: `Whether to include app documentation (readme) in the response.`, + }, + { + name: 'sections', + type: 'array', + required: false, + description: `Optional sections to include when fetching a specific app. Available sections: base, groups, install, installSpec.`, + }, + ], + }, + { + name: 'makemcp_custom_apps_functions_create', + description: `Create a new function`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { name: 'name', type: 'string', required: true, description: `The name of the function` }, + ], + }, + { + name: 'makemcp_custom_apps_functions_delete', + description: `Delete a function`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { + name: 'functionName', + type: 'string', + required: true, + description: `The name of the function`, + }, + ], + }, + { + name: 'makemcp_custom_apps_functions_fetch', + description: `List all functions for an app or get a specific function by name`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of the app` }, + { name: 'appVersion', type: 'number', required: true, description: `The version of the app` }, + { + name: 'functionName', + type: 'string', + required: false, + description: `The name of the function. If not provided, all functions will be listed.`, + }, + ], + }, + { + name: 'makemcp_custom_apps_functions_get_code', + description: `Get function code`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { + name: 'functionName', + type: 'string', + required: true, + description: `The name of the function`, + }, + ], + }, + { + name: 'makemcp_custom_apps_functions_get_test', + description: `Get function test code`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { + name: 'functionName', + type: 'string', + required: true, + description: `The name of the function`, + }, + ], + }, + { + name: 'makemcp_custom_apps_functions_set_code', + description: `Set/update function code`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { name: 'code', type: 'string', required: true, description: `The function code` }, + { + name: 'functionName', + type: 'string', + required: true, + description: `The name of the function`, + }, + ], + }, + { + name: 'makemcp_custom_apps_functions_set_test', + description: `Set/update function test code`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { + name: 'functionName', + type: 'string', + required: true, + description: `The name of the function`, + }, + { name: 'test', type: 'string', required: true, description: `The test code` }, + ], + }, + { + name: 'makemcp_custom_apps_get_example', + description: `Retrieve an example for a specific tool input.`, + params: [ + { + name: 'tool', + type: 'string', + required: true, + description: `Name of tool, excluding the custom_apps_ prefix. only connections_configure is available.`, + }, + { name: 'example_key', type: 'string', required: false, description: `No description.` }, + ], + }, + { + name: 'makemcp_custom_apps_modules_configure', + description: `Create new modules or update existing modules and their sections in a single operation.`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { + name: 'mode', + type: 'string', + required: true, + description: `Specify whether to create a new module or update an existing one`, + }, + { + name: 'moduleName', + type: 'string', + required: true, + description: `The name (id) of the module`, + }, + { + name: 'connection', + type: 'string', + required: false, + description: `The name (id) of the connection to link to this module`, + }, + { + name: 'description', + type: 'string', + required: false, + description: `Short description of the module`, + }, + { + name: 'label', + type: 'string', + required: false, + description: `Required for CREATE mode. The title of the module, visible to users in the scenario builder`, + }, + { + name: 'sections', + type: 'object', + required: false, + description: `Configure module sections: communication, mappable_parameters, interface, scope, epoch, etc. Each section value can be a JSON value (object/array) or a JSONC string (to preserve comments). Example: {"communication": {"url": "/api/endpoint", "method": "GET"}, "mappable_parameters": [{"name": "id", "type": "text", "required": true}]}`, + }, + { + name: 'typeId', + type: 'number', + required: false, + description: `Required for CREATE mode. The type ID of the module - see description for mapping`, + }, + ], + }, + { + name: 'makemcp_custom_apps_modules_delete', + description: `Delete a module`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { name: 'moduleName', type: 'string', required: true, description: `The name of the module` }, + ], + }, + { + name: 'makemcp_custom_apps_modules_fetch', + description: `List all modules for an app or get metadata for a specific module with optional sections.`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of the app` }, + { name: 'appVersion', type: 'number', required: true, description: `The version of the app` }, + { + name: 'moduleName', + type: 'string', + required: false, + description: `The name of the module. If not provided, all modules will be listed.`, + }, + { + name: 'sections', + type: 'array', + required: false, + description: `Optional sections to include when fetching a specific module. Available sections: communication, mappable_parameters, interface, scope, epoch, samples, static_parameters.`, + }, + ], + }, + { + name: 'makemcp_custom_apps_rpcs_configure', + description: `Create new RPC or update existing RPC and their sections in a single operation.`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { + name: 'mode', + type: 'string', + required: true, + description: `Specify whether to create a new RPC or update an existing one`, + }, + { + name: 'rpcName', + type: 'string', + required: true, + description: `For CREATE mode: The identifier to assign to the new RPC. For UPDATE mode: The existing RPC identifier to modify.`, + }, + { name: 'connection', type: 'string', required: false, description: `Connection name` }, + { + name: 'label', + type: 'string', + required: false, + description: `The title of the RPC visible in the scenario builder`, + }, + { + name: 'sections', + type: 'object', + required: false, + description: `Configure RPC sections: api, parameters. Each section value can be a JSON value (object/array) or a JSONC string (to preserve comments). Example: {"api": {"url": "/api/endpoint", "method": "POST"}, "parameters": [{"name": "param1", "type": "text", "required": true}]}`, + }, + ], + }, + { + name: 'makemcp_custom_apps_rpcs_delete', + description: `Delete an RPC`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { name: 'rpcName', type: 'string', required: true, description: `The name of the RPC` }, + ], + }, + { + name: 'makemcp_custom_apps_rpcs_fetch', + description: `List all RPCs for an app or get metadata for a specific RPC with optional sections.`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { + name: 'rpcName', + type: 'string', + required: false, + description: `The name of the RPC. If not provided, all RPCs will be listed.`, + }, + { + name: 'sections', + type: 'array', + required: false, + description: `Optional sections to include when fetching a specific RPC. Available sections: api, parameters.`, + }, + ], + }, + { + name: 'makemcp_custom_apps_rpcs_test', + description: `Test an RPC with provided data and schema`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { name: 'data', type: 'object', required: true, description: `Test data object` }, + { name: 'rpcName', type: 'string', required: true, description: `The name of the RPC` }, + { name: 'schema', type: 'array', required: true, description: `Schema definition array` }, + ], + }, + { + name: 'makemcp_custom_apps_set_base', + description: `Set the base section of a custom app. This is the structure all modules and remote procedures inherit from.`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { + name: 'base', + type: 'string', + required: true, + description: `The base section data. Can be a JSON object or a JSONC string (to preserve comments). Key properties: baseUrl (required, the base URL prefix for modules), headers (optional, object of header key-value pairs), qs (optional, query string key-value pairs), log (optional, { sanitize: string[] } for redacting sensitive paths).`, + }, + ], + }, + { + name: 'makemcp_custom_apps_set_docs', + description: `Set app documentation (readme)`, + params: [ + { + name: 'docs', + type: 'string', + required: true, + description: `The documentation content in markdown format`, + }, + { name: 'name', type: 'string', required: true, description: `The name of the app` }, + { name: 'version', type: 'number', required: true, description: `The version of the app` }, + ], + }, + { + name: 'makemcp_custom_apps_set_groups', + description: `Set the groups section of an custom app. This defines module groupings for the app.`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of an app.` }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `The version of the app`, + }, + { name: 'groups', type: 'array', required: true, description: `No description.` }, + ], + }, + { + name: 'makemcp_custom_apps_update', + description: `Update an existing custom app`, + params: [ + { name: 'name', type: 'string', required: true, description: `The name of the app` }, + { name: 'version', type: 'number', required: true, description: `The version of the app` }, + { + name: 'description', + type: 'string', + required: false, + description: `The description of the app`, + }, + { + name: 'label', + type: 'string', + required: false, + description: `The label of the app visible in the scenario builder`, + }, + { name: 'theme', type: 'string', required: false, description: `The color of the app logo` }, + ], + }, + { + name: 'makemcp_custom_apps_webhooks_create', + description: `Create a new webhook for an app`, + params: [ + { name: 'appName', type: 'string', required: true, description: `The name of the app` }, + { + name: 'label', + type: 'string', + required: true, + description: `The label of the webhook visible in the scenario builder`, + }, + { name: 'type', type: 'string', required: true, description: `The type of the webhook` }, + ], + }, + { + name: 'makemcp_custom_apps_webhooks_delete', + description: `Delete a webhook`, + params: [ + { + name: 'webhookName', + type: 'string', + required: true, + description: `The name of the webhook`, + }, + ], + }, + { + name: 'makemcp_custom_apps_webhooks_fetch', + description: `List all webhooks for an app or get metadata for a specific webhook with optional sections.`, + params: [ + { + name: 'appName', + type: 'string', + required: false, + description: `The name of the app. Required when listing all webhooks.`, + }, + { + name: 'sections', + type: 'array', + required: false, + description: `Optional sections to include when fetching a specific webhook. Available sections: api, parameters, attach, detach, scope.`, + }, + { + name: 'webhookName', + type: 'string', + required: false, + description: `The webhook ID (often identical to the app name). If provided, gets this specific webhook.`, + }, + ], + }, + { + name: 'makemcp_custom_apps_webhooks_set_section', + description: `Set a specific section of a webhook.`, + params: [ + { + name: 'body', + type: 'string', + required: true, + description: `The section data to set. Can be a JSON object or a JSONC string (to preserve comments).`, + }, + { name: 'section', type: 'string', required: true, description: `The section to set` }, + { + name: 'webhookName', + type: 'string', + required: true, + description: `The name of the webhook`, + }, + ], + }, + { + name: 'makemcp_custom_apps_webhooks_update', + description: `Update an existing webhook`, + params: [ + { + name: 'webhookName', + type: 'string', + required: true, + description: `The name of the webhook`, + }, + { + name: 'label', + type: 'string', + required: false, + description: `The label of the webhook visible in the scenario builder`, + }, + ], + }, + { + name: 'makemcp_data-store-records_create', + description: `Create data store record (data-store-records): Create a new record in a data store.`, + params: [ + { name: 'data', type: 'object', required: true, description: `Record data` }, + { + name: 'dataStoreId', + type: 'number', + required: true, + description: `The data store ID to create the record in`, + }, + { + name: 'key', + type: 'string', + required: false, + description: `Unique key for the record (optional)`, + }, + ], + }, + { + name: 'makemcp_data-store-records_delete', + description: `Delete data store records (data-store-records): Delete specific records from a data store by keys.`, + params: [ + { + name: 'dataStoreId', + type: 'number', + required: true, + description: `The data store ID to delete records from`, + }, + { + name: 'keys', + type: 'array', + required: true, + description: `Array of record keys to delete`, + }, + ], + }, + { + name: 'makemcp_data-store-records_list', + description: `List data store records (data-store-records): List all records in a data store.`, + params: [ + { + name: 'dataStoreId', + type: 'number', + required: true, + description: `The data store ID to list records from`, + }, + { + name: 'limit', + type: 'number', + required: false, + description: `Maximum number of records to return`, + }, + ], + }, + { + name: 'makemcp_data-store-records_replace', + description: `Replace data store record (data-store-records): Replace an existing record in a data store or create if it doesn't exist.`, + params: [ + { name: 'data', type: 'object', required: true, description: `New record data` }, + { + name: 'dataStoreId', + type: 'number', + required: true, + description: `The data store ID containing the record`, + }, + { + name: 'key', + type: 'string', + required: true, + description: `Unique key of the record to replace`, + }, + ], + }, + { + name: 'makemcp_data-store-records_update', + description: `Update data store record (data-store-records): Update an existing record in a data store.`, + params: [ + { name: 'data', type: 'object', required: true, description: `Updated record data` }, + { + name: 'dataStoreId', + type: 'number', + required: true, + description: `The data store ID containing the record`, + }, + { + name: 'key', + type: 'string', + required: true, + description: `Unique key of the record to update`, + }, + ], + }, + { + name: 'makemcp_data-stores_create', + description: `Create data store (data-stores): Create a new data store.`, + params: [ + { + name: 'maxSizeMB', + type: 'number', + required: true, + description: `Maximum size in MB for the data store`, + }, + { name: 'name', type: 'string', required: true, description: `Name of the data store` }, + { + name: 'teamId', + type: 'number', + required: true, + description: `ID of the team to create the data store in`, + }, + { + name: 'datastructureId', + type: 'number', + required: false, + description: `ID of the data structure defining the record format`, + }, + ], + }, + { + name: 'makemcp_data-stores_delete', + description: `Delete data store (data-stores): Delete a data store.`, + params: [ + { + name: 'dataStoreId', + type: 'number', + required: true, + description: `The data store ID to delete`, + }, + ], + }, + { + name: 'makemcp_data-stores_get', + description: `Get data store (data-stores): Get data store details by ID.`, + params: [ + { + name: 'dataStoreId', + type: 'number', + required: true, + description: `The data store ID to retrieve`, + }, + ], + }, + { + name: 'makemcp_data-stores_list', + description: `List data stores (data-stores): List all data stores for a team.`, + params: [ + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID to filter data stores by`, + }, + ], + }, + { + name: 'makemcp_data-stores_update', + description: `Update data store (data-stores): Update a data store.`, + params: [ + { + name: 'dataStoreId', + type: 'number', + required: true, + description: `The data store ID to update`, + }, + { + name: 'datastructureId', + type: 'number', + required: false, + description: `New data structure ID`, + }, + { + name: 'maxSizeMB', + type: 'number', + required: false, + description: `New maximum size in MB for the data store`, + }, + { name: 'name', type: 'string', required: false, description: `New name for the data store` }, + ], + }, + { + name: 'makemcp_data-structures_create', + description: `Create data structure (data-structures): Create a new data structure.`, + params: [ + { + name: 'name', + type: 'string', + required: true, + description: `The name of the data structure. The maximum length of the name is 128 characters`, + }, + { + name: 'spec', + type: 'array', + required: true, + description: `Sets the data structure specification. Each item follows the Make Parameters Syntax.`, + }, + { + name: 'strict', + type: 'boolean', + required: true, + description: `Set to true to enforce strict validation of the data put in the data structure`, + }, + { + name: 'teamId', + type: 'number', + required: true, + description: `The unique ID of the team in which the data structure will be created`, + }, + ], + }, + { + name: 'makemcp_data-structures_delete', + description: `Delete data structure (data-structures): Delete a data structure.`, + params: [ + { + name: 'dataStructureId', + type: 'number', + required: true, + description: `The data structure ID to delete`, + }, + ], + }, + { + name: 'makemcp_data-structures_generate', + description: `Generates Data Structure Definition in Make Parameters Format from the sample data provided as input.`, + params: [ + { + name: 'data', + type: 'string', + required: true, + description: `The input data from which the specification should be generated. The content of this field should match the format specified in the 'type' field.`, + }, + { + name: 'type', + type: 'string', + required: false, + description: `The format of the input data from which the specification should be generated.`, + }, + ], + }, + { + name: 'makemcp_data-structures_get', + description: `Get data structure (data-structures): Get details of a specific data structure.`, + params: [ + { + name: 'dataStructureId', + type: 'number', + required: true, + description: `The data structure ID to retrieve`, + }, + ], + }, + { + name: 'makemcp_data-structures_list', + description: `List data structures (data-structures): List data structures for a team.`, + params: [ + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID to list data structures for`, + }, + ], + }, + { + name: 'makemcp_data-structures_update', + description: `Update data structure (data-structures): Update an existing data structure.`, + params: [ + { + name: 'dataStructureId', + type: 'number', + required: true, + description: `The data structure ID to update`, + }, + { + name: 'name', + type: 'string', + required: false, + description: `The name of the data structure. The maximum length of the name is 128 characters`, + }, + { + name: 'spec', + type: 'array', + required: false, + description: `Sets the data structure specification. Each item follows the Make Parameters Syntax.`, + }, + { + name: 'strict', + type: 'boolean', + required: false, + description: `Set to true to enforce strict validation of the data put in the data structure`, + }, + ], + }, + { + name: 'makemcp_enums_countries', + description: `List countries (enums): List all available countries.`, + params: [], + }, + { + name: 'makemcp_enums_regions', + description: `List regions (enums): List all available regions.`, + params: [], + }, + { + name: 'makemcp_enums_timezones', + description: `List timezones (enums): List all available timezones.`, + params: [], + }, + { + name: 'makemcp_executions_get', + description: `Get execution (executions): Get details of a specific execution.`, + params: [ + { + name: 'executionId', + type: 'string', + required: true, + description: `The execution ID to retrieve`, + }, + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID the execution belongs to`, + }, + ], + }, + { + name: 'makemcp_executions_get-detail', + description: `Get execution detail (executions): Get detailed result of a specific execution.`, + params: [ + { + name: 'executionId', + type: 'string', + required: true, + description: `The execution ID to retrieve`, + }, + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID the execution belongs to`, + }, + ], + }, + { + name: 'makemcp_executions_list', + description: `List executions (executions): List executions for a scenario.`, + params: [ + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID to list executions for`, + }, + { + name: 'from', + type: 'number', + required: false, + description: `Start timestamp for filtering`, + }, + { + name: 'status', + type: 'string', + required: false, + description: `Filter by execution status`, + }, + { name: 'to', type: 'number', required: false, description: `End timestamp for filtering` }, + ], + }, + { + name: 'makemcp_extract_blueprint_components', + description: `This tool analyzes a given Blueprint and extracts a list of various Connections, Keys, Hooks and other components that are required to be provided in order to map the Blueprint properly.`, + params: [ + { + name: 'blueprint', + type: 'object', + required: true, + description: `A blueprint of a Make Scenario.`, + }, + { + name: 'organizationId', + type: 'integer', + required: true, + description: `The ID of the Organization in which context the extraction should operate.`, + }, + { + name: 'teamId', + type: 'integer', + required: true, + description: `The ID of the Team in which context the extraction should operate.`, + }, + ], + }, + { + name: 'makemcp_extract_module_components', + description: `Extracts the list of Components required by the particular Module. Use to identify what Connections, Keys, Hooks and other resources are needed to work with the Module.`, + params: [ + { + name: 'appName', + type: 'string', + required: true, + description: `Name of the App to which the module belongs.`, + }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `Version of the App to which the module belongs.`, + }, + { + name: 'moduleName', + type: 'string', + required: true, + description: `The name of the module to extract components from.`, + }, + { + name: 'organizationId', + type: 'integer', + required: true, + description: `The ID of the Organization in which context the extraction should operate.`, + }, + { + name: 'teamId', + type: 'integer', + required: true, + description: `The ID of the Team in which context the extraction should operate.`, + }, + { + name: 'includeOptions', + type: 'boolean', + required: false, + description: `When enabled, the Tool will also include available options for each extracted component, which are especially useful when configuring a module with Scoped Connections.`, + }, + { + name: 'moduleIdOverride', + type: 'integer', + required: false, + description: `When extracting the Components from Module, an artificial single-module Blueprint is created to run the extraction on. By default, the generated Module ID is #1. This parameter allows overriding the generated value.`, + }, + ], + }, + { + name: 'makemcp_folders_create', + description: `Create folder (folders): Create a new folder.`, + params: [ + { name: 'name', type: 'string', required: true, description: `Name of the folder` }, + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID where the folder will be created`, + }, + ], + }, + { + name: 'makemcp_folders_delete', + description: `Delete folder (folders): Delete a folder.`, + params: [ + { name: 'folderId', type: 'number', required: true, description: `The folder ID to delete` }, + ], + }, + { + name: 'makemcp_folders_list', + description: `List folders (folders): List folders for a team.`, + params: [ + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID to list folders for`, + }, + ], + }, + { + name: 'makemcp_folders_update', + description: `Update folder (folders): Update an existing folder.`, + params: [ + { name: 'folderId', type: 'number', required: true, description: `The folder ID to update` }, + { name: 'name', type: 'string', required: false, description: `New name for the folder` }, + ], + }, + { + name: 'makemcp_hook-config_get', + description: `Retrieves the manifest and form configuration of a hook of the given type. Use this to understand what fields are required when configuring a hook.`, + params: [ + { + name: 'typeName', + type: 'string', + required: true, + description: `The type name of the hook (e.g. "slack-events", "gateway-webhook", "gateway-mailhook").`, + }, + { + name: 'format', + type: 'string', + required: false, + description: `Format of the output allowing transformation before being returned.`, + }, + ], + }, + { + name: 'makemcp_hook-metadata_get', + description: `Retrieves metadata of the given hook, or returns an error when the hook type doesn't exist.`, + params: [ + { + name: 'typeName', + type: 'string', + required: true, + description: `Name of the Hook to retrieve metadata for.`, + }, + ], + }, + { + name: 'makemcp_hooks_create', + description: `Create webhook/mailhook (hooks): Create a new webhook/mailhook.`, + params: [ + { name: 'name', type: 'string', required: true, description: `The name of the webhook` }, + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID where the hook will be created`, + }, + { + name: 'typeName', + type: 'string', + required: true, + description: `The hook type related to the app for which it will be created`, + }, + { + name: 'data', + type: 'object', + required: false, + description: `Additional data specific to the hook type`, + }, + ], + }, + { + name: 'makemcp_hooks_delete', + description: `Delete webhook/mailhook (hooks): Delete a webhook/mailhook.`, + params: [ + { name: 'hookId', type: 'number', required: true, description: `The hook ID to delete` }, + ], + }, + { + name: 'makemcp_hooks_get', + description: `Get webhook/mailhook (hooks): Get details of a specific webhook/mailhook.`, + params: [ + { name: 'hookId', type: 'number', required: true, description: `The hook ID to retrieve` }, + ], + }, + { + name: 'makemcp_hooks_list', + description: `List webhooks/mailhooks (hooks): List webhooks/mailhooks for a specific team.`, + params: [ + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID to list hooks for`, + }, + ], + }, + { + name: 'makemcp_hooks_update', + description: `Update webhook/mailhook (hooks): Update an existing webhook/mailhook.`, + params: [ + { + name: 'data', + type: 'object', + required: true, + description: `New data configuration for the hook`, + }, + { name: 'hookId', type: 'number', required: true, description: `The hook ID to update` }, + ], + }, + { + name: 'makemcp_key-metadata_get', + description: `Retrieves metadata of the given key, or returns an error when the key type doesn't exist.`, + params: [ + { + name: 'typeName', + type: 'string', + required: true, + description: `Name of the Key to retrieve metadata for.`, + }, + ], + }, + { + name: 'makemcp_keys_delete', + description: `Delete key (keys): Delete a key.`, + params: [ + { name: 'keyId', type: 'number', required: true, description: `The key ID to delete` }, + ], + }, + { + name: 'makemcp_keys_get', + description: `Get key (keys): Get details of a specific key.`, + params: [ + { name: 'keyId', type: 'number', required: true, description: `The key ID to retrieve` }, + ], + }, + { + name: 'makemcp_keys_list', + description: `List keys (keys): List all keys for a team.`, + params: [ + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID to list keys for`, + }, + ], + }, + { + name: 'makemcp_organizations_create', + description: `Create organization (organizations): Create a new organization.`, + params: [ + { name: 'countryId', type: 'number', required: true, description: `The ID of the country` }, + { name: 'name', type: 'string', required: true, description: `Name of the organization` }, + { + name: 'regionId', + type: 'number', + required: true, + description: `The ID of the region the organization will be created in`, + }, + { name: 'timezoneId', type: 'number', required: true, description: `The ID of the timezone` }, + ], + }, + { + name: 'makemcp_organizations_delete', + description: `Delete organization (organizations): Delete an organization.`, + params: [ + { + name: 'organizationId', + type: 'number', + required: true, + description: `The organization ID to delete`, + }, + ], + }, + { + name: 'makemcp_organizations_get', + description: `Get organization (organizations): Get details of a specific organization.`, + params: [ + { + name: 'organizationId', + type: 'number', + required: true, + description: `The organization ID to retrieve`, + }, + ], + }, + { + name: 'makemcp_organizations_list', + description: `List organizations (organizations): List organizations for the current user.`, + params: [], + }, + { + name: 'makemcp_organizations_update', + description: `Update organization (organizations): Update an existing organization.`, + params: [ + { + name: 'organizationId', + type: 'number', + required: true, + description: `The organization ID to update`, + }, + { name: 'countryId', type: 'number', required: false, description: `New country ID` }, + { + name: 'name', + type: 'string', + required: false, + description: `New name for the organization`, + }, + { name: 'timezoneId', type: 'number', required: false, description: `New timezone ID` }, + ], + }, + { + name: 'makemcp_public-templates_get', + description: `Get public template (public-templates): Get details of a public template by its URL slug (e.g. "12289-add-webhook-data-to-a-google-sheet"). Use this for templates discovered via public-templates_list.`, + params: [ + { + name: 'templateUrl', + type: 'string', + required: true, + description: `The URL slug of the public template (e.g. "12289-add-webhook-data-to-a-google-sheet")`, + }, + ], + }, + { + name: 'makemcp_public-templates_get-blueprint', + description: `Get public template blueprint (public-templates): Get the full blueprint of a public template including scenario flow, controller configuration, scheduling, and metadata. Use this for templates discovered via public-templates_list.`, + params: [ + { + name: 'templateUrl', + type: 'string', + required: true, + description: `The URL slug of the public template (e.g. "12289-add-webhook-data-to-a-google-sheet")`, + }, + ], + }, + { + name: 'makemcp_public-templates_list', + description: `List public templates (public-templates): Search and list public (approved) templates available for anyone. Supports name-based search for template discovery. Results are sorted by usage by default.`, + params: [ + { + name: 'includeEn', + type: 'boolean', + required: false, + description: `Whether to include English-language public templates in results`, + }, + { + name: 'name', + type: 'string', + required: false, + description: `Search public templates by name`, + }, + { + name: 'usedApps', + type: 'array', + required: false, + description: `Filter public templates by apps used`, + }, + ], + }, + { + name: 'makemcp_rpc_execute', + description: `Executes a Make Remote Procedure Call (RPC) with the provided input.`, + params: [ + { + name: 'appName', + type: 'string', + required: true, + description: `Name of the App from which the RPC should be executed.`, + }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `Version of the App from which the RPC should be executed.`, + }, + { + name: 'data', + type: 'object', + required: true, + description: `Object containing input values of the RPC.`, + }, + { + name: 'rpcName', + type: 'string', + required: true, + description: `Name of the RPC to be executed.`, + }, + { + name: 'format', + type: 'string', + required: false, + description: `Format of the output allowing transformation before being returned.`, + }, + ], + }, + { + name: 'makemcp_scenarios_activate', + description: `Activate scenario (scenarios): Activate a scenario.`, + params: [ + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID to activate`, + }, + ], + }, + { + name: 'makemcp_scenarios_create', + description: `Create scenario (scenarios): Create a new scenario.`, + params: [ + { + name: 'blueprint', + type: 'string', + required: true, + description: `Blueprint containing the scenario configuration`, + }, + { + name: 'scheduling', + type: 'string', + required: true, + description: `Scheduling configuration for the scenario`, + }, + { + name: 'teamId', + type: 'number', + required: true, + description: `ID of the team where the scenario will be created`, + }, + { + name: 'basedon', + type: 'string', + required: false, + description: `ID of an existing template to base this one on`, + }, + { + name: 'confirmed', + type: 'boolean', + required: false, + description: `Confirmation in case the scenario uses apps that are not yet installed`, + }, + { + name: 'folderId', + type: 'number', + required: false, + description: `ID of the folder where the scenario will be placed`, + }, + ], + }, + { + name: 'makemcp_scenarios_deactivate', + description: `Deactivate scenario (scenarios): Deactivate a scenario.`, + params: [ + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID to deactivate`, + }, + ], + }, + { + name: 'makemcp_scenarios_delete', + description: `Delete scenario (scenarios): Delete a scenario.`, + params: [ + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID to delete`, + }, + ], + }, + { + name: 'makemcp_scenarios_get', + description: `Get scenario (scenarios): Get a scenario and its blueprint by ID.`, + params: [ + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID to retrieve`, + }, + ], + }, + { + name: 'makemcp_scenarios_interface', + description: `Get scenario interface (scenarios): Get the interface for a scenario.`, + params: [ + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID to get the interface for`, + }, + ], + }, + { + name: 'makemcp_scenarios_list', + description: `List scenarios (scenarios): List all scenarios for a team.`, + params: [ + { + name: 'teamId', + type: 'number', + required: true, + description: `The team ID to filter scenarios by`, + }, + ], + }, + { + name: 'makemcp_scenarios_run', + description: `Run scenario (scenarios): Execute a scenario with optional input data.`, + params: [ + { name: 'scenarioId', type: 'number', required: true, description: `The scenario ID to run` }, + { + name: 'callbackUrl', + type: 'string', + required: false, + description: `URL to call once the scenario execution finishes`, + }, + { + name: 'data', + type: 'object', + required: false, + description: `Optional input data for the scenario`, + }, + { + name: 'responsive', + type: 'boolean', + required: false, + description: `Whether to run responsively`, + }, + ], + }, + { + name: 'makemcp_scenarios_set-interface', + description: `Set scenario interface (scenarios): Update the interface for a scenario.`, + params: [ + { + name: 'interface', + type: 'object', + required: true, + description: `The interface definition with input and output specifications`, + }, + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID to update the interface for`, + }, + ], + }, + { + name: 'makemcp_scenarios_update', + description: `Update scenario (scenarios): Update a scenario.`, + params: [ + { + name: 'scenarioId', + type: 'number', + required: true, + description: `The scenario ID to update`, + }, + { + name: 'blueprint', + type: 'string', + required: false, + description: `Updated blueprint configuration`, + }, + { + name: 'confirmed', + type: 'boolean', + required: false, + description: `Confirmation in case the scenario uses apps that are not yet installed`, + }, + { + name: 'description', + type: 'string', + required: false, + description: `New description for the scenario`, + }, + { + name: 'folderId', + type: 'number', + required: false, + description: `New folder ID for the scenario`, + }, + { name: 'name', type: 'string', required: false, description: `New name for the scenario` }, + { + name: 'scheduling', + type: 'string', + required: false, + description: `Updated scheduling configuration`, + }, + ], + }, + { + name: 'makemcp_teams_create', + description: `Create team (teams): Create a new team.`, + params: [ + { name: 'name', type: 'string', required: true, description: `Name for the new team` }, + { + name: 'organizationId', + type: 'number', + required: true, + description: `ID of the organization where the team will be created`, + }, + { + name: 'operationsLimit', + type: 'number', + required: false, + description: `Maximum operations limit for the team`, + }, + { + name: 'transferLimit', + type: 'number', + required: false, + description: `Maximum data transfer limit for the team`, + }, + ], + }, + { + name: 'makemcp_teams_delete', + description: `Delete team (teams): Delete a team.`, + params: [ + { name: 'teamId', type: 'number', required: true, description: `The team ID to delete` }, + ], + }, + { + name: 'makemcp_teams_get', + description: `Get team (teams): Get details of a specific team.`, + params: [ + { name: 'teamId', type: 'number', required: true, description: `The team ID to retrieve` }, + ], + }, + { + name: 'makemcp_teams_list', + description: `List teams (teams): List teams for the current user.`, + params: [ + { + name: 'organizationId', + type: 'number', + required: true, + description: `The organization ID to list teams for`, + }, + ], + }, + { + name: 'makemcp_tools_create', + description: `This tool creates a new Tool in the system based on provided parameters.`, + params: [ + { + name: 'description', + type: 'string', + required: true, + description: `A brief description of what the Tool does.`, + }, + { + name: 'inputs', + type: 'array', + required: true, + description: `An array of input parameters that the Tool accepts.`, + }, + { + name: 'module', + type: 'object', + required: true, + description: `Details of the module that the Tool will encapsulate.`, + }, + { name: 'name', type: 'string', required: true, description: `The name of the Tool.` }, + { + name: 'teamId', + type: 'integer', + required: true, + description: `The ID of the Team under which the Tool will be created.`, + }, + ], + }, + { + name: 'makemcp_tools_get', + description: `Retrieves details of a specific Tool by its ID.`, + params: [ + { + name: 'toolId', + type: 'integer', + required: true, + description: `The ID of the Tool to be retrieved.`, + }, + ], + }, + { + name: 'makemcp_tools_update', + description: `This tool updates an existing Tool's details based on provided parameters.`, + params: [ + { + name: 'toolId', + type: 'integer', + required: true, + description: `The ID of the Tool to be updated.`, + }, + { + name: 'description', + type: 'string', + required: false, + description: `A brief description of what the Tool does.`, + }, + { + name: 'inputs', + type: 'array', + required: false, + description: `An array of input parameters that the Tool accepts.`, + }, + { + name: 'module', + type: 'object', + required: false, + description: `Details of the module that the Tool will encapsulate.`, + }, + { name: 'name', type: 'string', required: false, description: `The name of the Tool.` }, + ], + }, + { + name: 'makemcp_users_me', + description: `Get current user (users): Get details of the current user.`, + params: [], + }, + { + name: 'makemcp_validate_blueprint_schema', + description: `Validates the overall structure of the Scenario Blueprint against the Schema.`, + params: [ + { + name: 'blueprint', + type: 'object', + required: true, + description: `A blueprint of a Make Scenario.`, + }, + ], + }, + { + name: 'makemcp_validate_epoch_configuration', + description: `Validates the Epoch Configuration of particular Trigger Module.`, + params: [ + { + name: 'appName', + type: 'string', + required: true, + description: `Name of the App to which the module belongs.`, + }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `Version of the App to which the module belongs.`, + }, + { + name: 'epoch', + type: 'object', + required: true, + description: `Module "epoch" configuration to be validated. This collection represents settings for trigger pointer (what epoch to watch).`, + }, + { + name: 'moduleName', + type: 'string', + required: true, + description: `The name of the module to validate the configuration for.`, + }, + { + name: 'organizationId', + type: 'integer', + required: true, + description: `The ID of the Organization in which context the Validation should operate.`, + }, + { + name: 'parameters', + type: 'object', + required: true, + description: `Module "parameters" configuration. Since Epoch exists only on triggers, there are no dynamic parameters. This collection is not directly validated, but serves as context for RPC calls, which are based on the module configuration.`, + }, + { + name: 'teamId', + type: 'integer', + required: true, + description: `The ID of the Team in which context the Validation should operate.`, + }, + { + name: 'strict', + type: 'boolean', + required: false, + description: `Enforces strict validation mode, which is guarding against unknown parameters in the configuration. Don't turn off unless necessary.`, + }, + ], + }, + { + name: 'makemcp_validate_hook_configuration', + description: `This tool validates that hook configuration values are correctly set for a given hook type.`, + params: [ + { + name: 'organizationId', + type: 'integer', + required: true, + description: `The ID of the Organization in which context the Validation should operate.`, + }, + { + name: 'teamId', + type: 'integer', + required: true, + description: `The ID of the Team in which context the Validation should operate.`, + }, + { + name: 'typeName', + type: 'string', + required: true, + description: `The type name of the hook to validate the configuration for (e.g. "slack-events", "gateway-webhook", "gateway-mailhook").`, + }, + { + name: 'values', + type: 'object', + required: true, + description: `Hook configuration values to be validated against the form schema.`, + }, + { + name: 'strict', + type: 'boolean', + required: false, + description: `Enforces strict validation mode, which is guarding against unknown parameters in the configuration. Don't turn off unless necessary.`, + }, + ], + }, + { + name: 'makemcp_validate_module_configuration', + description: `This tool validates that parameters and mapper collection are correctly configured for a given module in a given app.`, + params: [ + { + name: 'appName', + type: 'string', + required: true, + description: `Name of the App to which the module belongs.`, + }, + { + name: 'appVersion', + type: 'integer', + required: true, + description: `Version of the App to which the module belongs.`, + }, + { + name: 'mapper', + type: 'object', + required: true, + description: `Module "mapper" configuration to be validated. These are dynamic parameters.`, + }, + { + name: 'moduleName', + type: 'string', + required: true, + description: `The name of the module to validate the configuration for.`, + }, + { + name: 'organizationId', + type: 'integer', + required: true, + description: `The ID of the Organization in which context the Validation should operate.`, + }, + { + name: 'parameters', + type: 'object', + required: true, + description: `Module "parameters" configuration to be validated. These are static parameters.`, + }, + { + name: 'teamId', + type: 'integer', + required: true, + description: `The ID of the Team in which context the Validation should operate.`, + }, + { + name: 'restoreExtras', + type: 'object', + required: false, + description: `Dictionary of values to be stored as part of 'extra' entry in the field's restore object.`, + }, + { + name: 'schemas', + type: 'boolean', + required: false, + description: `Enables generation of fully expanded Forman schemas with all dynamic nested fields resolved.`, + }, + { + name: 'states', + type: 'boolean', + required: false, + description: `Enables generation of Field States, which can be fed into Make Frontend Components for better user experience.`, + }, + { + name: 'strict', + type: 'boolean', + required: false, + description: `Enforces strict validation mode, which is guarding against unknown parameters in the configuration. Don't turn off unless necessary.`, + }, + ], + }, + { + name: 'makemcp_validate_scheduling_schema', + description: `Validates the Scheduling of the Scenario against the Schema.`, + params: [ + { + name: 'scheduling', + type: 'object', + required: true, + description: `A scheduling configuration of a Make Scenario.`, + }, + ], + }, +] diff --git a/src/data/agent-connectors/tavilymcp.ts b/src/data/agent-connectors/tavilymcp.ts new file mode 100644 index 000000000..d62bd1dd5 --- /dev/null +++ b/src/data/agent-connectors/tavilymcp.ts @@ -0,0 +1,276 @@ +import type { Tool } from '../../types/agent-connectors' + +export const tools: Tool[] = [ + { + name: 'tavilymcp_tavily_crawl', + description: `Crawl a website from a starting URL and extract page content with configurable depth and breadth.`, + params: [ + { + name: 'url', + type: 'string', + required: true, + description: `The root URL to begin the crawl`, + }, + { + name: 'allow_external', + type: 'boolean', + required: false, + description: `Whether to return external links in the final response`, + }, + { + name: 'extract_depth', + type: 'string', + required: false, + description: `Advanced extraction retrieves more data, including tables and embedded content, with higher success but may increase latency`, + }, + { + name: 'format', + type: 'string', + required: false, + description: `The format of the extracted web page content. markdown returns content in markdown format. text returns plain text and may increase latency.`, + }, + { + name: 'include_favicon', + type: 'boolean', + required: false, + description: `Whether to include the favicon URL for each result`, + }, + { + name: 'instructions', + type: 'string', + required: false, + description: `Natural language instructions for the crawler. Instructions specify which types of pages the crawler should return.`, + }, + { + name: 'limit', + type: 'integer', + required: false, + description: `Total number of links the crawler will process before stopping`, + }, + { + name: 'max_breadth', + type: 'integer', + required: false, + description: `Max number of links to follow per level of the tree (i.e., per page)`, + }, + { + name: 'max_depth', + type: 'integer', + required: false, + description: `Max depth of the crawl. Defines how far from the base URL the crawler can explore.`, + }, + { + name: 'select_domains', + type: 'array', + required: false, + description: `Regex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\\.example\\.com$)`, + }, + { + name: 'select_paths', + type: 'array', + required: false, + description: `Regex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*)`, + }, + ], + }, + { + name: 'tavilymcp_tavily_extract', + description: `Extract raw content from one or more URLs in markdown or plain text format.`, + params: [ + { + name: 'urls', + type: 'array', + required: true, + description: `List of URLs to extract content from`, + }, + { + name: 'extract_depth', + type: 'string', + required: false, + description: `Use 'advanced' for LinkedIn, protected sites, or tables/embedded content`, + }, + { name: 'format', type: 'string', required: false, description: `Output format` }, + { + name: 'include_favicon', + type: 'boolean', + required: false, + description: `Include favicon URLs`, + }, + { + name: 'include_images', + type: 'boolean', + required: false, + description: `Include images from pages`, + }, + { + name: 'query', + type: 'string', + required: false, + description: `Query to rerank content chunks by relevance`, + }, + ], + }, + { + name: 'tavilymcp_tavily_map', + description: `Map a website's URL structure starting from a base URL.`, + params: [ + { + name: 'url', + type: 'string', + required: true, + description: `The root URL to begin the mapping`, + }, + { + name: 'allow_external', + type: 'boolean', + required: false, + description: `Whether to return external links in the final response`, + }, + { + name: 'instructions', + type: 'string', + required: false, + description: `Natural language instructions for the crawler`, + }, + { + name: 'limit', + type: 'integer', + required: false, + description: `Total number of links the crawler will process before stopping`, + }, + { + name: 'max_breadth', + type: 'integer', + required: false, + description: `Max number of links to follow per level of the tree (i.e., per page)`, + }, + { + name: 'max_depth', + type: 'integer', + required: false, + description: `Max depth of the mapping. Defines how far from the base URL the crawler can explore`, + }, + { + name: 'select_domains', + type: 'array', + required: false, + description: `Regex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\\.example\\.com$)`, + }, + { + name: 'select_paths', + type: 'array', + required: false, + description: `Regex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*)`, + }, + ], + }, + { + name: 'tavilymcp_tavily_research', + description: `Run comprehensive multi-source research on a topic or question.`, + params: [ + { + name: 'input', + type: 'string', + required: true, + description: `A comprehensive description of the research task`, + }, + { + name: 'model', + type: 'string', + required: false, + description: `Defines the degree of depth of the research. 'mini' is good for narrow tasks with few subtopics. 'pro' is good for broad tasks with many subtopics`, + }, + ], + }, + { + name: 'tavilymcp_tavily_search', + description: `Search the web for current information and return snippets with source URLs.`, + params: [ + { name: 'query', type: 'string', required: true, description: `Search query` }, + { + name: 'country', + type: 'string', + required: false, + description: `Boost search results from a specific country. Must be a full country name (e.g., 'United States', 'Japan', 'Germany'). ISO country codes (e.g., 'us', 'jp') are not supported. Available only if topic is general. See https://docs.tavily.com/documentation/api-reference/search for the full list of supported countries.`, + }, + { + name: 'end_date', + type: 'string', + required: false, + description: `Will return all results before the specified end date. Required to be written in the format YYYY-MM-DD`, + }, + { + name: 'exact_match', + type: 'string', + required: false, + description: `Only return results containing the exact phrase(s) in quotes in your query`, + }, + { + name: 'exclude_domains', + type: 'array', + required: false, + description: `List of domains to specifically exclude, if the user asks to exclude a domain set this to the domain of the site`, + }, + { + name: 'include_domains', + type: 'array', + required: false, + description: `A list of domains to specifically include in the search results, if the user asks to search on specific sites set this to the domain of the site`, + }, + { + name: 'include_favicon', + type: 'boolean', + required: false, + description: `Whether to include the favicon URL for each result`, + }, + { + name: 'include_image_descriptions', + type: 'boolean', + required: false, + description: `Include a list of query-related images and their descriptions in the response`, + }, + { + name: 'include_images', + type: 'boolean', + required: false, + description: `Include a list of query-related images in the response`, + }, + { + name: 'include_raw_content', + type: 'boolean', + required: false, + description: `Include the cleaned and parsed HTML content of each search result`, + }, + { + name: 'max_results', + type: 'integer', + required: false, + description: `The maximum number of search results to return`, + }, + { + name: 'search_depth', + type: 'string', + required: false, + description: `The depth of the search. 'basic' for generic results, 'advanced' for more thorough search, 'fast' for optimized low latency with high relevance, 'ultra-fast' for prioritizing latency above all else`, + }, + { + name: 'start_date', + type: 'string', + required: false, + description: `Will return all results after the specified start date. Required to be written in the format YYYY-MM-DD.`, + }, + { + name: 'time_range', + type: 'string', + required: false, + description: `The time range back from the current date to include in the search results`, + }, + { + name: 'topic', + type: 'string', + required: false, + description: `The category of the search. This will determine which of our agents will be used for the search`, + }, + ], + }, +]