Klaviyo logo
Email & Marketing
Live

Klaviyo MCP server

The deepest connector here: an entire email and SMS programme, readable end to end.

Tools
130
Read-only
77
Write
53
Off by default
Destructive
0
Flagged distinctly
What it does

Klaviyo through an assistant

Profiles, lists, segments, campaigns and flows are all queryable, along with the reports behind them -- per-campaign and per-flow performance, segment membership over time, and aggregate metric queries against your own event data. The catalogue, templates, images and tags are readable too. Building in Klaviyo -- profiles, lists, segments, campaigns, templates, coupons -- is opt-in, tool by tool.

  • Profiles, lists and segments, with filtering
  • Campaign, flow and segment performance reports
  • Metric aggregates and raw event queries against your own data
  • Catalogue items, templates, images and tags
  • Bulk profile import, suppression and export jobs
  • Create and update profiles, lists, segments, campaigns and templates (opt-in)
Ask your assistant

What people actually ask

Real questions, answered from live Klaviyo data.

“Which flow made the most revenue last month, and which message inside it?”

klaviyo_list_flowsklaviyo_get_flow_report

“How big is my engaged-30-day segment, and how has it moved this quarter?”

klaviyo_get_segmentklaviyo_query_segment_series

“Compare open and click rates across every campaign we sent last month.”

klaviyo_list_campaignsklaviyo_get_campaign_report
Tool catalogue

130 Klaviyo tools

Grouped by what they touch. Every tool is individually toggleable — you expose only what you want.

Profiles

23 tools10 read-only · 13 write

