Connect your AI Agents to Klaviyo in minutes

Available tools
create_campaign
Create a new Klaviyo email or SMS campaign. Requires a name, channel (email/sms), and audiences with included list IDs. Use list_lists to find valid list IDs.
get_campaign
Get a Klaviyo campaign by ID. Returns campaign details including name, status, and channel. Use list_campaigns to find valid campaign IDs.
update_campaign
Update a Klaviyo campaign's name or audiences. Only provided fields are updated. Use get_campaign to verify current state first.
delete_campaign
Delete a Klaviyo campaign. Only draft campaigns can be deleted. Use list_campaigns to find valid campaign IDs.
list_campaigns
List Klaviyo campaigns, optionally filtered by channel (email or sms). Returns campaign IDs, names, statuses, and channels.
send_campaign
Send a Klaviyo campaign immediately. The campaign must be in a sendable state (not draft). Use get_campaign to check status first.
create_event
Create a new Klaviyo event (e.g. Placed Order, Viewed Product) for a profile. Events are used to track actions and trigger flows. Use list_profiles to find profile IDs.
get_event
Get a Klaviyo event by ID. Returns event details including metric, profile, properties, and timestamp.
list_events
List Klaviyo events with optional filters by metric ID or profile ID, and pagination. Use list_metrics to find metric IDs. Use cursor from page_info for next page.
get_flow
Get a Klaviyo flow by ID. Returns flow details including name and status (live, draft, manual). Use list_flows to find valid flow IDs.
list_flows
List all Klaviyo flows. Flows are automated sequences triggered by events or conditions. Returns flow IDs, names, and statuses.
update_flow_status
Update a Klaviyo flow's status to live, draft, or manual. Use get_flow to check current status first.
get_flow_actions
Get all actions in a Klaviyo flow. Returns action IDs, types, and statuses for a given flow. Use list_flows to find valid flow IDs.
create_list
Create a new Klaviyo list. Lists are used to organize profiles for targeting in campaigns and flows.
get_list
Get a Klaviyo list by ID. Returns list details including name and timestamps.
update_list
Update a Klaviyo list name. Use get_list or list_lists to find valid list IDs.
delete_list
Delete a Klaviyo list. This does not delete the profiles in the list. Use list_lists to find valid list IDs.
list_lists
List all Klaviyo lists. Returns list IDs and names for targeting in campaigns.
get_list_profiles
Get profiles in a Klaviyo list with pagination. Returns up to 100 profiles per page. Use cursor from page_info for next page.
add_profiles_to_list
Add one or more profiles to a Klaviyo list. Use create_profile to create profiles first, then use their IDs here.
remove_profiles_from_list
Remove one or more profiles from a Klaviyo list. This does not delete the profiles, only removes the list membership.
get_metric
Get a Klaviyo metric by ID. Metrics represent event types like 'Placed Order' or 'Viewed Product'. Use list_metrics to find valid metric IDs.
list_metrics
List all Klaviyo metrics. Metrics represent event types that are tracked (e.g. 'Placed Order', 'Opened Email'). Returns metric IDs and names.
query_metric_aggregates
Query aggregate data for a Klaviyo metric (e.g. count, sum, unique over time). Use list_metrics to find metric IDs. Specify measurements like 'count' or 'sum' and optional time interval.
create_profile
Create a new Klaviyo profile with email, phone number, name, and custom properties. At least one of email or phone_number is required.
get_profile
Get a Klaviyo profile by ID. Returns profile details including email, phone, name, and custom properties.
update_profile
Update a Klaviyo profile's email, phone number, name, or custom properties. Only provided fields are updated.
list_profiles
List Klaviyo profiles with pagination. Returns up to 100 profiles per page. Use cursor from page_info for next page.
get_profile_lists
Get all lists a Klaviyo profile belongs to. Returns list IDs and names.
get_profile_segments
Get all segments a Klaviyo profile belongs to. Returns segment IDs and names.
get_segment
Get a Klaviyo segment by ID. Segments are dynamic groups of profiles based on conditions. Use list_segments to find valid segment IDs.
list_segments
List all Klaviyo segments. Segments are dynamic groups of profiles that update automatically based on conditions.
get_segment_profiles
Get profiles in a Klaviyo segment with pagination. Returns up to 100 profiles per page. Use cursor from page_info for next page.
create_tag
Create a new Klaviyo tag within a tag group. Tags are used to organize campaigns, flows, lists, and segments. Use list_tag_groups to find valid tag group IDs.
get_tag
Get a Klaviyo tag by ID. Use list_tags to find valid tag IDs.
update_tag
Update a Klaviyo tag's name. Use list_tags to find valid tag IDs.
delete_tag
Delete a Klaviyo tag. This cannot be undone. Use list_tags to find valid tag IDs.
list_tags
List all Klaviyo tags. Tags are used to organize and categorize campaigns, flows, lists, and segments.
create_tag_group
Create a new Klaviyo tag group. Tag groups organize related tags. Set exclusive=true if tags in the group should be mutually exclusive.
list_tag_groups
List all Klaviyo tag groups. Tag groups organize related tags together. Returns group IDs, names, and exclusivity settings.
create_template
Create a new Klaviyo email template with a name and optional HTML/text content. Templates can be used in campaigns and flows.
get_template
Get a Klaviyo template by ID. Returns template details including name, HTML, and text content. Use list_templates to find valid template IDs.
update_template
Update a Klaviyo template's name, HTML, or text content. Only provided fields are updated. Use get_template to check current content.
delete_template
Delete a Klaviyo template. This cannot be undone. Use list_templates to find valid template IDs.
list_templates
List all Klaviyo email templates. Returns template IDs, names, and content for use in campaigns and flows.
render_template
Render a Klaviyo template with context variables. Returns the rendered HTML and text content with variables replaced.
clone_template
Clone a Klaviyo template with a new name. Creates an exact copy of the template. Use list_templates to find valid template IDs.
validate_credential
Validate Klaviyo credentials by fetching account info. Returns {success, message}.

