Can an AI agent use Klaviyo?

As of 6 Oct 2026, an AI agent can't use Klaviyo on its own: Phone number required on sign-up form.

Level 1 · Needs a personAgents can't get in on their own.
  • Find: Docs for agents: llms.txt, an OpenAPI and an MCP server.
  • Access: Can't sign up.
  • Use: Work not reached.
  • Pay: Payment not reached.
  • Leave: Leaving not reached.

To reach L2 · Gets in: let an agent sign up on its own.

With an account set up by a person: not measured yet.

What the levels mean

Driven 6 Oct 2026Same level in 2 drives in a rowRules of 15 Oct 2026Claim this page

Written and checked by our agents from this drive's record. How we write.

Who gets in

  • Agents on a serverTurned away when they send the sign-up form.
  • Signed agentsThe sign-up page opens. The check on the form still applies.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Klaviyo.

On its own

  • Read all of Klaviyo's documentation and API reference automatically
  • Find how Klaviyo's login and automation systems are set up
  • Download and inspect Klaviyo's official AI-connector tool without an account

What it can't, and why

  • Create a Klaviyo accountThe sign-up form requires a phone number and there is no other way to register.
  • Get API access or send any campaign, message, or dataEvery feature requires a logged-in account first.
  • Pay for or cancel a paid planNo account could be created, so no plan could be reached.
Needs a person

Can an AI agent sign up for Klaviyo on its own?

No. Sign-up: needs a human. No sign-up API or agent registration. The web form (3 steps, reCAPTCHA script, no visible challenge) requires a phone number in its last step ('Required' / 'All fields required'); our agent has none, so the drive stops here.

Official server · 1 of 2 calls worked

Does Klaviyo have an MCP server, and can an agent connect to it?

Yes. Klaviyo has an official MCP server.

A new agent can't get in on its own: in the drive of 6 Oct 2026, our agent stopped at sign up (it needs a person). Through the MCP server, 1 of our agent's 2 attempts worked.

What the drive found

APIOpenAPIMCP · official–CLISDKllms.txtWebhooks–Sandbox

Not reached in this drive: the API key, deleting the account and paying. Every checkpoint, in detail

For the team behind Klaviyo.

Where agents stop in Klaviyo today, and the fixes that get them further, highest impact first.

Stops at sign up

The fixes, highest impact first

  1. Let signed agents past the bot check on sign-up: Check the Web Bot Auth signature on the sign-up request and skip reCAPTCHA (or lower the score threshold) for signed agents; or offer a documented sign-up API with email verification.Step-by-step guide
  2. Make the sign-up phone number optionalStep-by-step guide
  3. Add an agent sign-up with human claimStep-by-step guide
4 more fixes
  1. Offer device flow for API credentials Step-by-step guide
  2. Support MCP (the 28 Jul 2026 spec) server/discover
  3. Serve OpenAPI 3.1+ from a.klaviyo.com Step-by-step guide
  4. Add a billing API for plan changes Step-by-step guide
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L1 · Needs a person badge

Behind the level.

Our agent couldn't get into Klaviyo, so the work, its reliability and the crash test aren't measured. The part scores are what it could judge from the outside.

Part scores · level history · paid plans

Part scores

Agent-ready setup

  • llms.txt: found
  • OpenAPI: found
  • MCP server: found
  • CLI: not found

Not measured in this drive: Holds up, Docs match (part of an Audit).

Level history

  1. 1 Oct 2026L1Needs a person
  2. 6 Oct 2026L1Needs a person

Needs a paid plan

Not counted in the level.

Needs a paid plan
CapabilityPlan
Generate a campaign/flow from a prompt (Composer)paid
Autonomous customer service responses (Customer Agent)paid
WhatsApp marketing messagingpaid

For agents and builders.

The drive as data, every checkpoint and all 21 attempts.

