Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Intercom

Scalekit connector
Open markdown

The Intercom connector lets your AI agent act in each user's Intercom account. Each user signs in to Intercom once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 113 tools.

Tools
113
What they doRead · write · destructive
55 · 42 · 1655 read42 write16 destructive
Users sign in with
OAuth app
Your own Intercom app

What you can do

  • Handle conversations: read, search, reply to, assign, close, and snooze customer conversations
  • Manage contacts: create, update, search, merge, archive, and tag users and leads, and add notes
  • Manage tickets: create, search, update, and reply to tickets, or convert conversations into tickets
  • Send messages: send in-app or email messages from an admin to a contact
  • Maintain the Help Center: create, update, search, and delete articles and organize them in collections
  • Manage companies: create, update, and delete companies and attach contacts to them

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Intercom connection

    In AgentKit > Connections, create an Intercom connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

    Intercom connections use your own OAuth app. Register one with Intercom and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Intercom connection.

    Console steps with screenshots

    Register your Scalekit environment with the Intercom connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. You’ll need your app credentials from the Intercom Developer Hub.

    1. Set up auth redirects

      • In Scalekit dashboard, go to AgentKit > Connections > Create Connection.

      • Find Intercom from the list of providers and click Create. Copy the redirect URI. It looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

        Copy redirect URI from Scalekit dashboard

      • In the Intercom Developer Hub, open your app and go to Configure → Authentication.

      • Click Edit, paste the copied URI into the Redirect URLs field, and click Save.

        Add redirect URL in Intercom Developer Hub

    2. Get client credentials

      • In the Intercom Developer Hub, open your app and go to Configure → Basic Information:
        • Client ID — listed under Client ID
        • Client Secret — listed under Client Secret
    3. Add credentials in Scalekit

      • In Scalekit dashboard, go to AgentKit > Connections and open the connection you created.

      • Enter your credentials:

        • Client ID (from your Intercom app)
        • Client Secret (from your Intercom app)

        Add credentials in Scalekit dashboard

      • Click Save.

  5. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'intercom'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Intercom:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'intercom_identify_admin',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • intercom_get_macroRetrieve a single macro (saved reply) by its ID, subject to the same team-visibility rules as the Intercom inbox.Read-only

    Get Macro

    Retrieve a single macro (saved reply) by its ID, subject to the same team-visibility rules as the Intercom inbox.

    Inputs

    macro_idstringrequired
    The Intercom ID of the macro to retrieve.

    Also accepts schema_version and tool_version to pin a version.

  • intercom_identify_adminRetrieve the currently authenticated admin's details.Read-only

    Identify Admin

    Retrieve the currently authenticated admin's details.

    Inputs

    This tool takes no inputs.

    Also accepts schema_version and tool_version to pin a version.

  • intercom_list_activity_log_event_typesList the event types that can appear in admin activity logs, for use as filters with Search Activity Logs.Read-only

    List Activity Log Event Types

    List the event types that can appear in admin activity logs, for use as filters with Search Activity Logs.

    Inputs

    This tool takes no inputs.

    Also accepts schema_version and tool_version to pin a version.

  • intercom_list_activity_logsList all admin activity logs within a date range.Read-only

    List Activity Logs

    List all admin activity logs within a date range. Dates must be Unix timestamps.

    Inputs

    created_at_afterstringrequired
    Start date as a Unix timestamp. Only logs after this date are returned.
    created_at_beforestring
    End date as a Unix timestamp. Only logs before this date are returned.

    Also accepts schema_version and tool_version to pin a version.

  • intercom_list_adminsList all admins in the Intercom workspace.Read-only

    List Admins

    List all admins in the Intercom workspace.

    Inputs

    display_avatarboolean
    If true, includes the admin's avatar image URL in the response.

    Also accepts schema_version and tool_version to pin a version.

  • intercom_list_all_companiesList all companies via Intercom's dedicated companies list endpoint (POST /companies/list), sorted by last_request_at descending by default.Read-only

    List All Companies

    List all companies via Intercom's dedicated companies list endpoint (POST /companies/list), sorted by last_request_at descending by default. Distinct from the GET /companies filter endpoint; use the Scroll API instead when iterating over more than 10,000 companies.

    Inputs

    orderstring
    asc or desc. Return the companies in ascending or descending order. Defaults to desc.
    pageinteger
    The page of results to fetch. Defaults to first page.
    per_pageinteger
    How many results to return per page. Defaults to 15.
  • intercom_list_articlesList all Help Center articles in the Intercom workspace.Read-only

    List Articles

    List all Help Center articles in the Intercom workspace.

    Inputs

    pageinteger
    Page number of results to return.
    per_pageinteger
    Number of articles per page (default: 15).

    Also accepts schema_version and tool_version to pin a version.

  • intercom_list_companiesRetrieve companies filtered by name, company_id, tag_id, or segment_id.Read-only

    List Companies

    Retrieve companies filtered by name, company_id, tag_id, or segment_id.

    Inputs

    company_idstring
    Filter by your system's company identifier.
    namestring
    Filter companies by name.
    pageinteger
    Page number of results to return.
    per_pageinteger
    Number of results per page.
    segment_idstring
    Filter companies by a segment's Intercom ID.
    tag_idstring
    Filter companies by a tag's Intercom ID.

    Also accepts schema_version and tool_version to pin a version.

Workflows

Proxy API call
// Make a request via Scalekit proxy
const result = await actions.request({
connectionName: 'intercom',
identifier: 'user_123',
path: '/me',
method: 'GET',
});
console.log(result);