How to set up Merge Agent Handler
In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}FAQs on using Merge's Klaviyo MCP server
FAQs on using Merge's Klaviyo MCP server
What is a Klaviyo MCP?
It's an MCP server that wires your agents into Klaviyo's customer engagement platform via tools. Your agents can invoke these tools to create and send campaigns, manage customer profiles, add contacts to lists, query performance metrics, and more.
Klaviyo offers an official MCP server, but you can also use one from a third-party platform, like Merge Agent Handler.
How can I use the Klaviyo MCP server?
The use cases naturally depend on the agent you've built, but here are a few common ones:
- Post-purchase onboarding automation: When an order is completed in Shopify or WooCommerce, an agent creates or updates the customer's Klaviyo profile, adds them to a post-purchase list, and triggers the first message in the onboarding flow
- Churn risk re-engagement: When a customer is flagged as at-risk in a CRM based on inactivity signals, an agent updates their Klaviyo profile with a churn-risk attribute, adds them to a win-back segment, and activates a re-engagement flow
- Weekly campaign performance digest: An agent queries Klaviyo metric aggregates for all campaigns sent in the past 7 days, compiles open rates, click rates, and attributed revenue, and posts the summary to the marketing team's Slack channel
- Event-driven lifecycle emails: When a user hits a usage milestone in a product, an agent fires a Klaviyo event for that action, which triggers a flow that sends a tailored message with a relevant upsell or feature spotlight
What are popular tools for Klaviyo's MCP server?
Here are some of the most commonly used tools:
create_campaign: creates a new email or SMS campaign in Klaviyo with a specified name, audience, and send strategy. Use this when an agent needs to build a campaign programmatically in response to a scheduled event or business trigger
send_campaign: triggers the send of a created campaign to its configured audience. Call this when an agent has confirmed all campaign details are ready and needs to initiate delivery without manual intervention
create_profile: adds a new contact to Klaviyo with fields like email, phone, and custom properties. Use this when an agent is ingesting new customer data from an external system like a CRM, e-commerce platform, or form submission
update_profile: modifies an existing profile's attributes, including custom properties, consent status, or lifecycle stage. Good for workflows that sync behavioral signals or enrichment data from other tools back into Klaviyo
add_profiles_to_list: adds one or more profiles to a Klaviyo list, making them eligible for campaigns and flows targeting that list. Helpful when an agent is segmenting contacts based on actions taken in another system
query_metric_aggregates: runs an aggregated query against a Klaviyo metric, returning totals and breakdowns over a specified time range. Use this when an agent is compiling performance reports or evaluating campaign effectiveness across a date window
What makes Merge Agent Handler's Klaviyo MCP server better than alternative Klaviyo MCP servers?
Klaviyo has its own official MCP server, but running it through Merge Agent Handler makes sense for teams that need stricter controls:
- Enterprise-grade security and DLP: Merge Agent Handler includes built-in data loss prevention controls that let you block or redact sensitive fields before they reach an agent. For Klaviyo, this means you can prevent customer email addresses, purchase history, and behavioral engagement data from being surfaced to agents that don't explicitly need it
- Managed authentication and credentials: Merge stores and refreshes Klaviyo API credentials on your behalf. You never embed private API keys in agent configuration or redo your auth setup when they rotate
- Real-time observability and audit trail: Every tool call against Klaviyo is logged: which campaign was created, which profiles were updated, which metrics were queried, and what came back. Marketing and compliance teams can audit agent activity without any custom logging
- Tool Packs and controlled access: Tool Packs let you bundle specific Klaviyo tools with tools from other connectors into a single MCP endpoint, scoped to a specific use case. An agent gets exactly the tools it needs, nothing more
How can I start using Merge Agent Handler's Klaviyo MCP server?
You can take the following steps:
1. Create or log into your Merge Agent Handler account and navigate to Tool Packs (collections of connector tools scoped to a specific use case).
2. Create a new Tool Pack, then find and enable the Klaviyo connector. Match the tools to your workflow: analytics tools like query_metric_aggregates and list_campaigns work for reporting agents, while create_profile, add_profiles_to_list, and send_campaign are needed for agents that take action on customer data.
3. Add a Registered User inside the Tool Pack. This is the identity context under which your agent operates. Merge generates a unique MCP URL scoped to this user once it's created.
4. From the Registered User detail page, authenticate Klaviyo by completing the OAuth flow or entering your API key. Merge stores and manages the credentials going forward.
5. Copy the MCP URL from the Tool Pack detail page and generate an API key from Settings. You'll need both to connect your agent.
6. Add the MCP server to your agent or IDE using the MCP URL and API key. Your Klaviyo tools are now accessible through that endpoint.
Ready to try it out?
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now





















