Integrations
Zubo integrates with popular services via pre-built skill packs. Each integration installs one or more skills and requires an API key stored as a secret. You can connect integrations via chat, the dashboard, or the connect_service tool.
Connecting an Integration
There are three ways to connect a service:
- Chat: Tell Zubo directly — for example,
"Connect GitHub with token ghp_abc123". Zubo will store the secret and install the skill pack automatically. - Dashboard: Navigate to Settings → Secrets → Add Secret. Enter the secret name and value, then Zubo detects the associated integration and installs the skills.
- CLI: Run
zubo start, then use theconnect_servicetool programmatically to provide the credentials.
When you connect a service, Zubo performs the following steps:
- Stores the API key as a secret in the local database
- Installs the relevant skill pack for that service
- Makes all integration tools available immediately (hot-loaded — no restart required)
GitHub
| Field | Details |
|---|---|
| Secret Name | github_token |
| Token Type | Personal Access Token (classic) |
| Required Scopes | repo, read:user |
Getting a Token
- Go to github.com/settings/tokens
- Click “Generate new token (classic)”
- Select the
repoandread:userscopes - Copy the generated token
Skills Installed
github_repos— List and search repositories, view repository detailsgithub_issues— List, search, and create issues on any accessible repositorygithub_prs— List and search pull requests, view PR details and diffs
Example
"Connect GitHub with token ghp_abc123xyz"
After connecting, try: "List my GitHub repos" or "Show open issues on myorg/myrepo"
| Field | Details |
|---|---|
| Secret Name | google_api_key |
| Token Type | API Key or OAuth credentials |
| Required APIs | Gmail API, Calendar API, Sheets API, Docs API, Drive API |
Getting a Key
- Go to console.cloud.google.com
- Create a new project (or select an existing one)
- Navigate to APIs & Services → Library and enable the Gmail, Calendar, Sheets, Docs, and Drive APIs
- Go to APIs & Services → Credentials
- Create an API key or OAuth 2.0 client credentials
Skills Installed
gmail— Read and list emails, search by querygoogle_calendar— List upcoming events, get event detailsgoogle_sheets— Read from and write to spreadsheetsgoogle_docs— Read document contentgoogle_drive— List and search files across your Drive
Notion
| Field | Details |
|---|---|
| Secret Name | notion_token |
| Token Type | Internal Integration Token |
Getting a Token
- Go to notion.so/my-integrations
- Click “New integration”
- Give it a name and select the workspace
- Copy the Internal Integration Token
- Important: Share the databases and pages you want Zubo to access with the integration inside Notion (click “Share” on the page and add the integration)
Skills Installed
notion_databases— List and search databases in your workspacenotion_pages— Read and search pages by title or contentnotion_search— Full-text search across the entire connected workspace
Linear
| Field | Details |
|---|---|
| Secret Name | linear_api_key |
| Token Type | Personal API Key |
Getting a Key
- Open Linear and go to Settings → API → Personal API Keys
- Click “Create key”
- Copy the generated key
Skills Installed
linear_issues— List, search, and create issues across your teamslinear_projects— List projects and their statuses
Jira
| Field | Details |
|---|---|
| Secret Names | jira_token, jira_email, jira_domain |
| Token Type | Atlassian API Token |
Jira requires three secrets: your API token, the email address associated with your Atlassian account, and your Jira domain (e.g., yourcompany.atlassian.net).
Getting a Token
- Go to id.atlassian.com/manage-profile/security/api-tokens
- Click “Create API token”
- Copy the token
- Store all three secrets:
"Store my jira_token: atl_abc123..." "Store my jira_email: you@company.com" "Store my jira_domain: yourcompany.atlassian.net"
Skills Installed
jira_issues— List and search issues using JQL, view issue detailsjira_boards— List boards and their configurations
Slack (Integration)
| Field | Details |
|---|---|
| Secret Name | slack_bot_token |
| Token Type | Bot User OAuth Token |
The Slack integration allows Zubo to proactively send messages to Slack channels and read channel history. This is used for the agent to interact with Slack on your behalf.
Note: This is different from the Slack channel (configured in Channel Setup), which lets users send messages to Zubo via Slack. The integration allows the agent to proactively interact with Slack channels — sending messages, reading history, and responding to events.
Skills Installed
slack_messages— Send messages to channels and users, read channel message history
Twitter / X
| Field | Details |
|---|---|
| Secret Name | twitter_bearer_token |
| Token Type | API v2 Bearer Token |
Getting a Token
- Go to developer.twitter.com
- Create a project and app
- Navigate to Keys and Tokens
- Generate a Bearer Token
Skills Installed
twitter_posts— Compose and post tweets
Note: The
twitter_poststool hasconfirmpermission level — the agent will always describe the tweet and ask for your explicit approval before posting. This cannot be bypassed.
Integration Summary
| Service | Secret Name | Skills | Notes |
|---|---|---|---|
| GitHub | github_token |
repos, issues, prs | PAT with repo scope |
google_api_key |
gmail, calendar, sheets, docs, drive | Enable APIs in Cloud Console | |
| Notion | notion_token |
databases, pages, search | Share pages with integration |
| Linear | linear_api_key |
issues, projects | Personal API key |
| Jira | jira_token + jira_email + jira_domain |
issues, boards | Atlassian API token |
| Slack | slack_bot_token |
messages | For proactive messages |
twitter_bearer_token |
posts | Requires confirmation |
Managing Secrets
All integration secrets are managed through the same unified secret system.
Dashboard
- Navigate to Settings → Secrets & API Keys
- Values are displayed as
••••••••by default - Click “Reveal” to show the actual secret value
- Click “Edit” to update a secret with a new value
- Click “Delete” to remove a secret entirely (this disables the associated integration)
Chat
You can also manage secrets conversationally:
"List my secrets"
"Delete the github_token secret"
"Update my notion_token to ntn_newvalue123"
Best Practices
- Use minimum required scopes: When creating API tokens, only grant the permissions each service needs. For GitHub,
repoandread:userare sufficient — avoid grantingadminordeletescopes. - Rotate API keys periodically: Update your tokens every few months by editing the secret in the dashboard or telling Zubo to update it.
- Check requirements first: Before connecting an integration, review which secrets it needs (see the summary table above) so you can prepare all required credentials.
- Test after connecting: After storing a secret, verify the integration works by asking Zubo to perform a simple action — for example,
"List my GitHub repos"or"Show my upcoming calendar events". - Secrets are excluded from exports: When you run
zubo export, secrets and API keys are automatically excluded to prevent accidental credential leakage. - Store secrets via Zubo: Always use the agent, dashboard, or
secret_settool to store credentials. Never put them in environment variables, configuration files, or skill source code. - Share Notion pages explicitly: The Notion integration can only access pages and databases that have been explicitly shared with the integration — it does not have access to your entire workspace by default.