Integrations
Connect Google Workspace and custom MCP servers so your agent can call external tools.
Tip: Your agent can list its connected integrations. Ask it — "What integrations am I connected to?" or "Connect me to Google Calendar."
Overview
The Integrations tab is where you grant your agent access to third-party services. It hosts two kinds of integrations side-by-side:
- Native connectors — first-party integrations we build and maintain (Google Workspace today; more on the way). Tools execute server-side on our platform using OAuth tokens, with per-service toggles (Calendar, Drive, Docs, …).
- Custom MCP servers — any Model Context Protocol compatible URL you want to connect (GitHub, Linear, Notion, your own internal APIs). Tools execute remotely via the MCP protocol, with per-tool toggles.
Both kinds appear together as cards on the Integrations tab and use the same status/management UX.
Native Connectors vs Custom MCP
| Native Connector | Custom MCP Server | |
|---|---|---|
| Examples | Google Workspace | GitHub, Linear, Notion, internal APIs |
| Execution | Server-side on our platform | Remote, via the MCP protocol |
| Auth | OAuth (managed end-to-end) | Bearer token, OAuth, or none |
| Granularity | Per-service (Calendar, Drive, …) | Per-tool |
| Setup | Pick from catalog → OAuth → choose services | Paste URL + auth → discover tools → toggle |
| Best for | Common SaaS we've pre-vetted | Anything we don't ship a native connector for |
If we ship a native connector for a service you need, use it — it's faster, has tighter scope control, and is pre-vetted. Otherwise, custom MCP gives you full flexibility.
How It Works
Native connectors
- You pick a connector (e.g., Google) from the catalog and select which services to enable (Calendar, Drive, Docs)
- You complete the OAuth flow in a popup
- We store the OAuth tokens encrypted in Supabase Vault and auto-refresh them
- Each enabled service exposes a set of tools the agent can call (e.g.,
google_calendar_create_event,google_drive_search) - When the agent calls a tool, our backend executes the request against the provider API using the stored token — the token is never sent to the LLM
Custom MCP servers
- You add a remote MCP server URL on the Integrations tab
- The platform connects to the server and discovers the tools it exposes
- Discovered tools are added to your agent's available toolset
- When the agent calls one of those tools, your auth token is attached as a request-level credential — never inserted into the conversation
- The tool's response is returned to the agent
Native: Agent calls "google_calendar_create_event"
→ Our backend calls Google's API with your OAuth token
→ Result returned to the agent
MCP: Agent calls "create_issue" (from your GitHub MCP server)
→ The model provider attaches your bearer token and dispatches
→ Result returned to the agent
Connecting an Integration
- Go to the Integrations tab on your agent's detail page
- Click Add Integration
- Pick from the catalog:
- A native connector card (e.g., Google) — opens a service-selection step
- Custom MCP — opens the MCP setup form
Connecting Google Workspace
- Click the Google card in the catalog
- Tick the services you want to enable:
- Calendar — create, read, update, and search events
- Drive — search and read files
- Docs — read and edit documents
- Click Connect and complete the OAuth popup
- The connector card shows as Active with a chip per enabled service
You can enable additional services later from the connector's Settings drawer. Adding a service that needs new scopes will prompt a re-authorization.
Note: Gmail, Sheets, and other Google services are on the roadmap. They'll appear as new checkboxes in the same flow once shipped.
Connecting a Custom MCP Server
- Click Custom MCP in the catalog
- Fill in:
- Display name — A friendly label (e.g., "GitHub", "Internal CRM")
- Server URL — The MCP server endpoint
- Authentication — Choose Bearer token, OAuth, or None (see below)
- Click Connect
The platform validates the connection and discovers available tools. Once connected, the integration appears as a card alongside your native connectors.
Authentication Methods
| Method | Applies To | When to Use |
|---|---|---|
| OAuth | Native connectors (always); some MCP servers | Per-user authorization, multi-tenant services. Tokens auto-refresh server-side. |
| Bearer token | Custom MCP only | Static API key or personal access token. Encrypted at rest, easy to rotate. |
| None | Custom MCP only | Public servers that don't require credentials. |
For native connectors, OAuth is the only option — we manage the entire flow including refresh.
Choosing What to Expose
You don't have to expose everything an integration offers.
- Native connectors — toggle individual services on/off via the Settings drawer. Disabled services hide all their tools from the agent. The card shows a chip per enabled service.
- Custom MCP — toggle individual tools on/off via Edit. Disabled tools don't appear in the agent's toolset.
This is useful when an integration offers both safe read-only operations and destructive write operations — expose just what you trust the agent to use.
Connection Status
Each integration card shows a status badge. The same set of statuses applies to both native connectors and custom MCP:
| Status | Meaning |
|---|---|
| Active | Connected and tools are exposed to the agent |
| Disabled | Paused — no tools are exposed, but configuration is preserved |
| Error | Connection failed. Click Test to revalidate or Edit to fix the configuration |
| Expired | OAuth refresh failed. Click Reconnect to re-authorize |
| Pending | Setup is in progress |
Managing Integrations
Each integration card has actions in its menu:
| Action | Native Connector | Custom MCP |
|---|---|---|
| Toggle | Enable/disable without deleting | Enable/disable without deleting |
| Settings | Rename, change enabled services, danger zone | — |
| Edit | — | Rename, replace token, change exposed tools |
| Test | Revalidate the connection | Revalidate and rediscover tools |
| Reconnect | Re-run OAuth (e.g., after adding a new service) | Re-run OAuth (for OAuth MCP) |
| Disconnect | Permanently remove the integration | Permanently remove the integration |
Security
| Aspect | How It's Protected |
|---|---|
| Token storage | OAuth tokens and bearer tokens are encrypted at rest in Supabase Vault |
| AI context | Tokens are never inserted into prompts, messages, or tool results — the model can't read them |
| Logs | Authentication headers are redacted in all logs and tool results |
| OAuth refresh | Refresh flows happen server-side — tokens never reach the browser |
| Tool calls (native) | Executed on our backend; the agent sees only the result |
| Tool calls (MCP) | Credentials attached at dispatch time; the agent sees only the result |
The model can't read or echo your integration tokens — they aren't part of any prompt or message it sees.
Best Practices
- Prefer native connectors when available — they're faster, scope-controlled, and pre-vetted
- Enable only the services or tools you need — fewer tools = clearer agent decisions and tighter security
- Use descriptive display names — "GitHub (Production)" is clearer than "github"
- Test after rotating tokens — click Test to verify the new token works before the next agent run
- Disable instead of deleting — if you're temporarily not using an integration, disable it to keep configuration around for later
- Reconnect when adding native services — adding a service that needs new OAuth scopes will prompt re-authorization; the existing token won't have the new permission
What's Next?
- Credentials — Store passwords and API keys for login forms
- Context & Configuration — Configure skills, instructions, and tools
- Agent Settings — Centralized agent configuration