Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Klaviyo MCP server

Vendor MCP
Open markdown

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

Tools
263
What they doRead · write · destructive
127 · 97 · 39127 read97 write39 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Manage campaigns: create campaigns, assign email templates to campaign messages, and retrieve campaign details and performance reports
  • Manage profiles: create, update, and retrieve customer profiles; subscribe and unsubscribe profiles from marketing channels
  • Analyze flows and metrics: fetch flow details and reports; query and aggregate event metric data with custom dimensions
  • Manage email templates: create and retrieve reusable email templates for campaigns
  • Browse lists and segments: retrieve lists, segments, and catalog items to understand your audience
  • Manage translations: create, update, delete, and list translation collections for multi-language content

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

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

    Scalekit credentials are available for Klaviyo MCP server, 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 = 'klaviyomcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Klaviyo 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: 'klaviyomcp_get_account_details',
    toolInput: { model: 'claude' },
    })
    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
  • klaviyomcp_get_account_detailsGet the details of the account.Read-only

    Klaviyo Get Account Details

    Get the details of the account. You can view and edit your account details flow in the Klaviyo UI at https://www.klaviyo.com/settings/account

    Inputs

    modelstringrequired
    The name of the LLM currently using the tool.one of claudegptgeminiother
  • klaviyomcp_get_agent_knowledgeReturns one Agent Knowledge resource by id.Read-only

    Klaviyo Get Agent Knowledge

    Returns one Agent Knowledge resource by id. Resources are fetchable immediately after creation, including while pending, indexing, failed, or rejected.

    Inputs

    idstringrequired
    No description.
    modelstringrequired
    The name and version of the LLM currently using the tool, as specifically as known.
    fields_agent_knowledgestring
    Return only a subset of fields in the response.
    prompt_intentstring
    User's goal for this request in one sentence (the why, not the arguments), under 200 chars. Exclude PII and customer-specific values; refer to entities generically; omit if you can't.
  • klaviyomcp_get_agent_messages_for_customer_agent_conversationList message linkage or full message resources for a conversation.Read-only

    Klaviyo Get Agent Messages For Customer Agent Conversation

    List message linkage or full message resources for a conversation.

    Inputs

    idstringrequired
    No description.
    modelstringrequired
    The name and version of the LLM currently using the tool, as specifically as known.
    fields_customer_agent_messagestring
    Return only a subset of fields in the response.
    page_cursorstring
    Page cursor
    page_sizestring
    Default: 50. Min: 1. Max: 100.
    prompt_intentstring
    User's goal for this request in one sentence (the why, not the arguments), under 200 chars. Exclude PII and customer-specific values; refer to entities generically; omit if you can't.
  • klaviyomcp_get_agent_skillReturns full detail for a single skill: ``name``, ``display_name``, ``description``, ``instructions``, bound ``agent-tools`` relationship data, ``status``, and ``handoff``.Read-only

    Klaviyo Get Agent Skill

    Returns full detail for a single skill: ``name``, ``display_name``, ``description``, ``instructions``, bound ``agent-tools`` relationship data, ``status``, and ``handoff``. Skills are looked up by prefixed ``id``. To list all skills, use ``GET /agent-skills``.

    Inputs

    idstringrequired
    No description.
    modelstringrequired
    The name and version of the LLM currently using the tool, as specifically as known.
    fields_agent_skillstring
    Return only a subset of fields in the response.
    prompt_intentstring
    User's goal for this request in one sentence (the why, not the arguments), under 200 chars. Exclude PII and customer-specific values; refer to entities generically; omit if you can't.
  • klaviyomcp_get_agent_skillsReturns every skill configured for the calling company's Customer Agent.Read-only

    Klaviyo Get Agent Skills

    Returns every skill configured for the calling company's Customer Agent. Use this to inspect Customer Agent's current skills before adding or modifying a custom skill. Each item carries a prefixed ``id``, ``source``, ``name``, ``display_name``, ``description``, ``instructions``, bound ``agent-tools`` relationship data, ``status``, and ``handoff``. Use retrieve to inspect any one skill in detail.

    Inputs

    modelstringrequired
    The name and version of the LLM currently using the tool, as specifically as known.
    fields_agent_skillstring
    Return only a subset of fields in the response.
    prompt_intentstring
    User's goal for this request in one sentence (the why, not the arguments), under 200 chars. Exclude PII and customer-specific values; refer to entities generically; omit if you can't.
  • klaviyomcp_get_agent_toolReturns full configuration for a single tool: protocol, auth method, templated request configuration, variables, and referenced secrets.Read-only

    Klaviyo Get Agent Tool

    Returns full configuration for a single tool: protocol, auth method, templated request configuration, variables, and referenced secrets. Use to inspect a tool's setup before referencing it from a skill or modifying its config.

    Inputs

    idstringrequired
    No description.
    modelstringrequired
    The name and version of the LLM currently using the tool, as specifically as known.
    fields_agent_toolstring
    Return only a subset of fields in the response.
    prompt_intentstring
    User's goal for this request in one sentence (the why, not the arguments), under 200 chars. Exclude PII and customer-specific values; refer to entities generically; omit if you can't.
  • klaviyomcp_get_agent_toolsReturns every external tool (HTTP API endpoint) Customer Agent skills can call.Read-only

    Klaviyo Get Agent Tools

    Returns every external tool (HTTP API endpoint) Customer Agent skills can call. Each tool has an id, display name, protocol details (method, URL template), authentication setup, and any referenced secrets. Use this before creating a new tool to avoid duplicates, or before binding a tool to a skill to confirm the tool exists.

    Inputs

    modelstringrequired
    The name and version of the LLM currently using the tool, as specifically as known.
    fields_agent_toolstring
    Return only a subset of fields in the response.
    filterstring
    Available filters for this endpoint: { "name": { "operators": [ "contains" ] }, "tool_type": { "operators": [ "equals" ], "enum": [ "internal", "custom" ] }, "created_at": { "operators": [ "equals", "greater-or-equal", "less-or-equal" ], "type": "datetime" }, "updated_at": { "operators": [ "equals", "greater-or-equal", "less-or-equal" ], "type": "datetime" } }
    page_cursorstring
    Page cursor
    page_sizestring
    Default: 50. Min: 1. Max: 100.
    prompt_intentstring
    User's goal for this request in one sentence (the why, not the arguments), under 200 chars. Exclude PII and customer-specific values; refer to entities generically; omit if you can't.
  • klaviyomcp_get_all_universal_contentGet all universal content in an account.Read-only

    Klaviyo Get All Universal Content

    Get all universal content in an account.

    Inputs

    modelstringrequired
    The name and version of the LLM currently using the tool, as specifically as known.
    fields_template_universal_contentstring
    Return only a subset of fields in the response.
    filterstring
    Available filters for this endpoint: { "id": { "operators": [ "any", "equals" ] }, "name": { "operators": [ "any", "equals" ] }, "created": { "operators": [ "greater-or-equal", "greater-than", "less-or-equal", "less-than" ], "type": "datetime" }, "updated": { "operators": [ "greater-or-equal", "greater-than", "less-or-equal", "less-than" ], "type": "datetime" }, "definition.content_type": { "operators": [ "equals" ], "enum": [ "block", "section" ] }, "definition.type": { "operators": [ "equals" ], "enum": [ "button", "coupon", "drop_shadow", "header", "horizontal_rule", "html", "image", "product", "review", "social", "spacer", "split", "table", "text", "unsupported", "video" ] } }
    page_cursorstring
    Cursor returned in the previous response's `links.next`; supply to fetch the next page of results.
    page_sizestring
    Default: 20. Min: 1. Max: 100.
    prompt_intentstring
    User's goal for this request in one sentence (the why, not the arguments), under 200 chars. Exclude PII and customer-specific values; refer to entities generically; omit if you can't.
    sortstring
    Sort results by attribute. Prefix with `-` for descending order.