{
 "slug": "mailerlite",
 "name": "MailerLite",
 "url": "https://mailerlite.com",
 "domain": "mailerlite.com",
 "category": "email-marketing",
 "category_name": "Email marketing",
 "tested_at": "2026-10-06",
 "run": "20261006T082323Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261001T230157Z",
   "date": "2026-10-01",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": null,
    "driver": null,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261006T082323Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": null,
 "entry": "closed",
 "door": {
  "passed": 0,
  "tries": 2,
  "self_start": false
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "part",
   "text": "Some docs agents can read: llms.txt and an MCP server",
   "have": [
    "llms_txt",
    "mcp"
   ]
  },
  {
   "key": "access",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "person",
   "label": "A person sets it up",
   "routes": [],
   "minutes": null,
   "core": null
  }
 ],
 "minutes": null,
 "next": {
  "to": 2,
  "text": "Next: let an agent sign up on its own"
 },
 "stop": "signup",
 "core": "0/10",
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 75,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 75,
  "security": null,
  "standards": [
   {
    "standard": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 2,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": null,
  "prompt_sha": "f3d0adeeb256",
  "kb_version": "2+overlay-9e43028a2c",
  "identity": null
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 2,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "start"
 },
 "same_level_drives": 2,
 "drives": 2,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "Cloudflare Turnstile",
  "visible": true,
  "type": "network",
  "human": null,
  "how": "Let verified bots and signed agents past the check on sign-up: in Cloudflare, add a WAF custom rule that skips the bot challenge on your sign-up paths for verified bots and for signed agents (rule field cf.bot_management.signed_agent; since 1 July 2026 signed agents count as verified bots), and render Turnstile only when the request is not from a verified agent.",
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "form"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "through",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "developers.mailerlite.com: llms.txt, Markdown via Accept: text/markdown and .md URLs, API/CLI/MCP docs, 6 SDKs, Agent Skills repo. No OpenAPI file found."
  },
  "signup": {
   "status": "human",
   "note": "Web form only (no sign-up API, auth.md or claimable account). In the browser the form shows a visible Cloudflare Turnstile 'Verify you are human' and the submit button stays disabled."
  },
  "verify": {
   "status": "",
   "note": "No account was created, so no verification mail was sent.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "API token is made in the dashboard (Integrations > API); MCP and CLI use OAuth (authorization code + PKCE, browser login). DCR at mcp.mailerlite.com/register returned a client_id headless, but the login needs an account.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "API and CLI v2.0.0 answer 401 'Unauthenticated.' without a token; no token without an account.",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "No account.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "none found"
   ],
   "rail_ids": [],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "note": "No 402/x402/MPP on connect.mailerlite.com or x402./mpp./agents. subdomains (302 to login); not in mpp.dev or x402 Bazaar; no billing API or MCP billing tools in the docs. Free plan and 14-day trial need no card (pricing page). Upgrading happens in the dashboard, which an agent cannot reach without a human passing the sign-up Turnstile; the checkout itself was not seen.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "grade": "n/a",
   "note": "No plan started; cancel path not seen (no account).",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account created, nothing to delete; account deletion route not checked.",
   "account": false,
   "reached": false
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-06",
  "source": "drive",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": false,
  "cli": true,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST at connect.mailerlite.com/api, 120 req/min, X-Version header",
  "mcp": "official, hosted, OAuth, 77 tools documented",
  "cli": "official, Rust binary v2.0.0, token or OAuth browser login",
  "llms_txt": "developers.mailerlite.com/llms.txt (index, no project H1)"
 },
 "can_do": [
  "Read the API, CLI and MCP docs as Markdown",
  "Install the official CLI headless",
  "Register an OAuth client at the MCP authorization server (DCR)"
 ],
 "cannot_do": [
  {
   "what": "Create an account",
   "why": "Visible Cloudflare Turnstile on the sign-up form; no sign-up API"
  },
  {
   "what": "Get an API token or OAuth token",
   "why": "Needs an account"
  },
  {
   "what": "Any campaign, subscriber, automation, form or landing page work",
   "why": "Needs an account"
  }
 ],
 "blockers": [
  "Visible Cloudflare Turnstile on accounts.mailerlite.com/signup",
  "Cloudflare managed challenge (429, cf-mitigated: challenge) on www.mailerlite.com for a signed headless agent"
 ],
 "tips_for_owner": [
  "Let verified agents sign up",
  "Offer a headless token path",
  "Stop challenging signed agents on www",
  "Publish an OpenAPI file"
 ],
 "tips_for_agents": [
  "Docs are agent-friendly: send Accept: text/markdown or append .md on developers.mailerlite.com; start from /llms.txt.",
  "Best route once a human has an account: the hosted MCP server (77 tools) or an API token from Integrations > API; the CLI accepts MAILERLITE_API_TOKEN.",
  "Sign-up needs a human: plan a handoff for the Turnstile on the form.",
  "www.mailerlite.com challenges headless clients quickly; use developers.mailerlite.com for facts.",
  "API rate limit is 120 requests/minute; use the batch endpoint (up to 50 calls)."
 ],
 "selfhost": null,
 "summary": "MailerLite has a strong agent surface on paper: Markdown docs with llms.txt, an official CLI, six SDKs and a hosted OAuth MCP server with 77 tools. An agent cannot get in on its own: the only sign-up is a web form behind a visible Cloudflare Turnstile, so nothing in the product was driven.",
 "wall": "Cloudflare Turnstile on the sign-up form",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "MailerLite is an email-marketing tool with a lot of agent-friendly documentation, an official API, CLI and a hosted AI-assistant connection. An AI agent got as far as reading the docs on its own, but could not create an account because the sign-up page requires proving you're a human with a visual check. With no account, nothing else in the product could be tried.",
  "can_do": [
   "Read all the help pages and instructions automatically",
   "Download and install the command-line tool automatically",
   "Start registering a connection to the AI-assistant service automatically"
  ],
  "cannot_do": [
   {
    "what": "Create an account",
    "why": "The sign-up page shows a 'prove you're human' check"
   },
   {
    "what": "Get a password/key to use the product",
    "why": "That requires having an account first"
   },
   {
    "what": "Create or send any newsletters, contacts, or automations",
    "why": "All of these require an account, which could not be created"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Email campaigns",
   "capability": "Create an email campaign",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/campaigns",
    "mcp": "create_campaign",
    "cli": null,
    "ui": "Campaigns > Create campaign"
   },
   "check": "GET /api/campaigns/{id} returns the created campaign with status draft",
   "source": "https://www.mailerlite.com/features/email-marketing; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-02",
   "group": "Email campaigns",
   "capability": "Edit campaign content, subject and sender",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PUT /api/campaigns/{id}",
    "mcp": "update_campaign",
    "cli": null,
    "ui": "Campaign editor"
   },
   "check": "GET /api/campaigns/{id} shows updated subject/from/content",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-03",
   "group": "Email campaigns",
   "capability": "Schedule a campaign to send",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/campaigns/{id}/schedule",
    "mcp": "schedule_campaign",
    "cli": null,
    "ui": "Campaign editor > Schedule"
   },
   "check": "GET /api/campaigns/{id} shows status scheduled with send_at time",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-07",
   "group": "Subscribers",
   "capability": "Add or upsert a subscriber",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/subscribers",
    "mcp": "add_subscriber",
    "cli": null,
    "ui": "Subscribers > Add single"
   },
   "check": "GET /api/subscribers/{email} shows the new subscriber with matching fields",
   "source": "https://www.mailerlite.com/features/subscriber-management; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-09",
   "group": "Subscribers",
   "capability": "Update a subscriber's info or fields",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PUT /api/subscribers/{id}",
    "mcp": "update_subscriber",
    "cli": null,
    "ui": "Subscriber profile"
   },
   "check": "GET /api/subscribers/{id} shows updated field values",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-11",
   "group": "Automation",
   "capability": "Build an automated workflow with triggers and steps",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/automations",
    "mcp": "create_automation / build_custom_automation",
    "cli": null,
    "ui": "Automations > Create"
   },
   "check": "GET /api/automations/{id} returns the workflow with configured trigger and steps",
   "source": "https://www.mailerlite.com/features/automation; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-16",
   "group": "Signup forms & pop-ups",
   "capability": "Create a signup form (embedded or pop-up)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "create_form",
    "cli": null,
    "ui": "Forms > Create"
   },
   "check": "GET /api/forms/{id} (via list_forms) returns the created form",
   "source": "https://www.mailerlite.com/features/signup-forms; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-18",
   "group": "Websites & pages",
   "capability": "Build a landing page",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Sites > Landing pages > Create"
   },
   "check": "Published landing page URL loads with current content",
   "source": "https://www.mailerlite.com/features/landing-pages"
  },
  {
   "id": "cap-21",
   "group": "Monetization",
   "capability": "Sell a digital product",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Monetize > Digital products > Create"
   },
   "check": "Product checkout page is live and a Stripe test purchase records an order",
   "source": "https://www.mailerlite.com/features/sell-digital-products"
  },
  {
   "id": "cap-22",
   "group": "Monetization",
   "capability": "Sell a paid newsletter subscription",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Monetize > Paid newsletters > Create"
   },
   "check": "Paid subscription tier is listed on the signup page and a Stripe payment grants access",
   "source": "https://www.mailerlite.com/features/paid-newsletter-subscriptions"
  },
  {
   "id": "cap-04",
   "group": "Email campaigns",
   "capability": "Cancel a scheduled campaign",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/campaigns/{id}/cancel",
    "mcp": "cancel_campaign",
    "cli": null,
    "ui": "Campaign list > Cancel"
   },
   "check": "GET /api/campaigns/{id} no longer shows status scheduled",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-05",
   "group": "Email campaigns",
   "capability": "Delete a campaign",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "DELETE /api/campaigns/{id}",
    "mcp": "delete_campaign",
    "cli": null,
    "ui": "Campaign list > Delete"
   },
   "check": "GET /api/campaigns/{id} returns 404",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-06",
   "group": "Email campaigns",
   "capability": "Run A/B and multivariate subject/content/time tests on a campaign",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/campaigns (type ab)",
    "mcp": "create_campaign (type ab)",
    "cli": null,
    "ui": "Campaign editor > A/B test"
   },
   "check": "GET /api/campaigns/{id} shows ab_settings with variant results",
   "source": "https://www.mailerlite.com/features/ab-testing; https://www.mailerlite.com/features/automation"
  },
  {
   "id": "cap-08",
   "group": "Subscribers",
   "capability": "Import subscribers in bulk",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/subscribers/import",
    "mcp": "import_subscribers_to_group",
    "cli": null,
    "ui": "Subscribers > Import"
   },
   "check": "GET /api/subscribers count rises by the imported batch size",
   "source": "https://www.mailerlite.com/help/how-to-import-subscribers"
  },
  {
   "id": "cap-10",
   "group": "Subscribers",
   "capability": "Delete a subscriber",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "DELETE /api/subscribers/{id}",
    "mcp": "delete_subscriber",
    "cli": null,
    "ui": "Subscriber profile > Delete"
   },
   "check": "GET /api/subscribers/{id} returns 404 or non-active status",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-12",
   "group": "Automation",
   "capability": "Edit an automation email step (subject, content, delay)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PUT /api/automations/{id}/steps/{step_id}",
    "mcp": "update_automation_email / update_automation_email_content / update_automation_delay",
    "cli": null,
    "ui": "Automation builder"
   },
   "check": "GET /api/automations/{id} shows updated step content or delay value",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-13",
   "group": "Automation",
   "capability": "Set multiple entry triggers for one automation",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /api/automations (triggers[])",
    "mcp": null,
    "cli": null,
    "ui": "Automation builder > Triggers"
   },
   "check": "Automation detail page lists more than one active trigger",
   "source": "https://www.mailerlite.com/features/automation"
  },
  {
   "id": "cap-14",
   "group": "Automation",
   "capability": "Delete an automation",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "DELETE /api/automations/{id}",
    "mcp": "delete_automation",
    "cli": null,
    "ui": "Automations list > Delete"
   },
   "check": "GET /api/automations/{id} returns 404",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-15",
   "group": "Automation",
   "capability": "Install a pre-built automation template",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "discover_automation_templates / install_template",
    "cli": null,
    "ui": "Automation templates gallery"
   },
   "check": "GET /api/automations lists a new automation matching the installed template",
   "source": "https://www.mailerlite.com/automation-templates; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-17",
   "group": "Signup forms & pop-ups",
   "capability": "Create a promotion pop-up",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "create_form (type promotion)",
    "cli": null,
    "ui": "Pop-ups > Create"
   },
   "check": "list_forms filtered by type promotion shows the new pop-up",
   "source": "https://www.mailerlite.com/features/promotion-popups"
  },
  {
   "id": "cap-19",
   "group": "Websites & pages",
   "capability": "Build a website with a blog section",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Sites > Websites > Create"
   },
   "check": "Published site URL loads with blog posts visible",
   "source": "https://www.mailerlite.com/features/website-builder; https://www.mailerlite.com/features/create-a-blog"
  },
  {
   "id": "cap-20",
   "group": "Websites & pages",
   "capability": "Generate a landing page with AI",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Landing page creation > AI builder"
   },
   "check": "New landing page draft is created pre-filled with AI-generated layout and copy",
   "source": "https://www.mailerlite.com/features/landing-pages; https://www.mailerlite.com/pricing"
  },
  {
   "id": "cap-23",
   "group": "Monetization",
   "capability": "Sell bookable appointments",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Monetize > Bookings > Create"
   },
   "check": "Booking page shows open slots and a confirmed booking appears in the calendar",
   "source": "https://www.mailerlite.com/features/appointment-booking-and-scheduling-software"
  },
  {
   "id": "cap-24",
   "group": "E-commerce",
   "capability": "Manage an e-commerce shop's products, customers and orders",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "/api/ecommerce/*",
    "mcp": "manage_ecommerce_shops / manage_ecommerce_products / manage_ecommerce_customers / manage_ecommerce_orders",
    "cli": null,
    "ui": "E-commerce settings"
   },
   "check": "GET on the relevant ecommerce resource reflects the created/updated item",
   "source": "https://developers.mailerlite.com/mcp; https://www.mailerlite.com/features/email-marketing-for-ecommerce"
  },
  {
   "id": "cap-25",
   "group": "Segmentation & organization",
   "capability": "Create a dynamic segment",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/segments",
    "mcp": "create_segment",
    "cli": null,
    "ui": "Subscribers > Segments > Create"
   },
   "check": "GET /api/segments/{id}/subscribers reflects subscribers matching the segment rule",
   "source": "https://www.mailerlite.com/features/segmentation; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-26",
   "group": "Segmentation & organization",
   "capability": "Organize subscribers into groups, interests and tags",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/groups; POST /api/subscribers/{id}/groups/{group_id}",
    "mcp": "create_group / assign_subscriber_to_group",
    "cli": null,
    "ui": "Subscribers > Groups"
   },
   "check": "GET /api/groups/{id}/subscribers lists the assigned subscriber",
   "source": "https://www.mailerlite.com/features/interest-groups-tags; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-27",
   "group": "Segmentation & organization",
   "capability": "Create a custom subscriber field",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/fields",
    "mcp": "create_field",
    "cli": null,
    "ui": "Subscribers > Custom fields"
   },
   "check": "GET /api/fields lists the new field with its type",
   "source": "https://www.mailerlite.com/help/how-to-use-variables-in-mailerlite; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-28",
   "group": "Engagement",
   "capability": "Set up a subscriber preference center",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Forms > Preference center"
   },
   "check": "Preference center page loads subscriber's current subscription choices",
   "source": "https://www.mailerlite.com/features/preference-center"
  },
  {
   "id": "cap-29",
   "group": "Engagement",
   "capability": "Customize the unsubscribe page",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Forms > Unsubscribe page builder"
   },
   "check": "Unsubscribe link renders the customized page content",
   "source": "https://www.mailerlite.com/features/unsubscribe-builder"
  },
  {
   "id": "cap-30",
   "group": "Engagement",
   "capability": "Embed a survey or quiz in an email",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Content blocks > Survey / Quiz"
   },
   "check": "Published survey/quiz URL accepts a response and response count increments",
   "source": "https://www.mailerlite.com/features/survey; https://www.mailerlite.com/features/quiz-maker"
  },
  {
   "id": "cap-31",
   "group": "Reporting",
   "capability": "View campaign and automation performance reports",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/campaigns/{id}/reports",
    "mcp": "get_campaign_subscribers / get_automation_activity",
    "cli": null,
    "ui": "Reports"
   },
   "check": "Report page/response shows open, click and bounce counts for the campaign",
   "source": "https://www.mailerlite.com/features/performance-reports; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-33",
   "group": "AI assistance",
   "capability": "Generate email copy with the AI writing assistant",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": "generate_email_content / suggest_subject_lines",
    "cli": null,
    "ui": "Campaign editor > AI assistant"
   },
   "check": "Editor content block is populated with AI-generated text matching the prompt topic",
   "source": "https://www.mailerlite.com/features/ai-email-generator; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-34",
   "group": "Deliverability",
   "capability": "Verify and clean a subscriber list",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Subscribers > Email verifier (MailerCheck)"
   },
   "check": "Verification report returns validity status per checked address",
   "source": "https://www.mailerlite.com/features/email-verifier"
  },
  {
   "id": "cap-35",
   "group": "Deliverability",
   "capability": "Enable smart sending / send-time optimization",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Campaign editor > Scheduling > Smart sending"
   },
   "check": "Campaign schedule shows per-subscriber optimized delivery instead of one fixed time",
   "source": "https://www.mailerlite.com/features/send-time-optimization"
  },
  {
   "id": "cap-36",
   "group": "Integrations & automation plumbing",
   "capability": "Create a webhook subscription for account events",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/webhooks",
    "mcp": "create_webhook",
    "cli": null,
    "ui": "Integrations > Webhooks"
   },
   "check": "GET /api/webhooks lists the webhook and triggering the event posts to its URL",
   "source": "https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-32",
   "group": "Reporting",
   "capability": "See click maps inside a sent email",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/campaigns/{id}/clicks",
    "mcp": "get_campaign_links / get_campaign_link_recipients",
    "cli": null,
    "ui": "Campaign report > Click map"
   },
   "check": "Click map overlay shows per-link click counts matching get_campaign_links data",
   "source": "https://www.mailerlite.com/features/click-map; https://developers.mailerlite.com/mcp"
  },
  {
   "id": "cap-37",
   "group": "Collection",
   "capability": "Collect subscribers offline via the iPad app",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "iPad Subscribe app"
   },
   "check": "A subscriber captured on the iPad app appears in the dashboard subscriber list after sync",
   "source": "https://www.mailerlite.com/features/ipad-app"
  },
  {
   "id": "cap-38",
   "group": "Account admin",
   "capability": "Invite teammates with custom permission roles",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Account settings > Users"
   },
   "check": "Invited user appears in the account user list with the assigned role/permissions",
   "source": "https://www.mailerlite.com/pricing"
  },
  {
   "id": "cap-39",
   "group": "Account admin",
   "capability": "Add a dedicated sending IP",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Account settings > Sending > Dedicated IP add-on"
   },
   "check": "Account sending settings show a dedicated IP address assigned",
   "source": "https://www.mailerlite.com/features/dedicated-ip"
  }
 ],
 "attempts": [
  {
   "t": "02:09",
   "cap": "discovery",
   "capability": "robots.txt",
   "task": "Fetch robots.txt",
   "route": "none",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://www.mailerlite.com/robots.txt 200: 'User-agent: *' / 'Content-Signal: search=yes, ai-input=yes, ai-train=no' / 'Disallow:'",
   "notes": "Cloudflare Content-signal line (not aipref Content-Usage); parses (lowercase, yes/no). No disallow for our agent."
  },
  {
   "t": "02:09",
   "cap": "discovery",
   "capability": "llms.txt",
   "task": "Fetch llms.txt",
   "route": "none",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "developers.mailerlite.com/llms.txt 200 text/plain, Markdown index of API/CLI/MCP docs (no H1 line at top: starts '# Documentation'). www.mailerlite.com/llms.txt returns HTML app shell with text/plain (soft 404).",
   "notes": ""
  },
  {
   "t": "02:09",
   "cap": "discovery",
   "capability": "markdown docs",
   "task": "GET docs page with Accept: text/markdown and .md URL",
   "route": "none",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "developers.mailerlite.com/mcp with Accept: text/markdown -> content-type text/markdown, vary: accept-encoding, accept; /cli.md -> 200 text/markdown",
   "notes": ""
  },
  {
   "t": "02:09",
   "cap": "discovery",
   "capability": "cards",
   "task": "Probe AI catalog / agent cards / MCP server card",
   "route": "none",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "www /.well-known/ai-catalog.json 404 html; agent-card.json 404; agent.json 404; /.well-known/mcp/server-card.json 200 application/json header but HTML body (SPA shell); mcp.mailerlite.com/mcp/server-card 401 (auth-required)",
   "notes": ""
  },
  {
   "t": "02:09",
   "cap": "discovery",
   "capability": "MCP server/discover",
   "task": "POST server/discover 2026-07-28 to https://mcp.mailerlite.com/mcp",
   "route": "mcp",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "401 empty body, WWW-Authenticate: Bearer realm=\"OAuth\", resource_metadata=\"https://mcp.mailerlite.com/.well-known/oauth-protected-resource/mcp\". PRM 200 JSON (authorization_servers https://mcp.mailerlite.com). AS metadata: registration_endpoint present, client_id_metadata_document_supported:false, PKCE S256, iss param supported, no device grant.",
   "notes": "OAuth only; client registration DCR"
  },
  {
   "t": "02:09",
   "cap": "discovery",
   "capability": "auth.md/agent auth",
   "task": "Probe /auth.md, /SKILL.md, /.well-known/ucp on www, connect PRM",
   "route": "none",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "www.mailerlite.com/auth.md, /SKILL.md, /.well-known/ucp -> 429 text/html (rate limited after ~6 requests); connect.mailerlite.com/.well-known/oauth-protected-resource 403 html; x402./mpp./agents.mailerlite.com -> 302 /users/login (wildcard app host)",
   "notes": ""
  },
  {
   "t": "02:40",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Find a headless sign-up route (API/CLI/auth.md)",
   "route": "none",
   "documented": true,
   "result": "failed",
   "verified": true,
   "evidence": "No sign-up endpoint in developers.mailerlite.com docs/llms.txt; CLI needs existing account (auth login); no auth.md/agent_auth. accounts.mailerlite.com/signup is an HTML form (Company, Name, Email, Password) with a turnstile-key attribute in the page.",
   "notes": "Web form only"
  },
  {
   "t": "03:31",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Fill the sign-up form in the browser",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "accounts.mailerlite.com/signup: form filled (AgentDrives / AgentDrives Test / the agent's inbox / password); a visible Cloudflare Turnstile 'Verify you are human' checkbox appears and 'Create my account' stays disabled (screenshot browser/shots/003.png). pw detector reported turnstile:false but the widget is visible.",
   "notes": "Not solved by the agent; asking a human (own browser) per policy"
  },
  {
   "t": "05:03",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Ask a human to pass the Turnstile check in their own browser",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "",
   "notes": "Cloudflare Turnstile 'Verify you are human' on accounts.mailerlite.com/signup"
  },
  {
   "t": "05:03",
   "cap": "discovery",
   "capability": "Website bot check",
   "task": "",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "www.mailerlite.com/pricing, /signup, /auth.md, /SKILL.md, /.well-known/ucp -> HTTP 429 text/html with 'cf-mitigated: challenge' (Cloudflare managed challenge) after the first homepage request; same page loads in the pw browser.",
   "notes": "Cloudflare challenge on the marketing site for our signed headless agent; developers., connect., mcp. hosts answer normally"
  },
  {
   "t": "05:03",
   "cap": "credentials",
   "capability": "Get API credentials",
   "task": "Get an API token / OAuth token",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Docs: API token is generated in dashboard.mailerlite.com/integrations/api (needs an account); MCP and CLI use OAuth authorization_code + PKCE via browser login. No account (sign-up blocked by Turnstile).",
   "notes": ""
  },
  {
   "t": "05:03",
   "cap": "credentials",
   "capability": "Get API credentials",
   "task": "Register an OAuth client at the MCP authorization server (DCR)",
   "route": "api",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "POST https://mcp.mailerlite.com/register -> 201 client_id issued (token_endpoint_auth_method none). GET /authorize -> 200 HTML authorization page; needs a MailerLite login, which we do not have.",
   "notes": "DCR works headless; consent/login needs an account",
   "quality": {
    "error_legibility": "n/a",
    "docs_match": "undocumented"
   }
  },
  {
   "t": "05:03",
   "cap": "first_call",
   "capability": "First API call",
   "task": "Call GET /api/subscribers without a token",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "connect.mailerlite.com/api/subscribers -> 401 application/json {\"message\":\"Unauthenticated.\"} (not problem+json); no account to get a token",
   "notes": "",
   "quality": {
    "error_legibility": "vague"
   }
  },
  {
   "t": "05:03",
   "cap": "cap-01",
   "capability": "Create an email campaign",
   "task": "Create an email campaign via MCP/API",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-02",
   "capability": "Edit campaign content, subject and sender",
   "task": "Edit campaign content, subject and sender via MCP/API",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-03",
   "capability": "Schedule a campaign to send",
   "task": "Schedule a campaign to send via MCP/API",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-07",
   "capability": "Add or upsert a subscriber",
   "task": "Add or upsert a subscriber via MCP/API",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-09",
   "capability": "Update a subscriber's info or fields",
   "task": "Update a subscriber's info or fields via MCP/API",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-11",
   "capability": "Build an automated workflow with triggers and steps",
   "task": "Build an automated workflow with triggers and steps via MCP/API",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-16",
   "capability": "Create a signup form (embedded or pop-up)",
   "task": "Create a signup form (embedded or pop-up) via MCP/API",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-18",
   "capability": "Build a landing page",
   "task": "Build a landing page via web app",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-21",
   "capability": "Sell a digital product",
   "task": "Sell a digital product via web app",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "cap-22",
   "capability": "Sell a paid newsletter subscription",
   "task": "Sell a paid newsletter subscription via web app",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: sign-up blocked by a visible Cloudflare Turnstile, so no API token/OAuth token.",
   "notes": "Not attempted beyond the access ladder"
  },
  {
   "t": "05:03",
   "cap": "pay",
   "capability": "Pay",
   "task": "Probe agent payment rails and purchase path",
   "route": "none",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "No 402 on connect.mailerlite.com (401 JSON); x402./mpp./agents.mailerlite.com -> 302 /users/login (wildcard app host, no 402); not listed in mpp.dev/api/services or x402 Bazaar; no billing tools in the 77 documented MCP tools; no billing endpoints in API docs; pricing page (browser): Free $0 up to 250 subscribers, Comfort/Power paid, 'Start free trial / No credit card required'. Checkout lives in the dashboard (not reached: no account).",
   "notes": ""
  },
  {
   "t": "05:03",
   "cap": "delete",
   "capability": "Delete account",
   "task": "Delete the account",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "No account was created (sign-up blocked), nothing to delete; account deletion route not checked.",
   "notes": ""
  },
  {
   "t": "05:10",
   "cap": "docs",
   "capability": "Find docs",
   "task": "Read API, CLI and MCP docs headless",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "developers.mailerlite.com: llms.txt index, markdown via Accept: text/markdown and .md URLs; Getting started documents API tokens, X-Version header, 120 req/min rate limit (X-RateLimit-Limit/Remaining, Retry-After), error table; CLI (github.com/mailerlite/mailerlite-cli, OAuth or token); MCP server https://mcp.mailerlite.com/mcp with 77 documented tools; 6 official SDKs; Agent Skills repo github.com/mailerlite/mailerlite-skills. No OpenAPI found (developers.mailerlite.com/openapi.json, /openapi.yaml 404).",
   "notes": "",
   "quality": {
    "docs_match": "match"
   }
  },
  {
   "t": "05:42",
   "cap": "first_call",
   "capability": "First CLI call",
   "task": "Install official CLI v2.0.0 (GitHub release) and call subscriber list",
   "route": "cli",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "mailerlite 2.0.0 installs headless from GitHub release tarball; 'auth login' offers token or OAuth browser flow (no device flow); with an invalid token 'subscriber list' -> 'API error 401: Unauthenticated.'",
   "notes": "No account, so no token",
   "quality": {
    "error_legibility": "vague"
   }
  }
 ],
 "stale": false,
 "icon": "/logos/mailerlite.png",
 "monitored": false,
 "verdict": "Needs a person to get in, at L1 · Needs a person. Sign-up stops first: the form sits behind a visible Cloudflare Turnstile check, so our agent couldn't create an account. Verification, the API token page, OAuth login for CLI and MCP, the first call, paying and cancelling all read not reached for that reason. MailerLite ships Markdown docs with llms.txt, an official CLI, SDKs and a hosted MCP server, but none of it gets driven: the product stays locked behind that one form until a person clears the check and makes the key.",
 "page": "https://agentdrives.com/tools/mailerlite?via=api"
}