Connect
Optimize
Secure
Announcing StackOne Defender: leading open-source prompt injection guard for your agent • Read More →
Production-ready Klaviyo MCP server with 162 extensible actions — plus built-in authentication, security, and optimized execution.
Coverage
Create, read, update, and delete across Klaviyo — and extend your agent's capabilities with custom actions.
Authentication
Per-user OAuth in one call. Your Klaviyo MCP server gets session-scoped tokens with zero credentials stored on your infra.
Agent Auth →Security
Every Klaviyo tool response scanned for prompt injection in milliseconds — 88.7% accuracy, all running on CPU.
Prompt Injection Defense →Performance
Free up to 96% of your agent's context window to enhance reasoning and reduce cost, on every Klaviyo call.
Tools Discovery →A Klaviyo MCP server lets AI agents read and write Klaviyo data through the Model Context Protocol — Anthropic's open standard for connecting LLMs to external tools. StackOne's Klaviyo MCP server ships with 162 pre-built actions, fully extensible via the Connector Builder — plus managed authentication, prompt injection defense, and optimized agent context. Connect it from MCP clients like Claude Desktop, Cursor, and VS Code, or from agent frameworks like OpenAI Agents SDK, LangChain, and Vercel AI SDK.
Every action from Klaviyo's API, ready for your agent. Create, read, update, and delete — scoped to exactly what you need.
Retrieve all Klaviyo accounts associated with the current API key. Always returns exactly one account object per key.
Retrieve detailed configuration for a specific Klaviyo account by its unique account ID.
Create a new email, SMS, or mobile push campaign as a draft. Requires specifying the channel, audiences, and at least one campaign message.
Duplicate an existing campaign to create a new Draft campaign, optionally giving it a new name.
Trigger a campaign to send immediately (or at its configured scheduled time) by creating an asynchronous send job. Campaign message must have a template assigned (via assign_template_to_campaign_message) and an audience configured before sending.
List email, SMS, or push campaigns with required channel filter and optional sorting and pagination.
Retrieve complete details for a single campaign by its unique ID, including status, audiences, send strategy, and tracking options.
Update campaign properties such as name, target audiences, send strategy, or tracking options before the campaign is sent.
Permanently delete a campaign by ID. This action cannot be undone. Only Draft campaigns can be deleted.
Retrieve full details for a specific campaign message by its unique ID, including channel-specific content and render options.
Update the content and settings of a campaign message, including channel-specific fields such as subject, body, sender info, and mobile push options.
Create a new product catalog item with title, description, URL, price, and images, optionally assigning it to one or more catalog categories.
List all product catalog items in the account with filtering by title, category, or IDs, sorting by creation date, and cursor-based pagination up to 100 items per page.
Retrieve the full details of a specific catalog item by its compound ID, with optional variant inclusion and sparse fieldsets.
Update an existing catalog item's title, description, URL, price, images, or published status using PATCH semantics - only supplied fields are changed.
Permanently delete a catalog item by its compound ID, removing it from all recommendation feeds and product blocks.
Create a new product catalog category with an external ID and display name, optionally assigning catalog items to it at creation time.
Retrieve the full details of a specific catalog category by its compound ID, including its name and external ID.
Update an existing catalog category's name or item associations using PATCH semantics - only supplied fields are changed.
Permanently delete a catalog category by its compound ID, removing the category grouping without deleting the items it contained.
Create a new catalog variant (size, color, or style variation) for an existing catalog item, with SKU, inventory, price, and URL.
List all product catalog variants in the account with filtering by item, SKU, title, or published status, sorting by creation date, and cursor-based pagination up to 100 variants per page.
Retrieve the full details of a specific catalog variant by its compound ID, including SKU, inventory quantity, price, and published status.
Update an existing catalog variant's SKU, price, inventory quantity, title, images, or published status using PATCH semantics - only supplied fields are changed.
Permanently delete a catalog variant by its compound ID, removing it from recommendation feeds and back-in-stock subscription eligibility.
Create a new coupon container with a unique external ID, matching your e-commerce platform's coupon identifier.
List all coupons in the account with optional sparse fieldsets and cursor-based pagination.
Retrieve complete details for a specific coupon by its unique Klaviyo coupon ID.
Update the description or monitor configuration of an existing coupon. The external_id cannot be changed after creation. Note: Shopify-originated coupons (synced from Shopify via Klaviyo UI) return 404 on get/update/delete — they are not accessible via the Coupons API.
Permanently delete a coupon and all its associated coupon codes. This action is irreversible. Note: Shopify-originated coupons (synced from Shopify via Klaviyo UI) return 404 on get/update/delete — they are not accessible via the Coupons API. Only API-created or non-Shopify UI-uploaded coupons can be managed.
Create a single unique coupon code and associate it with an existing coupon. Use bulk_create_coupon_codes for creating multiple codes at once.
List coupon codes filtered by coupon ID or profile ID. A filter specifying coupon.id or profile.id is required.
Retrieve full details for a specific coupon code by its unique ID, including its status, unique code value, and expiration date.
Update the status or expiration date of an existing coupon code. Useful for manually marking codes as used or extending their validity.
Permanently delete a single coupon code by its ID. This action is irreversible.
Track a server-side customer activity event for a profile, such as a purchase, page view, or custom business action.
List Klaviyo events (customer activity records) with optional filtering by metric, profile, or date range.
Retrieve complete details for a specific event by its unique ID, including all event properties and optional metric and profile data.
Create a new Klaviyo automation flow with a trigger, chained actions, and optional profile filters. Use this to programmatically set up welcome series, abandoned cart, post-purchase, birthday, and other automated messaging workflows.
List all Klaviyo automation flows with optional filtering by name, status, trigger type, and date, plus pagination and sorting.
Retrieve the full configuration of a specific Klaviyo flow by its unique ID, including trigger definition and optional flow actions.
Permanently delete a flow and all its actions by flow ID. Use this to remove test flows or decommission automation workflows. This action cannot be undone.
Retrieve detailed configuration for a single flow action step by its unique ID, including its type, branching links, and optional message content.
Update a single action within a flow — change email subject lines, SMS body text, delay durations, split conditions, or action status. Use this to modify existing flow actions without recreating the entire flow.
Create a new Klaviyo form — popup, flyout, embed, banner, or full screen. Use this to programmatically deploy signup forms, coupon popups, back-in-stock alerts, and other customer-facing form experiences.
List all signup forms and pop-ups in the account with filtering, sorting, and cursor-based pagination up to 100 results per page.
Retrieve the full configuration and version history for a specific Klaviyo form by its unique ID.
Permanently delete a form by its ID. Use this to remove test forms or decommission form experiences. This action cannot be undone.
List all images in the Klaviyo asset library with filtering by name, format, size, or visibility, plus sorting and pagination.
Retrieve complete metadata for a specific image in the Klaviyo asset library by its unique ID.
Update the name or visibility (hidden status) of an existing image in the Klaviyo asset library.
List all event metric types tracked in the Klaviyo account, including built-in and integration-specific metrics, up to 200 per page.
Retrieve complete details for a specific event metric type by its unique ID, including integration source and optional flow trigger relationships.
Create a new custom composite metric that aggregates multiple base metrics into a single unified metric for attribution and reporting.
List all custom composite metrics in the account that combine multiple underlying metrics into a single unified reporting and attribution metric.
Retrieve the full definition and composition details for a specific custom composite metric by its unique ID.
Update the name or definition of an existing custom composite metric using PATCH semantics.
Permanently delete a custom composite metric from the account by its unique ID.
Create a new customer profile with contact details, location, and custom properties; at least one of email, phone_number, or external_id must be provided to uniquely identify the profile.
List all customer profiles in the account with rich filtering, sorting, subscription and predictive analytics data, up to 100 per page.
Retrieve the complete data for a specific customer profile by its Klaviyo ID, including optional subscription consent, list/segment memberships, and predictive analytics.
Update an existing customer profile's contact details, location, or custom properties using PATCH semantics, with support for appending to or unsetting specific custom property keys.
Create a new segment with complex condition groups
List all segments in the account with filtering by name, status, or timestamps, sorting, and cursor-based pagination, including optional tags and flow trigger inclusions.
Retrieve the full details of a specific segment by its unique ID, including its condition definition, active status, and optional tags and flow trigger inclusions.
Update an existing segment with new properties or definition
Permanently delete a segment from the account by its unique ID - this removes the segment definition but does not delete the profiles that were in it.
Create a new tag, optionally associating it with a specific tag group, or it defaults to the account's default tag group.
List all tags in the account with cursor-based pagination, name filtering, and optional tag group inclusion, up to 50 results per page.
Retrieve complete details for a specific tag by its unique ID, including optional tag group relationship.
Update the name of an existing tag by its unique ID using PATCH semantics.
Permanently delete a tag and automatically remove all its associations with campaigns, flows, lists, and segments.
Create a new tag group to organize related tags under a shared category, with optional exclusivity enforcement across the account.
List all tag groups in the account with filtering by name, exclusivity, or default status, and cursor-based pagination up to 25 results per page.
Retrieve the full details of a specific tag group by its unique ID, including its name, exclusivity setting, and default status.
Update the name of an existing tag group using PATCH semantics - only the name can be changed, not the exclusivity or default status.
Permanently delete a tag group and all of its tags and their resource associations - the account's default tag group cannot be deleted.
Create a new email template with custom HTML content or a drag-and-drop structure, for use in campaigns and automated flows.
Create a duplicate copy of an existing email template with an optional new name, useful for creating variations without modifying the original.
List all email templates in the account with filtering by name or timestamps, sorting, and cursor-based pagination up to 10 results per page.
Retrieve the full HTML content and metadata for a specific email template by its unique ID.
Update the HTML content, plaintext version, AMP version, or name of an existing email template using PATCH semantics - note that drag-and-drop (USER_DRAGGABLE) templates cannot be updated via API.
Permanently delete an email template from the account by its unique ID - this action cannot be undone.
Create a new reusable universal content block (button, image, text, HTML, spacer, horizontal rule, or drop shadow) that can be embedded across multiple email templates.
List all reusable universal content blocks in the account with filtering by name, content type, or timestamps, sorting, and pagination up to 100 per page.
Retrieve the full definition and metadata of a specific universal content block by its unique ID, including block type, content, display options, and styles.
Update the name or block definition of an existing universal content block using PATCH semantics - changes propagate to all templates that embed this block.
Permanently delete a universal content block from the account - any templates that embed this block will lose the reference and may display broken content.
Create a new webhook subscription with an HTTPS endpoint URL, signing secret, and one or more event topic subscriptions for real-time event notifications.
List all webhook subscriptions configured in the account, with optional inclusion of their subscribed topic definitions.
Retrieve the full configuration details of a specific webhook subscription by its unique ID, including endpoint URL, enabled status, and subscribed topics.
Update a webhook's name, endpoint URL, signing secret, enabled status, or topic subscriptions using PATCH semantics - useful for rotating secrets or changing event subscriptions.
Permanently delete a webhook subscription from the account, stopping all event notifications to that endpoint.
Retrieve all available webhook event topics that can be subscribed to, returning topic IDs and descriptions for use when creating or updating webhooks.
Retrieve the full details of a specific webhook topic by its ID, including the event schema, payload structure, and description for integration planning.
Additively associate one or more catalog items with a specific category without replacing existing item memberships.
Additively assign one or more catalog categories to a specific item without replacing its existing category memberships.
Subscribe an existing profile to back-in-stock notifications for a specific catalog variant via EMAIL, PUSH, or SMS channels, for use in server-side applications.
Track a client-side event from a browser or mobile app using the public API key. No server-side credentials required.
Create or update a Klaviyo profile from client-side code using the public API key. Safe for use in browser and mobile apps.
Import an image into the Klaviyo asset library from a public URL or a base64-encoded data URI.
Create a new subscriber list with a specified name and opt-in process (single or double opt-in) for managing profile subscriptions.
Add one or more existing profiles to a subscriber list by their profile IDs, up to 1000 profiles per call.
Get the current estimated number of recipients for a campaign based on its configured audiences.
Retrieve all tags associated with a specific campaign for organizational and filtering purposes.
Retrieve all campaign messages (email, SMS, or push variants) that belong to a specific campaign.
List all product catalog categories in the account with filtering by name or item membership, sorting by creation date, and cursor-based pagination up to 100 categories per page.
Retrieve the content and configuration of a specific flow message by its ID, including channel-specific content and template association.
List all action steps for a specific flow with pagination, filtering by action type or status, and sorting.
Retrieve all tags associated with a specific flow for organizational and categorization purposes.
List all message variants associated with a specific flow action step, with pagination, filtering, and sorting options.
List all subscriber lists in the account with filtering by name or timestamps, sorting, and cursor-based pagination up to 10 results per page.
Retrieve the full details of a specific subscriber list by its unique ID, with optional profile count, tags, and flow trigger inclusions.
Retrieve all tags that have been applied to a specific subscriber list, returning full tag objects including their names.
Retrieve all profile members of a subscriber list with filtering, sorting by join date, and cursor-based pagination up to 100 per page.
Retrieve all automation flows that use a specific subscriber list as their trigger, useful for understanding dependencies before modifying or deleting the list.
Query aggregated event data for a metric over a date range, with grouping by time intervals, campaign, flow, channel, or custom dimensions.
Retrieve the definition and inferred data type of a specific metric property, with optional sample values for reference.
Retrieve all automation flows that use a specific metric as their entry trigger event.
Retrieve all subscriber lists that a specific profile is a member of, returning full list objects with name, opt-in process, and timestamps.
Retrieve all dynamic and static segments that a specific profile currently qualifies for, returning full segment objects with name, status, and definition details.
Retrieve the subscriber list(s) that profiles were added to during a specific bulk profile import job, useful for verifying list membership after import completion.
Retrieve all profiles that were successfully created or updated by a completed bulk profile import job, with pagination and optional subscription data.
Generate a campaign performance report with aggregate statistics (opens, clicks, revenue, conversions) for a given timeframe and optional campaign or channel filter.
Generate a flow performance report with aggregate statistics (opens, clicks, revenue, conversions) broken down by flow, message, or channel for a given timeframe.
Generate a time-series flow performance report with statistics aggregated into daily, weekly, monthly, or hourly intervals for trend analysis.
Generate a segment membership report showing how many profiles were added, removed, or are currently in a segment over a given timeframe.
Generate a time-series segment membership report with statistics aggregated into daily, weekly, monthly, or hourly intervals for growth trend analysis.
Retrieve all tags applied to a specific segment, returning full tag objects with their names for auditing and UI display purposes.
Retrieve all profiles currently matching a segment's conditions, with filtering by contact details or join date, sorting, and pagination up to 100 per page.
Retrieve all automation flows that use a specific segment as their trigger, useful for understanding dependencies before modifying or deleting the segment.
Retrieve the IDs of all automation flows that are associated with a specific tag.
Retrieve the IDs of all campaigns that are associated with a specific tag.
Retrieve the IDs of all subscriber lists that are associated with a specific tag.
Retrieve the IDs of all segments that are associated with a specific tag.
Retrieve all tags that belong to a specific tag group, returning the full tag objects including their names.
Update the name or opt-in process (single vs double opt-in) of an existing subscriber list using PATCH semantics.
Remove specific catalog items from a category's membership without affecting other items already in the category.
Remove specific category assignments from a catalog item without affecting the item's other category memberships.
Permanently delete a subscriber list from the account - this removes the list definition but does not delete the profiles that were in it.
Remove one or more profiles from a subscriber list by their profile IDs, up to 1000 per call, without affecting their subscription or consent status.
Assign an email template to a campaign message, creating a non-reusable snapshot of the template's HTML for that message.
Cancel an in-progress campaign send job or revert a scheduled campaign back to Draft status. Campaign must be in Scheduled state (after send_campaign). The action attribute supports both 'cancel' and 'revert' (back to Draft), but 'revert' is not documented by Klaviyo. Each is one-time -- cancelled campaigns cannot be reverted.
Submit an asynchronous bulk job to create up to 100 catalog items in a single request, returning a job ID to poll for completion.
Submit an asynchronous bulk job to update up to 100 existing catalog items in a single request, returning a job ID to poll for completion.
Submit an asynchronous bulk job to permanently delete up to 100 catalog items in a single request, returning a job ID to poll for completion.
Submit an asynchronous bulk job to create up to 100 catalog categories in a single request, returning a job ID to poll for completion.
Submit an asynchronous bulk job to update up to 100 existing catalog categories in a single request, returning a job ID to poll for completion.
Submit an asynchronous bulk job to permanently delete up to 100 catalog categories in a single request, returning a job ID to poll for completion.
Submit an asynchronous bulk job to create up to 100 catalog variants in a single request, each linked to an existing parent catalog item, returning a job ID to poll for completion.
Submit an asynchronous bulk job to update up to 100 existing catalog variants in a single request, returning a job ID to poll for completion.
Submit an asynchronous bulk job to permanently delete up to 100 catalog variants in a single request, returning a job ID to poll for completion.
Create up to 1000 coupon codes in a single bulk job, associating each with an existing coupon.
Efficiently ingest up to 1000 events in a single asynchronous bulk job, grouped by profile for high-volume tracking scenarios.
Permanently merge one or more source profiles into a destination profile, consolidating their event history, list memberships, and properties - source profiles are deleted after merging. Warning: Merge is destructive and irreversible — the source profile is permanently deleted.
Submit an asynchronous bulk import job to create or update up to 10,000 profiles in a single request, with optional list assignment for imported profiles.
Submit a GDPR/CCPA-compliant data deletion request for a profile identified by email, phone number, or Klaviyo profile ID - the deletion is processed asynchronously.
Apply a tag to one or more automation flows to organize and categorize them in the Klaviyo UI.
Apply a tag to one or more campaigns to organize and categorize them in the Klaviyo UI.
Apply a tag to one or more subscriber lists to organize and categorize them in the Klaviyo UI.
Apply a tag to one or more audience segments to organize and categorize them in the Klaviyo UI.
Render an email template with sample profile context data to preview the final HTML, plaintext, and AMP output before sending.
One endpoint. Any framework. Your agent is talking to Klaviyo in under 10 lines of code.
MCP Clients
Agent Frameworks
{
"mcpServers": {
"stackone": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://api.stackone.com/mcp?x-account-id=<account_id>",
"--header",
"Authorization: Basic <YOUR_BASE64_TOKEN>"
]
}
}
}Anthropic's code_execution processes data already in context. Custom MCP code mode keeps raw tool responses in a sandbox. 14K tokens vs 500.
11 min
Benchmarking BM25, TF-IDF, and hybrid search for MCP tool discovery across 916 tools. The 80/20 TF-IDF/BM25 hybrid hits 21% Top-1 accuracy in under 1ms.
10 min
MCP tools that read emails, CRM records, and tickets are indirect prompt injection vectors. Here's how we built a two-tier defense that scans tool results in ~11ms.
12 min
origin_owner_id.All the tools you need to build and scale AI agent integrations, with best-in-class connectivity, execution, and security.