Using Integrations with the Copilot
Once a connection is active, the AI copilot can search and call its tools on your behalf. Just ask:- “Send a Slack message to #sales about this lead”
- “Create a HubSpot contact for this person”
- “Find matching leads in Salesforce”
Connecting an App
- Navigate to Integrations in the sidebar
- Find the app you want and click Connect
- Complete the OAuth flow in the popup window
- Once authorized, the connection becomes active and its tools are discovered automatically
Available Apps
| App | Key | Categories |
|---|---|---|
| Granola | granola_mcp | Productivity, Meetings |
| Salesforce | salesforce | CRM, Sales |
| HubSpot | hubspot | CRM, Marketing |
| Slack | slack | Communication |
| Notion | notion | Productivity |
| Gmail | gmail | Communication, Email |
| Google Calendar | googlecalendar | Productivity, Calendar |
| Google Sheets | googlesheets | Productivity, Data |
| Gong | gong | Analytics, Sales |
| Calendly | calendly | Productivity, Scheduling |
| Cal.com | cal | Productivity, Scheduling |
Calling Tools from Code
You can also call integration tools directly from column code usingcanvas.mcp.call().
canvas.mcp.call()
Identifies the connection (e.g.,
"slack", "salesforce"). Must match an active connection from the Integrations page.The tool slug to execute (e.g.,
"SLACK_SEND_MESSAGE", "SALESFORCE_SEARCH_LEADS"). Use canvas.mcp.tools() to discover available tool names.Arguments matching the tool’s input schema. Varies by tool.
Promise<unknown> — the tool’s response data.
Examples
Send a Slack message
Search Salesforce leads
Create a HubSpot contact
canvas.mcp.tools()
List available tools on a connection.
Filter to a specific connection. Omit to list tools across all active connections.
Promise<Array<{ name: string; description: string }>> — list of available tools.
Error Handling
| Error Code | Meaning | Fix |
|---|---|---|
connection_not_found | No active connection for this slug | Connect the app in Integrations |
auth_expired | OAuth token expired | Reconnect in Integrations |
tool_not_found | Tool name doesn’t exist on this connection | Use canvas.mcp.tools() to list valid names |
rate_limited | Too many calls to the external API | Add delays between calls |
server_unreachable | External service is down | Retry later |
Managing Connections
From the Integrations page, you can:- Enable/Disable — Toggle a connection without deleting it. Disabled connections won’t appear in code editor autocomplete.
- Refresh Tools — Re-fetch the tool list if the app adds new capabilities.
- Reconnect — Re-authorize via OAuth if your token expires.
- Delete — Permanently remove the connection.
- View Tools — Browse all discovered tools with their names and descriptions.
Connection Slugs
The slug identifies your connection incanvas.mcp.call("<slug>", ...).
Rules:
- Lowercase letters, digits, and underscores only (regex:
^[a-z][a-z0-9_]*$) - Must start with a letter
companies, places, people, contacts, ai, linkedin, instagram, log, delay, mcp, call, tools