BotForge

Build

Connectors

A Connector is a static, code-first definition an Agent's tools can call through — the same 'declared, not faked' convention as the Reddit channel adapter: planned connectors are visible in the catalog but callConnector() hard-fails with a clear message until they're wired.

Overview

4 connectors are wired for real today (no vendor OAuth-app registration required); 11 more are declared and on the roadmap. All go through one callConnector() chokepoint, permission-checked (manage_ai) and rate-limited per connector.

Auth types

oauth2OAuth 2.0api_keyAPI keywebhook_secretWebhook secretnoneNone (uses workspace mailer)

REST connector

The generic rest_api connector is the one with no fixed vendor domain — you supply a base URL (validated once at connect time via validateConnectorBaseUrl()) and an API key/bearer token. Every other connector locks its calls to a static approvedDomainPatterns allowlist, never a wildcard.

OAuth connectors

Google Calendar, Slack, Notion, Jira, HubSpot, Salesforce, Shopify and Zapier are declared with their scopes and domain allowlist, but require a vendor OAuth app registration (client id/secret, redirect URI) outside this codebase before they flip to available.

Webhook connectors

The webhook connector triggers one of the workspace's existing outgoing webhooks on demand from an Agent — reusing the same webhook system covered on the Webhooks page, not a second one. Zapier and n8n are the same shape, declared but not yet wired.

Full registry

ConnectorCategoryAuthStatus
REST APIDeveloperapi_keyAvailable
Webhook (Outgoing)Automationwebhook_secretAvailable
EmailCommunicationnoneAvailable
GitHubDeveloperapi_keyAvailable
Google CalendarProductivityoauth2Planned
SlackCommunicationoauth2Planned
NotionProductivityoauth2Planned
JiraProductivityoauth2Planned
HubSpotCRMoauth2Planned
SalesforceCRMoauth2Planned
StripePaymentsapi_keyPlanned
ShopifyCommerceoauth2Planned
WooCommerceCommerceapi_keyPlanned
ZapierAutomationwebhook_secretPlanned
n8nAutomationwebhook_secretPlanned

Built-in tools

call_rest_connector, github_request, send_email and trigger_webhook are thin wrappers over callConnector(), each one ToolDefinition file plus a registry line — zero changes to runTool()'s permission/audit/error-handling contract. See Tool Calling.

Examples

An Agent calling the GitHub connector

// Agent tool call, resolved by runTool() → callConnector("github", ...)
{
  "tool": "github_request",
  "args": { "method": "GET", "path": "/repos/acme/widgets/issues" }
}