Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Apollo MCP server

Vendor MCP
Open markdown

The Apollo MCP connector routes your AI agent's tool calls to Apollo's own MCP server through Scalekit. Each user signs in to Apollo once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 76 tools.

Tools
76
What they doRead · write · destructive
28 · 40 · 828 read40 write8 destructive
Users sign in with
OAuth app
Scalekit's or your own

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 Apollo MCP connection

    In AgentKit > Connections, create an Apollo MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Apollo, so you don't need to register an OAuth app.

  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 = 'apollomcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Apollo MCP:', 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: 'apollomcp_apollo_contacts_search',
    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
  • apollomcp_apollo_analytics_sync_reportQuery Apollo's sales analytics data with flexible filtering, grouping, and aggregation across emails, calls, meetings, tasks, opportunities, and conversation intelligence.Read-only

    AnalyticsSyncReport

    Query Apollo's sales analytics data with flexible filtering, grouping, and aggregation across emails, calls, meetings, tasks, opportunities, and conversation intelligence. Supports 55+ dimensions for time-series, user, and cross-tab breakdowns.

    Inputs

    metricsarrayrequired
    Select 1-15 metrics. Categories: Email, Phone Calls, Meetings, Tasks, Contacts/Accounts, Opportunities, Sequences, Conversation Intelligence, LinkedIn. Key distinctions: - Phone: num_phone_calls_completed (all attempts) vs num_phone_calls_connect (recipient answered), num_phone_calls_connect_positive/negative/neutral (outcome sentiment), percent_phone_calls_connect (connection rate) - Meetings: num_all_meetings_scheduled (includes cancelled) vs num_meetings_held (actually occurred), num_all_meetings_rescheduled (rescheduled meetings), num_calendar_events_scheduled/cancelled (calendar events created/cancelled), num_all_meetings_scheduled_via_email/call (booked via email/call) - Tasks: overdue_tasks (all overdue including completed late) vs unfinished_overdue_tasks (still pending), percent_unfinished_overdue_tasks (share of scheduled tasks that are overdue and unfinished), percent_tasks_completed (completion rate), percent_tasks_completed_on_time (on-time completion rate) - Opportunities: avg_salescycle_days (days from creation to close) - Conversation: avg_talk_ratio (rep vs customer talk time), avg_question_rate (questions per conversation), avg_longest_monologue (longest uninterrupted speech), speaker_switches (times speaker changed) - Email: email_daily_limit is the configured daily outbound send limit per bucket (mailbox-level settings). Combine with num_emails_sent and/or other email metrics on the same query; use group_by or pivot_group_by on smart_user_id, smart_subteam_id, email_account_id, or smart_datetime_day/week to relate activity to the limit.
    _conversation_refstring
    Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
    _rationalestring
    Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
    date_rangeobject
    Time period. Use preset modality OR range_start + range_end (not both).
    filtersobject
    Optional filters to narrow down data. All filters are AND'ed together.
    group_byarray
    Primary breakdown dimension. For time series use smart_datetime_* options. For user analysis use smart_user_id or smart_subteam_id. Key email dimensions: - emailer_message_type: Email type (manual, sequence, reply, forwarded, etc.) - emailer_step_id: Breakdown by sequence step (by step ID) - emailer_touch_id: Breakdown by sequence step (by touch number/variant)
    pivot_group_byarray
    Optional second dimension for cross-tab/pivot table. Requires group_by. Use low-cardinality dimensions for best results.
    sortobject
    Sort grouped results by metric value. Only applies with group_by.
  • apollomcp_apollo_context_center_showFetch the team's full Context Center — the Ideal Customer Profile (ICP) and all product profiles Apollo uses to personalize AI-generated messaging.Read-only

    Get Context Center

    Fetch the team's full Context Center — the Ideal Customer Profile (ICP) and all product profiles Apollo uses to personalize AI-generated messaging. Returns the team's current Context Center including drafts that have not yet been approved. Always call this first before editing the profile or a product, so you read the current values and send only the fields that change. Returns a 404 if the team has no Context Center yet — in that case use apollo_context_center_create_profile to set one up.

    Inputs

    _conversation_refstring
    Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
    _rationalestring
    Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
  • apollomcp_apollo_context_center_show_productFetch a single product from the team's Context Center by its Apollo id.Read-only

    Get Context Center Product

    Fetch a single product from the team's Context Center by its Apollo id. Use this to read a product's current details before editing it with apollo_context_center_update_product or referencing it in messaging.

    Inputs

    idstringrequired
    Apollo ID of the product to fetch. Must be an exact id from a prior Context Center response in this session — never an id from memory or assumptions. Example: 63f53afe4ceeca00016bdd2f
    _conversation_refstring
    Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
    _rationalestring
    Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
  • apollomcp_apollo_conversations_get_insightsRetrieve AI-generated insights for a single conversation — only available once insights have been fully processed (state=insights_generated).Read-only

    Get Conversation Insights

    Retrieve AI-generated insights for a single conversation — only available once insights have been fully processed (state=insights_generated). Returns four sections: summary (plaintext overview including outcome, pricing discussion, next steps, objections, and pain points), action_items (timestamped items with speaker attribution), questions (raised during the call, with speaker and timestamp), and tracker_insights (topic tracker hits such as competitor mentions or pricing triggers, with timestamp and spoken sentence). The end user will not provide a conversation id directly — call apollo_conversations_search first to find candidates, then pass the id from that result. If multiple conversations match, present topic and start_time and ask the user to confirm which one before calling this tool; when exactly one conversation clearly matches, proceed without extra confirmation.

    Inputs

    idstringrequired
    Conversation id from apollo_conversations_search in this session. Must be the exact id value returned by that tool call — never from memory, prior sessions, or assumptions. Example: 66e9e215ece19801b219997f
    _conversation_refstring
    Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
    _rationalestring
    Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
  • apollomcp_apollo_conversations_get_transcriptRetrieve the transcript for a single conversation, along with conversation metadata, in the requested format.Read-only

    Get Conversation Transcript

    Retrieve the transcript for a single conversation, along with conversation metadata, in the requested format. The end user will not provide a conversation id directly — call apollo_conversations_search first to find candidates, then pass the id from that result. If multiple conversations match, present topic and start_time and ask the user to confirm which one before calling this tool; when exactly one conversation clearly matches, proceed without extra confirmation.

    Inputs

    idstringrequired
    Conversation id from apollo_conversations_search in this session. Must be the exact id value returned by that tool call — never from memory, prior sessions, or assumptions. Example: 66e9e215ece19801b219997f
    _conversation_refstring
    Short random token generated on your first call in a conversation; reuse the exact same value on every subsequent call to group related tool calls for analytics.
    _rationalestring
    Describe the user's intent and why this tool was selected in general terms only; do not include specific field values, names, emails, or other data.
    transcript_formatstring
    Transcript output format. Use "formatted" for readable text, "raw" for JSON segments, "hash" for structured objects.one of formattedrawhashdefault formatted