Showing 10 of 10 tools

  • klaviyo_add_profiles_to_list
    Write

    Add a batch of profiles to a Klaviyo list by profile ID (max 1,000 per request).

  • klaviyo_add_profile_to_list
    Write

    Add one or more profiles to a Klaviyo list by profile ID.

  • klaviyo_bulk_import_profiles
    Write

    Create or update a batch of up to 10,000 profiles in a single job via Klaviyo's Bulk Profile Import API.

  • klaviyo_bulk_suppress_profiles
    Write

    Suppress email marketing for a batch of profiles by email address, or for all members of a list/segment. This is a bulk action affecting many profiles' deliverability and marketing status — requires confirm_suppress: true.

  • klaviyo_bulk_unsuppress_profiles
    Write

    Remove USER_SUPPRESSED suppressions for a batch of profiles by email address, or for all members of a list/segment (does not affect unsubscribes or INVALID_EMAIL/HARD_BOUNCE suppressions). This is a bulk action affecting many profiles' deliverability and marketing status — requires confirm_unsuppress: true.

  • klaviyo_create_or_update_profile
    Write

    Create a new profile or update an existing one, matched by email/phone/external_id. Returns 201 if created, 200 if an existing profile was updated. Setting a field to null clears it; omitting a field leaves it unchanged.

  • klaviyo_create_profile
    Write

    Create a new customer profile in Klaviyo.

  • klaviyo_delete_profile
    Write

    Request deletion of a profile and its data (processed via Klaviyo's data privacy job queue).

  • klaviyo_get_bulk_import_profiles_job
    Read-only

    Get the status of a bulk profile import job by ID.

  • klaviyo_get_bulk_import_profiles_jobs
    Read-only

    List all bulk profile import jobs, optionally filtered by status.

+ 13 more profiles tools — see the full catalogue

Catalog

18 tools18 read-only · 0 write

Showing 10 of 10 tools

  • klaviyo_get_bulk_create_catalog_items_job
    Read-only

    Get the status of a Klaviyo bulk catalog item create job by job ID.

  • klaviyo_get_bulk_create_catalog_items_jobs
    Read-only

    List all Klaviyo bulk catalog item create jobs.

  • klaviyo_get_bulk_create_variants_job
    Read-only

    Get the status of a Klaviyo bulk catalog variant create job by job ID.

  • klaviyo_get_bulk_create_variants_jobs
    Read-only

    List all Klaviyo bulk catalog variant create jobs.

  • klaviyo_get_bulk_delete_catalog_items_job
    Read-only

    Get the status of a Klaviyo bulk catalog item delete job by job ID.

  • klaviyo_get_bulk_delete_catalog_items_jobs
    Read-only

    List all Klaviyo bulk catalog item delete jobs.

  • klaviyo_get_bulk_delete_variants_job
    Read-only

    Get the status of a Klaviyo bulk catalog variant delete job by job ID.

  • klaviyo_get_bulk_delete_variants_jobs
    Read-only

    List all Klaviyo bulk catalog variant delete jobs.

  • klaviyo_get_bulk_update_catalog_items_job
    Read-only

    Get the status of a Klaviyo bulk catalog item update job by job ID.

  • klaviyo_get_bulk_update_catalog_items_jobs
    Read-only

    List all Klaviyo bulk catalog item update jobs.

+ 8 more catalog tools — see the full catalogue

Campaigns

17 tools7 read-only · 10 write

Showing 10 of 10 tools

  • klaviyo_assign_template_to_campaign_message
    Write

    Assign an existing email template to a campaign message. Use after creating both the template and the campaign.

  • klaviyo_cancel_campaign_send
    Write

    Stop a campaign that has been armed. The two actions are NOT interchangeable. action "revert" returns the campaign to Draft and it can be rescheduled and re-armed -- use this whenever you want to change a scheduled send. action "cancel" is TERMINAL: the campaign moves to Cancelled, and Klaviyo will neither revert it to Draft nor schedule it again. The only way forward from Cancelled is klaviyo_clone_campaign. Do not use "cancel" to reschedule something.

  • klaviyo_clone_campaign
    Write

    Copy a Klaviyo campaign, including its messages, as a new Draft. Give the copy a name with `name`. Useful for reusing a campaign whose send was cancelled -- a Cancelled campaign can never be rescheduled, so cloning it is the only way to send that content.

  • klaviyo_create_campaign
    Write

    Create a fully-populated email campaign in Klaviyo, including HTML content, audience, and optional scheduling. Returns templateId AND messageId. They are linked at creation and do NOT stay in sync: editing the template with klaviyo_update_template does not change what this campaign sends. After any template edit, call klaviyo_assign_template_to_campaign_message with the messageId to re-point the campaign at the updated template.

  • klaviyo_delete_campaign
    Write

    Delete a Klaviyo campaign.

  • klaviyo_get_campaign
    Read-only

    Get details of a single Klaviyo campaign.

  • klaviyo_get_campaign_message
    Read-only

    Get the content/details of a single message within a Klaviyo campaign.

  • klaviyo_get_campaign_recipient_estimation
    Read-only

    Get the estimated recipient count for a Klaviyo campaign based on its current audience.

  • klaviyo_get_campaign_recipient_estimation_job
    Read-only

    Get the status of a campaign recipient estimation job triggered by refresh_campaign_recipient_estimation.

  • klaviyo_get_campaign_report
    Read-only

    Get campaign performance data (opens, clicks, conversions, deliveries, unsubscribes, etc.) matching what the Klaviyo UI shows, based on send date. Requires conversion_metric_id — use klaviyo_list_metrics to find the metric named 'Placed Order' as a sensible default if none is specified.

+ 7 more campaigns tools — see the full catalogue

Flows

13 tools10 read-only · 3 write

Showing 10 of 10 tools

  • klaviyo_create_flow
    Write

    Create a Klaviyo flow from a definition — triggers, trigger filter, profile filter, time delays, conditional splits and send actions, in one call. ALWAYS CREATED AS A DRAFT, and every send action is forced to draft whatever the definition says, so nothing can send as a side effect of building it. Going live is a separate explicit call to klaviyo_update_flow_status. Pass the object from klaviyo_get_flow_definition as `definition` and it is normalised for you: each action's id becomes a temporary_id, and fields that describe an existing flow are dropped. Every entry_action_id and links.next / next_if_true / next_if_false is checked against the actions present, and a dangling reference is refused before anything is created. Requires name and definition. Recommended workflow: build a sample flow in the Klaviyo UI -> klaviyo_get_flow_definition -> modify -> this tool -> review in the UI -> klaviyo_update_flow_status live.

  • klaviyo_get_flow
    Read-only

    Get a single Klaviyo flow's details and status.

  • klaviyo_get_flow_action
    Read-only

    Get details of a single action/step within a Klaviyo flow.

  • klaviyo_get_flow_actions
    Read-only

    List the actions (steps) of a Klaviyo flow, optionally filtered to one action type such as send-email or time-delay. Returns each action's id, which klaviyo_update_flow_action needs. Requires flow_id; action_type and limit are optional. Read-only.

  • klaviyo_get_flow_definition
    Read-only

    Get a Klaviyo flow's FULL definition — its triggers, profile filter, every action and the entry action — not just its name and status. This is the starting point for building a flow: make a sample in the Klaviyo UI, read it here, change what you need, and pass the result to klaviyo_create_flow. Requires flow_id. Read-only.

  • klaviyo_get_flow_message
    Read-only

    Get the content/details of a single message within a Klaviyo flow.

  • klaviyo_get_flow_report
    Read-only

    Get flow performance data (opens, clicks, conversions, deliveries, unsubscribes, etc.) matching what the Klaviyo UI shows, based on send date. Requires conversion_metric_id — use klaviyo_list_metrics to find the metric named 'Placed Order' as a sensible default if none is specified.

  • klaviyo_get_flows_triggered_by_list
    Read-only

    Get all Klaviyo flows that use the given list as their trigger.

  • klaviyo_get_flows_triggered_by_metric
    Read-only

    Get all Klaviyo flows that use the given metric as their trigger.

  • klaviyo_get_flows_triggered_by_segment
    Read-only

    Get all Klaviyo flows that use the given segment as their trigger.

+ 3 more flows tools — see the full catalogue

Templates

10 tools3 read-only · 7 write

Showing 10 of 10 tools

  • klaviyo_clone_template
    Write

    Copy a Klaviyo email template. Klaviyo's clone endpoint always copies the source's name, so this tool renames the copy afterwards to the `name` you pass; if that second step fails the result says so and the copy keeps the original name.

  • klaviyo_create_dnd_email_template
    Write

    Create a new drag-and-drop (DND) email template from a structured definition of sections, rows, columns, and blocks, rather than raw HTML.

  • klaviyo_create_template
    Write

    Create a reusable HTML email template in Klaviyo.

  • klaviyo_create_template_preview_send_job
    Write

    Send a test email of a template to one or more real addresses. Klaviyo serves this from its BETA revision channel, not GA -- Serve MCP sends the beta revision header for this one call only. If it starts returning 404 "No valid revisions found for method", Klaviyo has moved or promoted the endpoint and the connector needs updating; no argument change will fix that. Recipients must be valid email addresses and they will actually receive the email.

  • klaviyo_delete_template
    Write

    Delete a Klaviyo email template.

  • klaviyo_get_template
    Read-only

    Get a single Klaviyo email template's details and HTML content.

  • klaviyo_list_email_templates
    Read-only

    List email templates in the account with optional filtering and sorting.

  • klaviyo_render_template
    Read-only

    Render a Klaviyo template with sample data to preview the final HTML/text output.

  • klaviyo_update_dnd_email_template
    Write

    Update an existing drag-and-drop (DND) email template's name, text, or structured definition. The definition fully replaces the existing one — partial section/block updates are not supported.

  • klaviyo_update_template
    Write

    Update an existing Klaviyo email template's name or HTML content. IMPORTANT: if this template is attached to a campaign, editing it here does NOT change what that campaign sends -- the campaign holds a snapshot taken when the message was created. Follow this with klaviyo_assign_template_to_campaign_message, passing the campaign's messageId, or the campaign will send the old content.

Metrics

8 tools8 read-only · 0 write

Showing 8 of 8 tools

  • klaviyo_get_custom_metric
    Read-only

    Get a single custom metric by ID, including its aggregation method and metric groups definition.

  • klaviyo_get_custom_metrics
    Read-only

    List all custom metrics (metrics with a custom aggregation definition) in the account.

  • klaviyo_get_mapped_metric
    Read-only

    Get the account-specific metric (or custom metric) that Klaviyo has mapped to a standard conceptual metric like 'revenue' or 'started_checkout'.

  • klaviyo_get_mapped_metrics
    Read-only

    List all mapped metrics in the account — the standard conceptual metrics (revenue, started_checkout, viewed_product, etc.) and which account-specific metric or custom metric each is mapped to.

  • klaviyo_get_metric
    Read-only

    Get a single metric by ID.

  • klaviyo_get_metric_property
    Read-only

    Get a single metric property by ID — a property key observed on events for a metric, with its inferred type and label.

  • klaviyo_list_metrics
    Read-only

    List all metrics (event types) tracked in your Klaviyo account.

  • klaviyo_query_metric_aggregates
    Read-only

    Aggregate raw event data for a metric, optionally grouped by dimensions (e.g. $message, $flow, $campaign_channel) and broken into hour/day/week/month intervals. IMPORTANT: aggregates by EVENT time (when the event fired), not send time — for campaign/flow performance matching the Klaviyo UI, use klaviyo_get_campaign_report or klaviyo_get_flow_report instead. Use this only for time-series/dimension breakdowns those two don't support.

Segments

7 tools4 read-only · 3 write

Showing 7 of 7 tools

  • klaviyo_create_segment
    Write

    Create a dynamic segment in Klaviyo from a condition definition.

  • klaviyo_delete_segment
    Write

    Delete a Klaviyo segment.

  • klaviyo_get_segment
    Read-only

    Get a single Klaviyo segment's details and definition.

  • klaviyo_list_segments
    Read-only

    List all segments in your Klaviyo account.

  • klaviyo_query_segment_series
    Read-only

    Get segment membership statistics (members_added, members_removed, net_members_changed, total_members) as a time series broken into hourly/daily/weekly/monthly intervals. Data unavailable before June 1 2023; max timeframe span 1 year.

  • klaviyo_query_segment_values
    Read-only

    Get aggregate segment membership statistics (members_added, members_removed, net_members_changed, total_members) as totals across a timeframe, not broken into a time series. Data unavailable before June 1 2023; max timeframe span 1 year.

  • klaviyo_update_segment
    Write

    Update a Klaviyo segment's name or condition definition.

Tags

6 tools4 read-only · 2 write

Showing 6 of 6 tools

  • klaviyo_create_tag
    Write

    Create a new tag in Klaviyo for organizing campaigns, flows, lists, and segments.

  • klaviyo_get_tag
    Read-only

    Get a single Klaviyo tag by ID.

  • klaviyo_get_tag_group
    Read-only

    Get a single Klaviyo tag group by ID.

  • klaviyo_get_tag_groups
    Read-only

    List all tag groups in the Klaviyo account. Tag groups organize tags into categories; every account has one default tag group.

  • klaviyo_list_tags
    Read-only

    List all tags in the Klaviyo account.

  • klaviyo_tag_resource
    Write

    Apply an existing tag to a campaign, flow, list, or segment.

Lists

5 tools2 read-only · 3 write

Showing 5 of 5 tools

  • klaviyo_create_list
    Write

    Create a new contact list in Klaviyo.

  • klaviyo_delete_list
    Write

    Delete a Klaviyo list.

  • klaviyo_get_list
    Read-only

    Get a single Klaviyo list's details by ID.

  • klaviyo_list_lists
    Read-only

    List all contact lists in your Klaviyo account.

  • klaviyo_update_list
    Write

    Update a Klaviyo list's name or opt-in process.

Images

5 tools2 read-only · 3 write

Showing 5 of 5 tools

  • klaviyo_get_image
    Read-only

    Get a single image from the Klaviyo image library by ID.

  • klaviyo_list_images
    Read-only

    List images in the Klaviyo account's image library.

  • klaviyo_update_image
    Write

    Rename an image in the Klaviyo library or hide/unhide it from the asset library.

  • klaviyo_upload_image_from_file
    Write

    Upload an image into Klaviyo's asset library from a file the user gave you, WITHOUT publishing it anywhere public. Use this whenever someone attaches or hands over a picture. First call servemcp_request_upload to get an uploadUrl and a fileId, put the file there, then pass that fileId here -- the bytes go straight from Serve MCP to Klaviyo and are never exposed at a public URL. klaviyo_upload_image_from_url is the wrong tool for this: it needs a URL that is ALREADY public, so satisfying it would mean publishing the user's file first. Never do that. Klaviyo accepts jpeg, png and gif up to 5MB; anything else is refused before upload. Returns a hosted url to drop into campaign or template HTML.

  • klaviyo_upload_image_from_url
    Write

    Import an image into Klaviyo's image library from a public URL, for use in campaigns/templates.

Events

5 tools4 read-only · 1 write

Showing 5 of 5 tools

  • klaviyo_create_event
    Write

    Track a custom event for a profile in Klaviyo (e.g. Placed Order, Viewed Product).

  • klaviyo_get_download_for_event_bulk_export_job
    Read-only

    Get the download link(s) for a completed event bulk export job's gzipped CSV file.

  • klaviyo_get_event
    Read-only

    Get a single Klaviyo event by ID.

  • klaviyo_get_event_bulk_export_job
    Read-only

    Get the status and details of an event bulk export job. When complete, the response includes expiration and file size of the exported events file.

  • klaviyo_get_events
    Read-only

    List individual Klaviyo event records for a given filter (e.g. profile_id or metric_id). For aggregated metrics, prefer report/aggregate tools instead — this returns raw event rows.

More tools

13 tools5 read-only · 8 write

Showing 10 of 10 tools

  • klaviyo_create_coupon
    Write

    Create a coupon in Klaviyo, which coupon codes can then be generated under.

  • klaviyo_create_coupon_codes
    Write

    Bulk-generate unique coupon codes under an existing Klaviyo coupon.

  • klaviyo_create_translation
    Write

    BETA. Create a new translation collection linking a Klaviyo resource (campaign variation, flow message, template, or universal content block) to its localization settings for multi-language sends. Valid channel + resource combinations: email -> campaign-variation, flow-message, template, template-universal-content; sms -> campaign-variation, flow-message; mobile_push -> campaign-variation, flow-message; whatsapp -> template only.

  • klaviyo_create_universal_content
    Write

    Create a reusable universal content block in Klaviyo (button, drop_shadow, horizontal_rule, html, image, spacer, or text) that can be referenced across multiple email templates.

  • klaviyo_delete_translation
    Write

    BETA. Delete a translation collection by ID, removing all localization settings and translation values for the resource.

  • klaviyo_delete_universal_content
    Write

    Delete a Klaviyo universal content block.

  • klaviyo_get_account
    Read-only

    Get your Klaviyo account details and contact information.

  • klaviyo_get_all_universal_content
    Read-only

    List all universal content blocks in the Klaviyo account, optionally filtered by name, id, created/updated, or block type.

  • klaviyo_get_translation
    Read-only

    BETA. Get a translation collection by ID, returning its localization settings (source/target locales, channel, fallback). Pass include_values to also get the source text and per-locale translations for each translatable field.

  • klaviyo_get_translations
    Read-only

    BETA. List all translation collections in the account. Each translation links a Klaviyo resource (campaign variation, flow message, template, or universal content block) to its localization settings. Supports filtering on channel, resource_type, and related_resource_id.

+ 3 more more tools tools — see the full catalogue

Every tool name and description, machine-readable: /llms-full.txt

Access & safety

You decide what it can touch

The same model applies to every connector, and it defaults closed.

Authorize once

Connect Klaviyo through its own consent screen. Credentials are encrypted with AES-256-GCM and never returned by any API response or tool call.

Writes off by default

A new connection switches on a read-oriented default set only. Every write tool must be enabled deliberately before any client can call it.

Roles enforced server-side

READ, WRITE and ADMIN gate tool invocation on the server, not just in the UI. A READ member's token is refused any write tool.

Setup

Connect Klaviyo in minutes

No infrastructure to run. Copy one URL and one token into your client.

  1. 1Create a free workspace and connect Klaviyo.
  2. 2Choose which tools to expose — writes stay off until you enable them.
  3. 3Copy your MCP endpoint URL and bearer token.
  4. 4Paste them into Claude, Cursor, or any MCP client.
claude_desktop_config.json
{
  "mcpServers": {
    "serve-mcp": {
      "url": "https://servemcp.com/api/mcp/your-workspace",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer smcp_..."
      }
    }
  }
}

On Claude you paste one URL and sign in — no token to copy. See the setup guide for each client.

Put Klaviyo in front of your assistant

Free plan, no card required. Connect in minutes.