Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Clari Copilot

Scalekit connector
Open markdown

The Clari Copilot connector lets your AI agent act in each user's Clari Copilot account. Each user connects their own Clari Copilot API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 20 tools.

Tools
20
What they doRead · write · destructive
10 · 7 · 310 read7 write3 destructive
Users sign in with

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 Clari Copilot connection

    In AgentKit > Connections, create a Clari Copilot connection. The name you give it is the connection_name your code passes. See Configure connections.

    Console steps with screenshots

    Each user connects with their Clari Copilot API key and API password. Clari Copilot needs both on every request, as the X-Api-Key and X-Api-Password headers. Scalekit stores them on the user’s connected account and sends both headers with every tool call.

    1. Get your Clari Copilot API key and API password

      • Sign in to Clari Copilot and open Workspace Settings → Integrations.
      • Open Clari Copilot API and copy the API key and API password.

      Both values are required. Keep them in a secure secret store.

    2. Create a connection in Scalekit

      • In Scalekit dashboard, go to AgentKit → Connections → Create Connection. Find Clari Copilot and click Create.
      • Note the Connection name — you will use this as connection_name in your code (e.g., claricopilot).
      • Click Save.
    3. Add a connected account

      Connected accounts link a specific user identifier in your system to a set of Clari Copilot credentials. Add one in the dashboard to test. In production, each user adds their own through the authorization link: they enter their credentials on the page it opens.

      In the dashboard, to test

      • Open the connection you created and click the Connected Accounts tab → Add account.
      • Fill in:
        • Your User’s ID — a unique identifier for this user in your system (e.g., user_123)
        • API Key — the Clari Copilot API key from step 1 (sent as X-Api-Key)
        • API Password — the Clari Copilot API password from step 1 (sent as X-Api-Password)
      • Click Create Account.

      From your backend, if your app already has the credentials

      For example, when users enter them on a settings page in your app:

      Pass both credentials as static auth details using the field names x_api_key and x_api_password. Scalekit rejects the account if either value is missing.

      import { Scalekit, ConnectorStatus } from '@scalekit-sdk/node';
      const scalekit = new Scalekit(
      process.env.SCALEKIT_ENVIRONMENT_URL,
      process.env.SCALEKIT_CLIENT_ID,
      process.env.SCALEKIT_CLIENT_SECRET,
      );
      // Never hard-code credentials — read from secure storage or user input
      const clariApiKey = getUserClariApiKey(); // retrieve from your secure store
      const clariApiPassword = getUserClariApiPassword();
      const authorizationDetails = {
      details: {
      case: 'staticAuth',
      value: {
      details: {
      x_api_key: clariApiKey,
      x_api_password: clariApiPassword,
      },
      },
      },
      };
      let { connectedAccount } = await scalekit.actions.upsertConnectedAccount({
      connectionName: 'claricopilot',
      identifier: 'user_123',
      authorizationDetails,
      });
      // Make sure the account is ACTIVE before the first tool call.
      if (connectedAccount?.status !== ConnectorStatus.ACTIVE) {
      ({ connectedAccount } = await scalekit.actions.upsertConnectedAccount({
      connectionName: 'claricopilot',
      identifier: 'user_123',
      authorizationDetails,
      }));
      }
  4. 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 = 'claricopilot'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Clari Copilot:', 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: 'claricopilot_calls_list',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user opens the link once and enters their Clari Copilot credentials there. If your app already has a user's credentials, add the account from your backend instead, as the console steps above show. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • claricopilot_account_getGet one CRM account stored in Clari Copilot by its source CRM ID.Read-only

    Get Account

    Get one CRM account stored in Clari Copilot by its source CRM ID. Returns the account's Copilot id, crm_id, name, phones, description, website, address, and custom fields. Use claricopilot_account_get to read a account you know the CRM ID of. Clari Copilot has no endpoint to list or search accounts.

    Inputs

    idstringrequired
    ID of the account in your source CRM (the crm_id it was created with in Clari Copilot) to get. Example: 0015g00000XyZabAAB.
  • claricopilot_call_details_getGet one Clari Copilot call by its Copilot call ID, including the full transcript and AI summary.Read-only

    Get Call Details

    Get one Clari Copilot call by its Copilot call ID, including the full transcript and AI summary. Returns the call's participants, metrics, live deal stage, transcript turns, summary with topics and action items, and competitor sentiments. Use claricopilot_call_details_get for one call's content. Use claricopilot_calls_list to find calls. Get the call ID from claricopilot_calls_list.

    Inputs

    idstringrequired
    Clari Copilot ID of the call, as returned in the id field by List Calls. Example: 64f1c2a9e4b0a1b2c3d4e5f6.
    include_audioboolean
    Set to true to include a signed audio_url for each call. The URL is valid for 4 hours. Defaults to false.
    include_videoboolean
    Set to true to include a signed video_url for each call. The URL is valid for 4 hours. Defaults to false.
  • claricopilot_calls_listList recorded calls in Clari Copilot, filtered by user, attendee, topic, status, source, time, or duration.Read-only

    List Calls

    List recorded calls in Clari Copilot, filtered by user, attendee, topic, status, source, time, or duration. Returns up to 100 calls per page with participants, status, deal and account context, call metrics, and pagination info (nextPageSkip). Use claricopilot_calls_list to find calls. Use claricopilot_call_details_get for one call's transcript and AI summary.

    Inputs

    filter_attendeesarray
    Only return calls that include these meeting attendees, given by email address. Example: ["buyer@customer.com"].
    filter_duration_gtinteger
    Only return calls longer than this many seconds (0 to 7200). Example: 300 for calls over 5 minutes.
    filter_duration_ltinteger
    Only return calls shorter than this many seconds (0 to 7200). Example: 3600 for calls under an hour.
    filter_modified_gtstring
    Only return calls whose status was updated after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
    filter_modified_ltstring
    Only return calls whose status was updated before this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
    filter_source_idarray
    Only return calls with these IDs from the source system (the source_id the call was recorded or created with). Example: ["abcd1234"].
    filter_statusarray
    Only return calls in these processing statuses. Use PROCESSED or POST_PROCESSING_DONE for calls whose transcript and analysis are ready. Example: ["POST_PROCESSING_DONE"].
    filter_time_gtstring
    Only return calls scheduled or started after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
    filter_time_ltstring
    Only return calls scheduled or started before this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
    filter_topicsarray
    Only return calls tagged with these topic names. Get topic names from the List Topics tool. Example: ["Pricing"].
    filter_typearray
    Only return calls from these meeting or dialer sources. Example: ["ZOOM", "MS_TEAMS"].
    filter_userarray
    Only return calls that involve these Clari Copilot users, given by their email address as shown on the Manage Users page. Example: ["rep@company.com"].
    include_audioboolean
    Set to true to include a signed audio_url for each call. The URL is valid for 4 hours. Defaults to false.
    include_paginationboolean
    Set to false to omit the pagination object (total matched count, hasMore, nextPageSkip), which makes the request much faster. Defaults to true.
    include_privateboolean
    Set to true to include calls marked private. Defaults to false.
    include_videoboolean
    Set to true to include a signed video_url for each call. The URL is valid for 4 hours. Defaults to false.
    limitinteger
    Maximum number of calls to return in one page (1 to 100). Defaults to 25.
    skipinteger
    Number of calls to skip before returning results, for paging (0 to 10000). Pass the nextPageSkip value from the previous response to get the next page. Defaults to 0.
    sort_processedstring
    Sort calls by when they were last processed: asc for oldest first, desc for newest first.one of ascdesc
    sort_timestring
    Sort calls by scheduled or start time: asc for oldest first, desc for newest first.one of ascdesc
  • claricopilot_contact_getGet one CRM contact stored in Clari Copilot by its source CRM ID.Read-only

    Get Contact

    Get one CRM contact stored in Clari Copilot by its source CRM ID. Returns the contact's Copilot id, crm_id, name, job title, account, phones, emails, stage, and custom fields. Use claricopilot_contact_get to read a contact you know the CRM ID of. Clari Copilot has no endpoint to list or search contacts.

    Inputs

    idstringrequired
    ID of the contact in your source CRM (the crm_id it was created with in Clari Copilot) to get. Example: 0015g00000XyZabAAB.
  • claricopilot_deal_getGet one CRM deal stored in Clari Copilot by its source CRM ID.Read-only

    Get Deal

    Get one CRM deal stored in Clari Copilot by its source CRM ID. Returns the deal's Copilot id, crm_id, name, owner, account, amount, stage, probability, dates, and custom fields. Use claricopilot_deal_get to read a deal you know the CRM ID of. Clari Copilot has no endpoint to list or search deals.

    Inputs

    idstringrequired
    ID of the deal in your source CRM (the crm_id it was created with in Clari Copilot) to get. Example: 0015g00000XyZabAAB.
  • claricopilot_keyword_topics_listList the unique keyword topic names in Clari Copilot.Read-only

    List Keyword Topic Names

    List the unique keyword topic names in Clari Copilot. Returns a flat list of topic name strings. Use claricopilot_keyword_topics_list for names to pass as a call topic filter. Use claricopilot_topics_list for topic IDs, trackers, and AI topics.

    Inputs

    This tool takes no inputs.

  • claricopilot_scorecard_templates_listList all scorecard templates in Clari Copilot.Read-only

    List Scorecard Templates

    List all scorecard templates in Clari Copilot. Returns each template's id, name, type, and its questions with skill, label, and order. Use claricopilot_scorecard_templates_list to read what a scorecard measures. Use claricopilot_scorecards_list for actual scores.

    Inputs

    This tool takes no inputs.

  • claricopilot_scorecards_listList call scorecards in Clari Copilot, filtered by time, the rep being scored, or the scorer.Read-only

    List Scorecards

    List call scorecards in Clari Copilot, filtered by time, the rep being scored, or the scorer. Returns up to 100 scorecards per page, each with its template ID, call ID, rep, scorer, total score, remark, and per-question scores, plus pagination info. Use claricopilot_scorecards_list for filled-in scores. Use claricopilot_scorecard_templates_list for the questions a scorecard asks.

    Inputs

    filter_rep_idstring
    Only return scorecards for this rep, the Copilot user being scored. Get the ID from List Users. Example: 5f3a1b2c4d5e6f7890123456.
    filter_scorer_idstring
    Only return scorecards filled in by this Copilot user. Get the ID from List Users. Example: 5f3a1b2c4d5e6f7890123457.
    filter_time_gtstring
    Only return scorecards created after this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
    filter_time_ltstring
    Only return scorecards created before this time. Use an ISO 8601 date-time, for example 2024-01-01T00:00:00Z.
    limitinteger
    Maximum number of scorecards to return in one page (1 to 100). Defaults to 50.
    skipinteger
    Number of scorecards to skip before returning results, for paging (0 to 10000). Pass the nextPageSkip value from the previous response to get the next page. Defaults to 0.

Workflows

List recent processed calls
const calls = await actions.executeTool({
connector: 'claricopilot',
identifier: 'user_123',
toolName: 'claricopilot_calls_list',
toolInput: {
filter_status: ['POST_PROCESSING_DONE'],
filter_time_gt: '2024-01-01T00:00:00Z',
sort_time: 'desc',
limit: 25,
include_pagination: false,
},
});
console.log(calls);
Get a call transcript and AI summary

Pass a call id returned by claricopilot_calls_list.

const details = await actions.executeTool({
connector: 'claricopilot',
identifier: 'user_123',
toolName: 'claricopilot_call_details_get',
toolInput: { id: '64f1c2a9e4b0a1b2c3d4e5f6' },
});
console.log(details);
Sync a deal from your CRM

Clari Copilot identifies CRM records by the ID they have in your source CRM (crm_id). Only the fields you pass are sent.

const deal = await actions.executeTool({
connector: 'claricopilot',
identifier: 'user_123',
toolName: 'claricopilot_deal_update',
toolInput: {
crm_id: '0065g00000AbCdEAAZ',
deal_name: 'Acme - 50 seats',
stage: 'NEGOTIATION',
amount: '25000',
},
});
console.log(deal);