Klaviyo MCP server: flow and campaign reporting, with sending left to people
Klaviyo ships an official MCP server, remote and local, that reaches most of its API — sending campaigns and writing profiles included. This guide covers a Klaviyo MCP server built the other way round: reporting that matches your dashboard, drafts and catalogue edits that follow the key's write mode, deletes and a flow going live held for a person, and no tool that sends, schedules or touches a profile.
What Klaviyo's official server gives you
Klaviyo's own MCP server runs remote at mcp.klaviyo.com/mcp with OAuth, or locally, and covers most of the API: reporting, profiles, templates, flows, and campaign sends through send_campaign and cancel_campaign_send.
- Official and broad. For running one Klaviyo account end to end from chat, it is the direct route.
- A read-only switch —
read-only=trueon the remote server,READ_ONLY=truelocally — leaves only the tools that cannot change the account. - A switch for user-generated content hides the tools that return text your customers wrote, such as reviews and profile fields, because that text can steer a model.
What a full MCP server adds
| Klaviyo's official server | Agent Planners MCP | |
|---|---|---|
| Klaviyo tools | Most of the API | 13 reads, 40 writes |
| Send or schedule a campaign | Yes | Not a tool — a campaign here is only ever a draft |
| Profiles, list membership, events | Yes | Not tools — personal data and flow triggers stay out |
| Deletes, a flow going live | As whoever connected it | Held for a person on every key mode |
| Ad spend in the same session | No | Google Ads, Meta, TikTok and the rest on the same key |
tools/list offers 53 Klaviyo tools of the 1012 on the endpoint (a key that lists its tools on demand reaches the same ones with search_tools and call_tool). The reads work on the default connection; the writes need Klaviyo :write scopes that it does not request (below).How to configure it
- 1Create a key in API & MCP.
tools:readfor reporting; addtools:writefor drafts and edits. Tools mode needs a paid plan and fails closed. - 2Connect Klaviyo under Integrations, signing in with an Owner, Admin or Manager role — Klaviyo lets only those roles authorize an app. The default grant holds read scopes: accounts, campaigns, flows, lists, segments, metrics, templates and tags.
- 3Add the server to Claude Code, Claude Desktop or Codex with the snippet below.
- 4Run
describe_permissions, thenlist_accountsfor the Klaviyo account id.
claude mcp add --transport http agentplanners https://www.agentplanners.com/api/mcp \
--header "Authorization: Bearer ap_live_…"~/.codex/config.toml, with the key in an environment variable rather than the file: [mcp_servers.agentplanners] / url = "…/api/mcp" / bearer_token_env_var = "AGENTPLANNERS_API_KEY".The writes are opt-in, one scope at a time
Each Klaviyo write needs its own :write scope — lists:write, campaigns:write, catalogs:write and so on — and the default connection requests none of them. Until a scope is enabled on the app and the account is re-authorized, a write tool answers with the exact scope it needs and sends nothing to Klaviyo.
- Lists, tags, segments and templates — create, update and delete.
- Campaigns as drafts — create one, edit its message, attach a template or an SMS image. Sending and scheduling are not tools.
- Flow status, the custom catalog, coupons and UTM defaults — catalog items and variants are created unpublished, coupon codes stay unassigned until a message renders them, and images are imported from a public https URL.
What waits for a person, whatever the key allows
- Every delete — list, tag, segment, template, draft campaign, catalog item, variant or category, coupon or coupon code. Klaviyo has no undo for any of them.
- A flow going live. It starts emailing or texting real people as they trigger it; draft and manual are ordinary changes.
- A segment's definition changing, or a segment re-activating. A broader definition reaches people that a live flow or a scheduled campaign never targeted. A rename is ordinary.
- Publishing a catalog item or variant, which can then appear in the product blocks of emails that live flows send.
No raw_request tool — the typed gateway instead
There is no klaviyo__raw_request. klaviyo__get reads the allowlisted resources, each behind its own :read scope, and the typed writes carry the census write allowlist and the person gate above. A raw passthrough would bypass both.
Klaviyo limits that shape every query
- Reports are two a minute and 225 a day per account. Ask for every campaign in one report rather than one at a time; report results here are cached for 15 minutes.
- Rates are fractions. An open rate of 0.42 is 42% — a tool that converts twice reports 4200%.
- Klaviyo books revenue on the send date of the message a person interacted with, inside its own conversion window, which is why Klaviyo and your ad platforms both claim the same order.
- An app unused for 90 days is disconnected by Klaviyo; the connection here is kept alive.
Use cases
- Email-claimed revenue beside ad-claimed revenue, next to the real order total rather than added to it.
- Flow triage — which flows made the most revenue per recipient last month, and which have decayed.
- A campaign drafted for review — audience, template and UTM settings prepared, the send left to a person in Klaviyo.
- Daily revenue anomalies from Placed Order, with the ad-side context in the same answer.
Frequently asked questions
- Is there an official Klaviyo MCP server?
- Yes. Klaviyo ships one — remote at mcp.klaviyo.com/mcp with OAuth, or run locally — covering most of its API, including campaign sends and profile writes, with a read-only switch. Checked September 2026.
- Can this Klaviyo MCP server send a campaign?
- No. Sending, scheduling, profiles, list membership and events are not tools here on any lane; a campaign is only ever a draft, and a flow going live waits for a person.
- Why do my Klaviyo report calls get rate-limited?
- Klaviyo allows two report requests a minute and 225 a day per account. Ask for every campaign in one report instead of one call each.
- Who can connect Klaviyo?
- Someone signing in with an Owner, Admin or Manager role — Klaviyo lets only those roles authorize an app.