Skip to content

Integrations

An integration is a connected external service. Once you connect one, its API operations join the agent's action registry as regular actions, so the agent creates issues, sends messages, reads calendars, and updates records the same way it runs any other action. Many integrations also install a listener. A listener watches the platform for inbound activity (a Discord message, a GitHub mention, a new email) and turns each event into a trigger that starts or feeds a task. Connecting a service therefore does two things at once: it gives the agent new actions to call, and it lets the outside world reach the agent.

The two halves are independent. An integration can expose actions without a listener (Stripe, Google Calendar, LinkedIn), it can expose both (Discord, GitHub, Slack), and one case exposes a listener with no agent actions (WhatsApp Business, which receives inbound webhooks but has no outbound action set).

Available integrations

CraftBot ships with the following integrations. The Inbound events column shows how each listener receives activity and how often it checks. The Actions column shows how many actions the integration adds to the registry.

Integration Auth method Inbound events Actions Page
Discord Bot token Gateway WebSocket 80 discord.md
GitHub Personal access token Poll, 15s 107 github.md
Gmail Google OAuth Poll, 5s 34 gmail.md
Google Calendar Google OAuth None 32 google-calendar.md
Google Docs Google OAuth None 33 google-docs.md
Google Drive Google OAuth None 39 google-drive.md
YouTube Google OAuth None 11 google-youtube.md
HubSpot OAuth or private-app token None 90 hubspot.md
Jira Domain + email + API token Poll, 10s 61 jira.md
Lark App ID + App Secret WebSocket 46 messaging, 26 calendar, 76 drive lark.md
LINE Channel token + secret Send-only 59 line.md
LinkedIn OAuth None 31 linkedin.md
Notion OAuth or internal token None 29 notion.md
Outlook OAuth with PKCE Poll, 5s 40 outlook.md
Slack OAuth or bot token Poll, 3s 60 slack.md
Stripe API key None 99 stripe.md
Telegram Bot Bot token Long-poll 76 shared telegram-bot.md
Telegram User MTProto api_id / api_hash + phone Realtime 76 shared telegram-user.md
Twitter / X OAuth1 (4 keys) Poll, 30s 46 twitter.md
WhatsApp Web QR scan Bridge stream 40 whatsapp-web.md
WhatsApp Business Cloud API token Webhook 0 agent actions whatsapp-business.md

Telegram Bot and Telegram User share one action set of 76 messaging actions, so the number counts the same surface once for each. Lark spreads its surface across three areas: messaging, calendar, and drive.

Three ways to connect

You can connect an integration from the settings page, by asking the agent in chat, or with a slash command. All three paths run through the same connection logic in the craftos_integrations package, so they produce the same result, including starting the listener when the connect succeeds.

Settings page

Open Settings → Integrations, pick a service, and follow its connect form. Token-based services show a field for each credential (a bot token, an API key). OAuth services show a Connect button that opens the browser consent flow. Interactive services (WhatsApp Web) show a QR code to scan. The form is generated from the integration's declared fields, and a ? popover next to each field explains where to find the value.

Asking the agent in chat

Tell the agent what you want to connect. It calls list_available_integrations to check what is available and which credentials each one needs, asks you for any required tokens, and then calls connect_integration to run the flow. For OAuth services the agent hands you a browser URL. For WhatsApp Web it returns a QR code to scan. The matching check_integration_status and disconnect_integration actions let the agent confirm a connection or remove one, all without leaving the chat.

Per-integration slash commands

Every registered integration gets its own command named after the integration, such as /github, /slack, or /gmail. Each command accepts these subcommands:

Subcommand Effect
/<service> connect [values] Connect using the integration's auth type. Token services take the credential values as arguments in field order; OAuth services open the browser; interactive services start the QR or code flow
/<service> status Show whether the integration is connected and which account is linked
/<service> disconnect Remove the stored credential and stop the listener

Integrations that need it also expose their own subcommands through the same command, such as login, logout, and invite. Running /<service> with no subcommand prints the full list for that integration. Across every integration, /cred status lists all connections and their state in one place. See Credentials for where those credentials are stored.

Next

  • Credentials: where connection tokens live, the OAuth flow, and how to revoke access
  • MCP servers: add external tool providers as actions alongside built-in integrations
  • Triggers: how listener events become tasks
  • Actions and action sets: how integration actions load into a task