{
 "$schema": "https://agentdrives.com/schemas/tool.schema.json",
 "id": "prd_01m57vgtk414yb3cpgahsx0a03",
 "ids": {
  "org": "org_01m57vgtk4c1160e9k8wgc2w6v",
  "surfaces": {
   "web": "srf_01m5w3ry21wt24zjs5f3f363my",
   "api": "srf_01m5w3ry210rvr3hwz810at1e5",
   "mcp": "srf_01m5w3ry2160tj2je8xd695a7j",
   "cli": "srf_01m5w3ry218tkegty38nfkgx6d"
  },
  "slugs": [
   "listmonk"
  ],
  "domain": "listmonk.app",
  "wikidata": "Q131471221"
 },
 "slug": "listmonk",
 "name": "listmonk",
 "url": "https://listmonk.app",
 "domain": "listmonk.app",
 "category": "email-marketing",
 "category_name": "Email marketing",
 "tested_at": "2026-10-26",
 "run": "20261026T120623Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261026T120623Z",
   "date": "2026-10-26",
   "level": 5,
   "engine": {
    "model": "claude-opus-5-5",
    "driver": 5,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "skip",
    "version": "2026.10.26",
    "commit": "5fcdb911f0dcc3c91a9794ca76f8d4896244f439",
    "prompts": {
     "version": "2026.10.26",
     "commit": "9bef5e75f8e732d063fdfff8e766feca445cb123"
    },
    "rules": {
     "version": "2026.10.26",
     "commit": "5fcdb911f0dcc3c91a9794ca76f8d4896244f439"
    }
   },
   "stop": null,
   "paid": false,
   "agent_paid": null
  }
 ],
 "level": 5,
 "level_name": "Autonomous",
 "level_selfhost": null,
 "entry": "self-start",
 "door": {
  "passed": 1,
  "tries": 1,
  "self_start": true
 },
 "badges": [
  "agent-can-leave"
 ],
 "not_counted": null,
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: runs locally",
   "way": "local"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 100% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "na",
   "text": "No plan to buy",
   "value": "nothing",
   "route": "none"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Leaves on its own: nothing to cancel, deletes what it made",
   "how": "no-account",
   "left": "removed",
   "delete": {
    "state": "yes",
    "text": "Deletes what it made",
    "why": null
   }
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Learn",
   "state": "part",
   "text": "Docs with gaps: an OpenAPI and an MCP server; no docs on signing in",
   "have": [
    "openapi",
    "mcp"
   ],
   "docs": "thin"
  },
  {
   "key": "access",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: runs locally",
   "way": "local",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 100% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "na",
   "text": "No plan to buy",
   "value": "nothing",
   "route": "none",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Leaves on its own: nothing to cancel, deletes what it made",
   "how": "no-account",
   "left": "removed",
   "delete": {
    "state": "yes",
    "text": "Deletes what it made",
    "why": null
   },
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "local",
   "label": "Runs locally",
   "routes": [
    "local"
   ],
   "minutes": 3,
   "core": "8/8"
  }
 ],
 "minutes": 3,
 "next": {
  "to": null,
  "text": "Does it all on its own; there is nothing to pay"
 },
 "stop": null,
 "core": "8/8",
 "scores": {
  "coverage": 98,
  "reliability": 85,
  "resilience": 68,
  "setup": 70,
  "surface_coverage": 90,
  "docs_accuracy": 93,
  "docs_completeness": 54
 },
 "parts": {
  "holds_up": 76,
  "docs_match": 81,
  "setup": 70,
  "security": "private",
  "standards": [
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 2,
    "value": "3.0.0"
   }
  ]
 },
 "reliability_method": "pass^k",
 "resilience": {
  "parts": {
   "error_legibility": 79,
   "recovery": 93,
   "idempotency": 33
  },
  "summary": {
   "error_legibility": "mixed",
   "recovery": "good",
   "idempotency": "risky",
   "rate_limits": "none-seen",
   "notes": "Most bad input gets a clear 400 message, but a bad content_type is silently replaced and a few errors name the wrong cause. List creates duplicate on retry (Idempotency-Key ignored); subscribers dedupe by email (409)."
  }
 },
 "stress": [
  {
   "capability": "Draft an email campaign",
   "probe": "create campaign without subject",
   "outcome": "400 {'message': 'Invalid length for subject.'}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Draft an email campaign",
   "probe": "bad enum content_type",
   "outcome": "200 campaign id 9 created; content_type stored as \"richtext\" (the bad value silently replaced)",
   "grade": "silent",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Draft an email campaign",
   "probe": "well-formed id that does not exist",
   "outcome": "400 {'message': 'Campaign not found'}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Add a contact or subscriber",
   "probe": "invalid email",
   "outcome": "400 {'message': 'Invalid email.'}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Add a contact or subscriber",
   "probe": "repeat a create (same email)",
   "outcome": "409 {'message': 'E-mail already exists.'}",
   "grade": "clear",
   "idempotent": "yes",
   "rate_limit": null
  },
  {
   "capability": "Create a list and add contacts to it",
   "probe": "repeat a list create (with and without Idempotency-Key)",
   "outcome": "200 id 8; 200 id 9",
   "grade": "silent",
   "idempotent": "no",
   "rate_limit": null
  },
  {
   "capability": "Send a transactional email",
   "probe": "tx to an address that is not a subscriber (default mode)",
   "outcome": "400 {'message': 'Subscriber (0: nobody-ours@agentdrives.com) not found'}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Send a transactional email",
   "probe": "tx with a campaign (non-tx) template id",
   "outcome": "400 {'message': 'template 5 not found'}",
   "grade": "vague",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Read campaign performance",
   "probe": "bad analytics type",
   "outcome": "400 {'message': 'Invalid data'}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Schedule an email campaign",
   "probe": "schedule a finished campaign",
   "outcome": "400 {'message': 'Campaign needs a date to be scheduled.'}",
   "grade": "vague",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create a list and add contacts to it",
   "probe": "15 quick GET /api/lists",
   "outcome": "[200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200]; no RateLimit/Retry-After headers",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": "none-seen"
  },
  {
   "capability": "Create a list and add contacts to it",
   "probe": "wrong API token",
   "outcome": "403 {'message': 'invalid API credentials'}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Add a contact or subscriber",
   "probe": "import with one invalid row (partial failure)",
   "outcome": "status finished, imported 1/2; logs: \"skipping line 2: Invalid email.: [not-an-email ...]\"; the valid subscriber exists (total 1)",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create a list and add contacts to it",
   "probe": "revoked key",
   "outcome": "403 {'message': 'invalid API credentials'}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  }
 ],
 "surface_audit": {
  "totals": {
   "items": 126,
   "documented": 103,
   "safe": 103,
   "exercised": 94,
   "passed": 93,
   "skipped": 0,
   "blocked": 9,
   "not_run": 0,
   "match": 87,
   "drift": 3,
   "broken_doc": 4,
   "docs_complete": 8,
   "docs_partial": 95,
   "docs_missing": 0,
   "errors_clear": 2,
   "errors_vague": 6,
   "errors_silent": 1
  }
 },
 "coverage_core": 100,
 "coverage_own": 100,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 5,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false
 },
 "methodology": 42,
 "rules_date": "2026-10-30",
 "engine": {
  "model": "claude-opus-5-5",
  "driver": 5,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "skip",
  "version": "2026.10.26",
  "commit": "5fcdb911f0dcc3c91a9794ca76f8d4896244f439",
  "prompts": {
   "version": "2026.10.26",
   "commit": "9bef5e75f8e732d063fdfff8e766feca445cb123"
  },
  "rules": {
   "version": "2026.10.26",
   "commit": "5fcdb911f0dcc3c91a9794ca76f8d4896244f439"
  }
 },
 "same_level_drives": 1,
 "drives": 1,
 "same_stop_drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "newer_drives": null,
 "nothing_to_pay": true,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "in"
  },
  "signed": {
   "state": "page",
   "kind": "home",
   "at": "2026-10-26"
  },
  "browser": {
   "state": "in",
   "measured": false
  },
  "our_key": "verified",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "27 docs pages at listmonk.app/docs and an OpenAPI 3.0.0 spec (72 operations) at /docs/swagger/collections.yaml; no llms.txt, no Markdown pages."
  },
  "signup": {
   "status": "headless",
   "note": "listmonk is self-hosted software with no hosted edition: the account is the agent's own install. ./listmonk --install with LISTMONK_ADMIN_USER/LISTMONK_ADMIN_PASSWORD created the Super Admin (docs/installation).",
   "way": "local"
  },
  "verify": {
   "status": "n/a",
   "note": "No email verification on a self-hosted install."
  },
  "credentials": {
   "status": "headless",
   "note": "LISTMONK_ADMIN_API_USER at --install printed the API token to stderr. A scoped API user with a limited role is only documented in the admin UI (done in the browser, used, revoked)."
  },
  "first_call": {
   "status": "headless",
   "note": "GET /api/lists 200 with Authorization: token user:token.",
   "route": "account"
  },
  "first_action": {
   "status": "headless",
   "note": "POST /api/lists 200, read back with GET /api/lists/{id}."
  },
  "pay": {
   "status": "n/a",
   "grade": "n/a",
   "rails": [],
   "rail_ids": [],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "none",
   "route": "none",
   "checkout": {
    "reached": "no",
    "processor": "none",
    "captcha": "none",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "none",
    "wallets": [],
    "rail_offer": "none",
    "price": null,
    "currency": null,
    "period": null,
    "plan": null,
    "last_button": null
   },
   "person": "none",
   "ours": "none",
   "note": "Free AGPLv3 software with no paid tier: no pricing page, no 402, no checkout (no 402 on the product's endpoints). No payment went through and none was possible."
  },
  "cancel": {
   "status": "n/a",
   "grade": "n/a",
   "note": "Nothing to cancel: there is nothing to pay for.",
   "docs_note": "Nothing to cancel: the drive started nothing that renews, and the product sells no plan.",
   "nothing": "nothing_to_pay"
  },
  "delete": {
   "status": "headless",
   "note": "All campaigns, subscribers, lists, templates and media deleted through the API (counts 0); the instance and its Postgres stopped and removed; the API then refused connections. The Super Admin cannot delete itself: removing the instance is the way out.",
   "left": "removed",
   "after_hours": null,
   "account": false
  }
 },
 "routes": [
  {
   "route": "local",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 3,
   "browser": false
  },
  {
   "route": "sso_enterprise",
   "offered": "documented",
   "tried": false,
   "not_tried": "no_kit",
   "result": null,
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 0,
   "browser": null
  }
 ],
 "checkout": {
  "reached": "no",
  "rail_offer": "none"
 },
 "docs": {
  "at": "2026-10-26",
  "read": 1,
  "listed": 1,
  "sampled": false,
  "overall": "thin",
  "getting_started": "found",
  "auth": "missing",
  "errors": "missing",
  "examples": "none",
  "freshness": "fresh",
  "newest": "2026-10-21",
  "core_pages": "0 of 8",
  "capabilities": "none",
  "label": "Thin"
 },
 "claims": {
  "claimed": 8,
  "tried": 8,
  "held": 8,
  "broken": 0,
  "unclear": 0,
  "not_tried": 0,
  "undocumented_works": 0
 },
 "pay_options": {
  "checked": "2026-10-26",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": null
  },
  "owner_fixes": []
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": true,
  "sdk": false,
  "mcp": "third-party",
  "llms_txt": false,
  "webhooks": true,
  "sandbox": false
 },
 "urls": null,
 "surface_notes": {
  "api": "REST, 72 operations in the spec",
  "openapi": "3.0.0, no security scheme, only 200 responses",
  "mcp": "third-party listmonk-mcp (18 tools, stdio), listed on the SDK page",
  "cli": "the binary's install/upgrade flags",
  "webhooks": "incoming bounce webhooks only",
  "sdk": "third-party clients only"
 },
 "surface_sizes": [
  {
   "kind": "api",
   "listed": 81,
   "tested": 81
  },
  {
   "kind": "cli",
   "listed": 10,
   "tested": 8
  }
 ],
 "can_do": [
  "Install its own listmonk with an admin and API token in one browser-free command",
  "Draft, edit, preview and delete email campaigns",
  "Send a campaign and watch it finish",
  "Schedule a campaign and move its send time",
  "Create lists and add subscribers by id or SQL query",
  "Add, update, blocklist, export and delete subscribers",
  "Create campaign and transactional templates",
  "Send transactional mail with data and attachments",
  "Read opens, clicks and link stats per campaign",
  "Import subscribers from CSV",
  "Record bounces through the bounce webhook",
  "Change SMTP and bounce settings through the API"
 ],
 "cannot_do": [
  {
   "what": "Create a scoped API key or role without a browser",
   "why": "Users, roles and tokens are documented only in the admin UI; the API routes the UI uses are undocumented"
  },
  {
   "what": "Clear a subscriber's activity",
   "why": ""
  }
 ],
 "blockers": [],
 "tips_for_agents": [
  "Install with LISTMONK_ADMIN_USER, LISTMONK_ADMIN_PASSWORD and LISTMONK_ADMIN_API_USER on ./listmonk --install; the API token is printed to stderr",
  "Authenticate with the header Authorization: token user:token (or BasicAuth)",
  "Send \"messenger\":\"email\" on campaign create and test calls",
  "Create the uploads folder next to the binary before POST /api/media",
  "Pass before_date as an RFC 3339 query parameter to the maintenance deletes"
 ],
 "selfhost": null,
 "edge_case": "self-host",
 "summary": "listmonk is self-hosted only: an agent installed v6.2.0 without a browser in about 3 minutes, got an admin and API token from the install command, and did all 8 core tasks through the documented API, three times each without a failure. Scoped API keys and roles are only documented in the web UI, and the docs lack llms.txt, Markdown and an official MCP server.",
 "wall": "",
 "plan_scope": "free (open-source self-hosted)",
 "robots_stop": null,
 "robots": null,
 "terms": null,
 "terms_read": null,
 "email_gate": null,
 "plain": {
  "summary": "listmonk is free newsletter software that you run on your own server. An agent installed it with no help, got an admin login and an API key from the install command, and did every core task through the documented API. It stopped only at making a limited-access key, which the docs describe for the web dashboard alone.",
  "can_do": [
   "Install its own copy of listmonk and get an API key in one command",
   "Write, preview, send and schedule email campaigns",
   "Create lists and add, change, block, export and delete subscribers",
   "Create templates and send transactional emails with attachments",
   "Read open and click numbers for a campaign",
   "Import subscribers from a CSV file",
   "Record bounces through the bounce webhook",
   "Change mail server settings through the API"
  ],
  "cannot_do": [
   {
    "what": "Create a limited-access API key without a browser",
    "why": "The docs describe users, roles and tokens for the web dashboard only"
   },
   {
    "what": "Clear a subscriber's activity history",
    "why": "The documented call answers 404 on the tested version"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "capability": "Draft an email campaign",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Campaigns -> New"
   },
   "check": "",
   "capability_id": "cap_dy157y6d",
   "source": "https://listmonk.app/docs/apis/campaigns/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-02",
   "capability": "Send an email campaign",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Campaigns -> Start campaign"
   },
   "check": "",
   "capability_id": "cap_w3hmpqym",
   "source": "https://listmonk.app/docs/apis/campaigns/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-03",
   "capability": "Schedule an email campaign",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Campaigns -> New -> schedule"
   },
   "check": "",
   "capability_id": "cap_xhr02x42",
   "source": "https://listmonk.app/docs/apis/campaigns/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-04",
   "capability": "Create a list and add contacts to it",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Lists -> New"
   },
   "check": "GET /api/lists/{list_id} shows the new list and subscriber_count reflects added subscribers",
   "capability_id": "cap_kwp65xfm",
   "source": "https://listmonk.app/docs/apis/lists/; https://listmonk.app/docs/concepts/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-05",
   "capability": "Add a contact or subscriber",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Subscribers -> New"
   },
   "check": "",
   "capability_id": "cap_d1321zz7",
   "source": "https://listmonk.app/docs/apis/subscribers/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-06",
   "capability": "Create an email template",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/templates",
    "mcp": null,
    "cli": null,
    "ui": "Campaigns -> Templates -> New"
   },
   "check": "GET /api/templates/{template_id} returns the new template body",
   "capability_id": "cap_ca5sezwx",
   "source": "https://listmonk.app/docs/apis/templates/; https://listmonk.app/docs/templating/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-07",
   "capability": "Send a transactional email",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/tx",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "POST /api/tx returns {\"data\": true} and the recipient's mailbox/sandbox receives the templated message",
   "capability_id": "cap_f606h51a",
   "source": "https://listmonk.app/docs/apis/transactional/; https://listmonk.app/ (Transactional mails feature)",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-08",
   "capability": "Read campaign performance",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Campaigns -> Analytics"
   },
   "check": "returns per-interval view counts for the campaign",
   "capability_id": "cap_17gywz87",
   "source": "https://listmonk.app/docs/apis/campaigns/; https://listmonk.app/ (Analytics feature)",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-09",
   "capability": "Update a contact or subscriber",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Subscribers -> edit"
   },
   "check": "",
   "capability_id": "cap_1tb0z82p",
   "source": "https://listmonk.app/docs/apis/subscribers/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-10",
   "capability": "Delete a contact or subscriber",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Subscribers -> delete"
   },
   "check": "",
   "capability_id": "cap_8q9mtqpg",
   "source": "https://listmonk.app/docs/apis/subscribers/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-11",
   "capability": "Create a segment with a SQL query",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": ".",
    "mcp": null,
    "cli": null,
    "ui": "Subscribers -> Advanced query"
   },
   "check": "",
   "capability_id": "cap_ynachpeg",
   "source": "https://listmonk.app/docs/querying-and-segmentation/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-12",
   "capability": "Manage suppressions (blocklist subscribers)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Subscribers -> Blocklist"
   },
   "check": "",
   "capability_id": "cap_vbg51tww",
   "source": "https://listmonk.app/docs/apis/subscribers/; https://listmonk.app/docs/bounces/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-13",
   "capability": "Require double opt-in confirmation",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/lists (optin=double)",
    "mcp": null,
    "cli": null,
    "ui": "Lists -> New -> opt-in type"
   },
   "check": "GET /api/lists/{list_id} shows optin: double, and a newly added subscriber's subscription_status is unconfirmed until they click the opt-in e-mail",
   "capability_id": "cap_xwrnckqz",
   "source": "https://listmonk.app/docs/apis/lists/; https://listmonk.app/docs/concepts/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-14",
   "capability": "Create a signup/subscription form",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/public/lists, POST /api/public/subscription",
    "mcp": null,
    "cli": null,
    "ui": "public subscription-form page"
   },
   "check": "POST /api/public/subscription with a public list UUID returns {\"data\": true} and the subscriber appears on that list",
   "capability_id": "cap_s7gkpaab",
   "source": "https://listmonk.app/docs/apis/subscribers/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-15",
   "capability": "Set up a subscriber preference / unsubscribe page",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "public subscription.html page via {{ UnsubscribeURL }}"
   },
   "check": "Visiting a campaign's {{ UnsubscribeURL }} opens the subscription management page where the subscriber can unsubscribe or update list preferences",
   "capability_id": "cap_k9zqm3we",
   "source": "https://listmonk.app/docs/templating/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-16",
   "capability": "Send a test campaign email",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Campaigns -> edit -> Send test"
   },
   "check": "",
   "capability_id": "cap_9mca2sxt",
   "source": "https://listmonk.app/docs/apis/campaigns/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-17",
   "capability": "Publish a campaign to the public web archive",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Campaigns -> edit -> Archive"
   },
   "check": "",
   "capability_id": "cap_mvvegmfb",
   "source": "https://listmonk.app/docs/apis/campaigns/; https://listmonk.app/docs/archives/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-18",
   "capability": "Track email opens and link clicks",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "Campaigns -> Analytics"
   },
   "check": "",
   "capability_id": "cap_nw8j8qcb",
   "source": "https://listmonk.app/docs/templating/ (TrackView, TrackLink); https://listmonk.app/docs/concepts/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-19",
   "capability": "Upload a file to the media library",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/media",
    "mcp": null,
    "cli": null,
    "ui": "Media"
   },
   "check": "GET /api/media/{media_id} returns the uploaded file's URL",
   "capability_id": "cap_jn6fg27p",
   "source": "https://listmonk.app/docs/apis/media/; https://listmonk.app/ (Media feature)",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-20",
   "capability": "Send an email with a file attachment",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/tx (multipart/form-data, file param)",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "A transactional send with a file part delivers an e-mail carrying that attachment",
   "capability_id": "cap_394b5egs",
   "source": "https://listmonk.app/docs/apis/transactional/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-21",
   "capability": "Bulk-import subscribers from a CSV/ZIP file",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/import/subscribers, GET /api/import/subscribers",
    "mcp": null,
    "cli": null,
    "ui": "Subscribers -> Import"
   },
   "check": "GET /api/import/subscribers shows status finished with imported count matching the uploaded file, and the new subscribers appear in the target lists",
   "capability_id": "cap_a8damn1w",
   "source": "https://listmonk.app/docs/apis/import/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-22",
   "capability": "Export a subscriber's data",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "",
    "mcp": null,
    "cli": null,
    "ui": "public subscription.html page (self-service)"
   },
   "check": "GET .../export returns the subscriber's profile, subscriptions, campaign views and link clicks as JSON",
   "capability_id": "cap_8zwmj5wn",
   "source": "https://listmonk.app/docs/apis/subscribers/; https://listmonk.app/ (Privacy feature)",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-23",
   "capability": "Register a bounce or messenger webhook endpoint",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /webhooks/bounce; Settings -> Bounces/Messengers",
    "mcp": null,
    "cli": null,
    "ui": "Settings -> Bounces / Settings -> Messengers"
   },
   "check": "A POST to the configured webhooks/bounce or messenger endpoint is recorded, e.g.",
   "capability_id": "cap_977hxacb",
   "source": "https://listmonk.app/docs/bounces/; https://listmonk.app/docs/messengers/",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-24",
   "capability": "Set a user's role and list permissions",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin -> Users -> User roles / List roles"
   },
   "check": "A user assigned a role with only lists:get is unable to manage lists outside their list role (403 on manage actions)",
   "capability_id": "cap_bs3hvrpm",
   "source": "https://listmonk.app/docs/roles-and-permissions/",
   "result": "done",
   "via": "browser",
   "done_on": [
    "browser"
   ]
  },
  {
   "id": "cap-25",
   "capability": "Invite/create a system user",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin -> Users -> New"
   },
   "check": "The new user appears under Admin -> Users and can authenticate with the assigned credentials or OIDC",
   "capability_id": "cap_3w8sjh12",
   "source": "https://listmonk.app/docs/roles-and-permissions/",
   "result": "partial",
   "via": "browser"
  },
  {
   "id": "cap-26",
   "capability": "Create a scoped API key (API user)",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin -> Users -> New (API user)"
   },
   "check": "The generated token authenticates against the API (BasicAuth or Authorization: token) with only the permissions of its attached role",
   "capability_id": "cap_wbg916v9",
   "source": "https://listmonk.app/docs/roles-and-permissions/; https://listmonk.app/docs/apis/apis/",
   "result": "done",
   "via": "browser",
   "done_on": [
    "browser"
   ]
  },
  {
   "id": "cap-27",
   "capability": "Configure system settings (SMTP, bounces, appearance)",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Settings"
   },
   "check": "Settings -> SMTP/Bounces/Appearance changes persist and take effect on the next campaign send or bounce check",
   "capability_id": "cap_q235vpxt",
   "source": "https://listmonk.app/docs/bounces/; https://listmonk.app/docs/templating/#public-pages",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  }
 ],
 "stale": false,
 "unreachable_since": null,
 "not_driven_since": null,
 "icon": "/logos/listmonk.png",
 "agent_kinds": {
  "browser": {
   "who": "An assistant in a browser",
   "passed": [
    "signup",
    "first_action"
   ],
   "stop": null,
   "why": null,
   "tone": "pass",
   "text": "Signs up and does all of the core work, all on its own."
  },
  "direct": {
   "who": "An agent talking to it directly",
   "passed": [
    "signup",
    "credentials",
    "first_call",
    "first_action"
   ],
   "stop": null,
   "why": null,
   "tone": "pass",
   "text": "Signs up, gets an API key, makes its first API call and does all of the core work, all on its own."
  }
 },
 "sdk": null,
 "surface_reach": null,
 "connect": {},
 "surface_sources": {
  "api": "https://listmonk.app/docs/swagger/collections.yaml",
  "cli": "https://listmonk.app/docs/installation/",
  "openapi": "https://listmonk.app/docs/swagger/collections.yaml",
  "docs": "https://listmonk.app/docs/",
  "sdk": "https://listmonk.app/docs/apis/sdks/",
  "mcp": "https://github.com/rhnvrm/listmonk-mcp"
 },
 "copilot_connector": null,
 "stripe_directory": null,
 "in_stripe_directory": null,
 "stripe_projects": null,
 "pay_rails": [],
 "stop_evidence": null,
 "wall_vendor": null,
 "mcp_sign_in": null,
 "safety_issues": 0,
 "fix_counts": {
  "small": 5,
  "medium": 1,
  "large": 0,
  "total": 6
 },
 "evidence_sha256": "166c474d5f451ebbbf37505fc5f75656c174c6289ebaf174ac8eae1dd64f3072",
 "first_seen": "2026-10-26",
 "license": {
  "name": "CC BY 4.0",
  "url": "https://creativecommons.org/licenses/by/4.0/"
 },
 "correction": {
  "status": "none",
  "open": 0,
  "since": null,
  "reply_by": null
 },
 "attribution": null,
 "confirmation": {
  "state": "awaiting",
  "drives": 1,
  "agree": 1,
  "review": null,
  "text": "1 drive, awaiting confirmation"
 },
 "stop_shot": null,
 "stop_shot_hash": null,
 "attempts_count": 105,
 "detail": {
  "public": false,
  "in": [
   "report",
   "api"
  ],
  "since": "2026-10-17"
 },
 "what_it_does": "listmonk is free newsletter software that you run on your own server.",
 "kind": "product",
 "rules_version": "rules-2026-10-30-42",
 "rules_url": "https://agentdrives.com/method/changelog#rules-2026-10-30-42",
 "category_median": {
  "holds_up": {
   "median": 78,
   "n": 5
  },
  "docs_match": {
   "median": 81,
   "n": 5
  }
 },
 "peers": {
  "API-03": {
   "basis": "category",
   "n": 7,
   "below": 0,
   "above": 4
  },
  "API-07": {
   "basis": "category",
   "n": 7,
   "below": 0,
   "above": 5
  },
  "DOCS-08": {
   "basis": "category",
   "n": 7,
   "below": 5,
   "above": 0
  },
  "DOCS-10": {
   "basis": "category",
   "n": 7,
   "below": 0,
   "above": 3
  },
  "DOCS-11": {
   "basis": "category",
   "n": 7,
   "below": 0,
   "above": 6
  },
  "IN-11": {
   "basis": "category",
   "n": 7,
   "below": 3,
   "above": 0
  },
  "IN-12": {
   "basis": "category",
   "n": 7,
   "below": 6,
   "above": 0
  },
  "LEAVE-03": {
   "basis": "category",
   "n": 7,
   "below": 2,
   "above": 1
  },
  "PAY-05": {
   "basis": "category",
   "n": 7,
   "below": 0,
   "above": 1
  },
  "PROTO-02": {
   "basis": "category",
   "n": 6,
   "below": 0,
   "above": 0
  }
 },
 "probe": {
  "checked": "2026-11-01",
  "status": "ok",
  "sign_up_page": "not-found",
  "wall": "none",
  "llms_txt": false,
  "mcp": "none",
  "openapi": false,
  "payment_402": null,
  "payment_rails": [],
  "files": {
   "openapi": {
    "url": null,
    "found": false
   },
   "llms_txt": {
    "url": null,
    "found": false
   },
   "llms_full": {
    "url": null,
    "found": false
   }
  }
 },
 "probe_history": [
  {
   "checked": "2026-11-01",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-31",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-30",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-29",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  },
  {
   "checked": "2026-10-28",
   "status": "ok",
   "sign_up_page": "not-found",
   "wall": "none",
   "llms_txt": false,
   "mcp": "none",
   "openapi": false,
   "payment_402": null,
   "payment_rails": []
  }
 ],
 "surface_changes": [],
 "agent_reports": null,
 "verdict": "L5 · Autonomous: our agent got in on its own and stopped at no checkpoint. listmonk is self-hosted, so the account is our agent's own install: the install command created the Super Admin and printed an API token. Our agent read the docs and the OpenAPI spec, called GET /api/lists with that token, created a list with POST /api/lists and read it back. It did the core work through the documented API, then deleted campaigns, subscribers, lists, templates and media and removed the instance. There is no hosted edition and nothing to cancel. Scoped API keys and roles are documented only in the admin UI.",
 "changes": {
  "source": "store",
  "drives": [
   {
    "run": "20261026T120623Z",
    "date": "2026-10-26",
    "level": 5,
    "stop": null,
    "entry": "self-start",
    "driver": 5,
    "listed": true,
    "paid": false,
    "agent_paid": null
   }
  ],
  "events": [],
  "feed": "https://agentdrives.com/api/tools/listmonk/changes.json"
 },
 "agreement": null,
 "method_release": "2026-Q4.27",
 "found": {
  "agent_blockers": 0,
  "surface_issues": 8
 },
 "agent_surfaces": {
  "api": {
   "state": "tested",
   "reachable": true,
   "documented": 81,
   "tested": 81,
   "source": "https://listmonk.app/docs/swagger/collections.yaml"
  },
  "mcp": {
   "state": "documented",
   "reachable": null,
   "documented": null,
   "tested": null,
   "source": "https://github.com/rhnvrm/listmonk-mcp"
  },
  "cli": {
   "state": "tested",
   "reachable": true,
   "documented": 10,
   "tested": 8,
   "source": "https://listmonk.app/docs/installation/"
  },
  "sdk": {
   "state": "none_found",
   "documented": null,
   "tested": null,
   "source": "https://listmonk.app/docs/apis/sdks/"
  },
  "docs": {
   "state": "tested",
   "documented": 1,
   "tested": 1,
   "source": "https://listmonk.app/docs/"
  },
  "payment": {
   "state": "none_found",
   "documented": null,
   "tested": null,
   "source": null
  }
 },
 "issues_found": 8,
 "rank": 1,
 "rank_of": 4,
 "rank_change": null,
 "rank_since": "2026-10-27",
 "links": {
  "category": [
   {
    "label": "Marketing",
    "href": "https://agentdrives.com/categories/marketing"
   },
   {
    "label": "Email marketing",
    "href": "https://agentdrives.com/categories/email-marketing"
   }
  ],
  "tasks": [
   {
    "label": "Create an API key",
    "href": "https://agentdrives.com/tasks/create-an-api-key"
   },
   {
    "label": "Register a webhook",
    "href": "https://agentdrives.com/tasks/register-a-webhook"
   },
   {
    "label": "Set a member's role or permissions",
    "href": "https://agentdrives.com/tasks/set-a-member-s-role-or-permissions"
   },
   {
    "label": "Export data to a file",
    "href": "https://agentdrives.com/tasks/export-data-to-a-file"
   },
   {
    "label": "Import data from a file or another tool",
    "href": "https://agentdrives.com/tasks/import-data-from-a-file-or-another-tool"
   },
   {
    "label": "Change account settings",
    "href": "https://agentdrives.com/tasks/change-account-settings"
   }
  ],
  "walls": [],
  "vendors": [],
  "standards": [
   {
    "label": "MCP",
    "href": "https://agentdrives.com/standards/mcp",
    "note": "tools an agent can call"
   },
   {
    "label": "OpenAPI",
    "href": "https://agentdrives.com/standards/openapi",
    "note": "its API, described"
   }
  ],
  "steps": [
   {
    "label": "Find",
    "href": "https://agentdrives.com/access/find"
   },
   {
    "label": "Get in",
    "href": "https://agentdrives.com/access/get-in"
   },
   {
    "label": "Use",
    "href": "https://agentdrives.com/access/use"
   },
   {
    "label": "Pay",
    "href": "https://agentdrives.com/access/pay"
   },
   {
    "label": "Leave",
    "href": "https://agentdrives.com/access/leave"
   }
  ],
  "rivals": [
   {
    "label": "Buttondown",
    "href": "https://agentdrives.com/tools/buttondown",
    "slug": "buttondown",
    "level": 4
   },
   {
    "label": "Constant Contact",
    "href": "https://agentdrives.com/tools/constantcontact",
    "slug": "constantcontact",
    "level": 4
   },
   {
    "label": "Kit",
    "href": "https://agentdrives.com/tools/kit",
    "slug": "kit",
    "level": 4
   }
  ],
  "compare": [],
  "rail": [
   {
    "label": "Watch this product",
    "href": "https://agentdrives.com/watch"
   },
   {
    "label": "Get the data",
    "href": "https://agentdrives.com/data#plans"
   }
  ]
 },
 "capability_matrix": [
  {
   "id": "cap-01",
   "name": "Draft an email campaign",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-02",
   "name": "Send an email campaign",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-03",
   "name": "Schedule an email campaign",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-04",
   "name": "Create a list and add contacts to it",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-05",
   "name": "Add a contact or subscriber",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-06",
   "name": "Create an email template",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-07",
   "name": "Send a transactional email",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "none"
   }
  },
  {
   "id": "cap-08",
   "name": "Read campaign performance",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-09",
   "name": "Update a contact or subscriber",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-10",
   "name": "Delete a contact or subscriber",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-11",
   "name": "Create a segment with a SQL query",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-12",
   "name": "Manage suppressions (blocklist subscribers)",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-13",
   "name": "Require double opt-in confirmation",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-14",
   "name": "Create a signup/subscription form",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-15",
   "name": "Set up a subscriber preference / unsubscribe page",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-16",
   "name": "Send a test campaign email",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-17",
   "name": "Publish a campaign to the public web archive",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-18",
   "name": "Track email opens and link clicks",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-19",
   "name": "Upload a file to the media library",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-20",
   "name": "Send an email with a file attachment",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "none"
   }
  },
  {
   "id": "cap-21",
   "name": "Bulk-import subscribers from a CSV/ZIP file",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-22",
   "name": "Export a subscriber's data",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-23",
   "name": "Register a bounce or messenger webhook endpoint",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-24",
   "name": "Set a user's role and list permissions",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "done"
   }
  },
  {
   "id": "cap-25",
   "name": "Invite/create a system user",
   "core": false,
   "result": "partial",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "partial"
   }
  },
  {
   "id": "cap-26",
   "name": "Create a scoped API key (API user)",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "done"
   }
  },
  {
   "id": "cap-27",
   "name": "Configure system settings (SMTP, bounces, appearance)",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  }
 ],
 "category_place": {
  "category": "email-marketing",
  "products": 10,
  "higher": 0,
  "same_level": 0,
  "as_of": "2026-11-01",
  "stop": null,
  "rivals_by": "level",
  "rivals": []
 },
 "page": "https://agentdrives.com/tools/listmonk?via=api"
}