How an agent connects · 5 tips
  • Without a human-made account nothing works: ask the human for a private API key (Settings > API keys) and use the REST API or the local MCP server with PRIVATE_API_KEY.
  • Every API call needs a dated 'revision' header (YYYY-MM-DD); without it the API answers 400 invalid_revision.
  • The local MCP server needs Python 3.13+ (uvx klaviyo-mcp-server@latest) and speaks MCP 2025-11-25 via initialize; server/discover fails with -32602.
  • The remote MCP server (https://mcp.klaviyo.com/mcp) supports CIMD client registration but needs an Owner/Admin/Manager to approve in a browser.
  • Docs pages return Markdown with Accept: text/markdown or a .md suffix.
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessllms.txt at www.klaviyo.com/llms.txt (Agent & Headless Access section); developer docs answer Accept: text/markdown with text/markdown + Vary: Accept, and .md URLs work; OpenAPI 3.0.2 on github.com/klaviyo/openapi.
  2. Sign upNeeds a humanNo sign-up API or agent registration. The web form (3 steps, reCAPTCHA script, no visible challenge) requires a phone number in its last step ('Required' / 'All fields required'); our agent has none, so the drive stops here.
  3. VerifyNot reachedNot reached: no account (phone required at sign-up).
  4. KeyNot reachedNot reached. Private API keys are made in a logged-in account; remote MCP OAuth (CIMD or DCR) needs a signed-in Owner/Admin/Manager to approve in a browser. No device flow.
  5. First callNot reachedNot reached: every /api call answers 401 not_authenticated without a key.
  6. First actionNot reachedNot reached: no account.
  7. PayNot reachedFree plan (up to 250 profiles, 500 emails/month). No 402 anywhere, x402./mpp./agents. subdomains do not resolve, no x-payment-info in the OpenAPI, not in x402 Bazaar or mpp.dev, no billing API (MCP billing tools are read-only usage). Upgrading happens in the web app behind a sign-up that needs a phone number, so a human is needed; the checkout itself was not observed.
  8. CancelNot reachedNo plan started (no account).
  9. DeleteNot reachedNo account was created, so there was nothing to delete.
The attempt log · 21 attempts
Attempt log
CapabilityRouteResultEvidence
MCP discovery: server/discover on https://mcp.klaviyo.com/mcp unauthenticatedmcpblocked ✓401 WWW-Authenticate: Bearer resource_metadata="https://mcp.klaviyo.com/.well-known/oauth-protected-resource/mcp"; PRM 200 JSON (authorization_servers https://mcp.klaviyo.com). /mcp/server-card 401. www.klaviyo.com /.well-known/ai-catalog.json, agent-card.json, agent.json, mcp/server-card.json all 404 HTML.
Docs discovery: llms.txt, robots.txt, markdown docsapidone ✓www.klaviyo.com/llms.txt 200 text/plain (Agent & Headless Access section); developers.klaviyo.com/llms.txt 404; docs page with Accept: text/markdown -> 200 content-type text/markdown, vary: Accept; .md URL 200 text/markdown. robots.txt: no Content-Usage or Content-signal lines; User-agent * disallows app paths only (/campaigns, /flows, /staff/ ...).
Sign up: Find a headless sign-up route (API/CLI/agent registration)nonefailed ✓No documented sign-up API; /.well-known/oauth-authorization-server on a.klaviyo.com and mcp.klaviyo.com carry no agent_auth block; https://www.klaviyo.com/sign-up is a client-rendered web form (redirects to /de/sign-up from our IP).
Sign up: Create free account via web form (browser)browserblocked ✓3-step form at /de/sign-up and /uk/sign-up: email+password -> company website+name -> phone number + usage select. Submitting with phone empty: inline error "Pflichtfeld" (DE) / "Required" (UK) under "Phone number"; UK form says "All fields required". No POST sent. reCAPTCHA script present, no visible challenge.
MCP discovery (local stdio server): server/discover then initialize on official klaviyo-mcp-server 0.4.1 (PyPI, Python>=3.13) over stdiomcpdone ✓server/discover -> JSON-RPC error -32602 "Invalid request parameters" (not -32022): legacy server. initialize offering 2026-07-28 -> protocolVersion "2025-11-25", serverInfo {name: klaviyo, version: 2.14.7}, capabilities tools/prompts/resources + tasks. tools/list -> 28 tools (default config), no billing/upgrade tool. tools/call klaviyo_get_account_details with an invalid key -> tool error (401 authentication_failed) returned as text content.
Agent registration / auth discovery: PRM + AS metadata on mcp.klaviyo.com and a.klaviyo.comapidone ✓mcp.klaviyo.com PRM (path-suffixed /mcp) 200 JSON; AS metadata: client_id_metadata_document_supported true, registration_endpoint https://mcp.klaviyo.com/register, grants authorization_code+refresh_token, S256, authorization_response_iss_parameter_supported true. No device_authorization_endpoint, no agent_auth block. a.klaviyo.com PRM points resource https://a.klaviyo.com/staff/mcp (DCR registration_endpoint, Zitadel scopes). /auth.md, /SKILL.md, /.well-known/ucp 404 HTML.
Pay step probe: 402 / agent payment rails / registriesapifailed ✓x402./mpp./agents.klaviyo.com do not resolve (curl 6). Unauthenticated a.klaviyo.com/api/campaigns -> 401 WWW-Authenticate: Bearer, Klaviyo-API-Key (no 402). OpenAPI 3.0.2 (github.com/klaviyo/openapi stable.json, 238 paths, 345 operations): no x-payment-info, no billing paths. Not listed in x402 Bazaar or mpp.dev/api/services. MCP tools doc: Billing tools are read-only usage (list_billing_usage, get_billing_usage, beta). Pricing page: free plan (up to 250 profiles, 500 emails/month); paid upgrade only inside the web app, which we could not reach (sign-up needs a phone).
verify: verify after sign-upnoneblockedNo account: sign-up form requires a phone number (see signup attempt). API keys are created in Settings > API keys of a logged-in account; remote MCP OAuth needs a logged-in Owner/Admin/Manager to click Allow.
credentials: credentials after sign-upnoneblockedNo account: sign-up form requires a phone number (see signup attempt). API keys are created in Settings > API keys of a logged-in account; remote MCP OAuth needs a logged-in Owner/Admin/Manager to click Allow.
The first call: The first call after sign-upnoneblockedNo account: sign-up form requires a phone number (see signup attempt). API keys are created in Settings > API keys of a logged-in account; remote MCP OAuth needs a logged-in Owner/Admin/Manager to click Allow.
The first action: The first action after sign-upnoneblockedNo account: sign-up form requires a phone number (see signup attempt). API keys are created in Settings > API keys of a logged-in account; remote MCP OAuth needs a logged-in Owner/Admin/Manager to click Allow.
Create and send an email campaign: Attempt via POST /api/campaigns, POST /api/campaign-send-jobsnoneblockedNo account and no API key: sign-up requires a phone number; unauthenticated a.klaviyo.com/api/* answers 401 not_authenticated.
Send SMS/MMS campaigns: Attempt via POST /api/campaigns (channel: sms)noneblockedNo account and no API key: sign-up requires a phone number; unauthenticated a.klaviyo.com/api/* answers 401 not_authenticated.
Build and activate automated flows (triggers, actions, branches): Attempt via POST /api/flows, PATCH /api/flows/{id}noneblockedNo account and no API key: sign-up requires a phone number; unauthenticated a.klaviyo.com/api/* answers 401 not_authenticated.
Generate a campaign/flow from a prompt (Composer): Attempt via documented routenoneplan_gatedCapability map marks plan: paid; pricing page lists it outside the free plan scope. Not reachable anyway: no account (phone required at sign-up).
Autonomous customer service responses (Customer Agent): Attempt via documented routenoneplan_gatedCapability map marks plan: paid; pricing page lists it outside the free plan scope. Not reachable anyway: no account (phone required at sign-up).
Segment customers with dynamic conditions: Attempt via POST /api/segmentsnoneblockedNo account and no API key: sign-up requires a phone number; unauthenticated a.klaviyo.com/api/* answers 401 not_authenticated.
Collect sign-ups via on-site forms (popups, embeds, flyouts): Attempt via GET /api/forms (read only)noneblockedNo account and no API key: sign-up requires a phone number; unauthenticated a.klaviyo.com/api/* answers 401 not_authenticated.
Manage customer profiles (create/update/merge): Attempt via POST /api/profiles, PATCH /api/profiles/{id}, POST /api/profile-mergenoneblockedNo account and no API key: sign-up requires a phone number; unauthenticated a.klaviyo.com/api/* answers 401 not_authenticated.
Track behavioral/custom events per profile: Attempt via POST /api/events, POST /client/eventsnoneblockedNo account and no API key: sign-up requires a phone number; unauthenticated a.klaviyo.com/api/* answers 401 not_authenticated.
WhatsApp marketing messaging: Attempt via documented routenoneplan_gatedCapability map marks plan: paid; pricing page lists it outside the free plan scope. Not reachable anyway: no account (phone required at sign-up).

Also in Email marketing.