MCP

Klaviyo MCP server: flow and campaign reporting, with sending left to people

TL;DR

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=true on the remote server, READ_ONLY=true locally — 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.
If one Klaviyo account is all you work in and sends from chat are what you want, use Klaviyo's server. The rest of this page is about email as one channel beside the ad platforms, with sending kept a human act.

What a full MCP server adds

Klaviyo's official serverAgent Planners MCP
Klaviyo toolsMost of the API13 reads, 40 writes
Send or schedule a campaignYesNot a tool — a campaign here is only ever a draft
Profiles, list membership, eventsYesNot tools — personal data and flow triggers stay out
Deletes, a flow going liveAs whoever connected itHeld for a person on every key mode
Ad spend in the same sessionNoGoogle Ads, Meta, TikTok and the rest on the same key
Counted from the tool registry, which the MCP catalogue matches one for one: 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

  1. 1Create a key in API & MCP. tools:read for reporting; add tools:write for drafts and edits. Tools mode needs a paid plan and fails closed.
  2. 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.
  3. 3Add the server to Claude Code, Claude Desktop or Codex with the snippet below.
  4. 4Run describe_permissions, then list_accounts for the Klaviyo account id.
bash
claude mcp add --transport http agentplanners https://www.agentplanners.com/api/mcp \
  --header "Authorization: Bearer ap_live_…"
Codex uses the same endpoint from ~/.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.
Each of these is held in the approval queue on every key mode, an accountable admin or editor is emailed, and it is decided on its own — never inside a bulk approval.

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.
Revoking a Klaviyo OAuth token uninstalls the app for every organization on that Klaviyo account, so disconnecting here removes the connection and deliberately never calls Klaviyo's revoke.

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.
Put a human-approved agent on your ad ops

Start free — 2,500 credits a month, no credit card. Reads are free; every write waits for you.

Related reading