Skip to content

Buttondown MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi

Read Buttondown subscribers, emails, analytics and automations; add subscribers; write email drafts.

Deletes · 2Changes · 3

25 tools: 2 can delete or cancel things, 3 change things and 20 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http buttondown https://buttondown.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

25 tools

Deletes or cancels 2Claude Code: deny
  • buttondown_update_email_draftWRITE: edit the subject, body, description, slug or preview image of an email that is still a DRAFT (replaces those fields; the previous text is lost unless Buttondown's email hist…No findings

    Why it is in this group

    • The name "buttondown_update_email_draft" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: edit the subject, body, description, slug or preview image of an email that is still a DRAFT (replaces those fields; the previous text is lost unless Buttondown's email history is used). Refuses any email that is not a draft, and never changes status or publish date, so nothing is sent or scheduled. PATCH /emails/{id}.

    Annotations the server declares

    • title: Edit an email draft
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • buttondown_update_subscriberWRITE: change ONE subscriber's tags, private note or metadata.No findings

    Why it is in this group

    • The name "buttondown_update_subscriber" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE: change ONE subscriber's tags, private note or metadata. Tags are merged (add_tags / remove_tags change only those names; the others stay). A given note or metadata replaces the existing value (destructive for that field). The subscriber's type (unsubscribe, block, ...) and e-mail address cannot be changed here, and this tool sends nothing itself; but a tag, note or metadata change can start the newsletter's own automations (for example a tag-triggered welcome sequence), which may e-mail that one subscriber. PATCH /subscribers/{id_or_email}.

    Annotations the server declares

    • title: Update a subscriber
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Changes things 3Claude Code: ask
  • buttondown_add_subscriberWRITE: add ONE subscriber by e-mail address.No findings

    Why it is in this group

    • The name "buttondown_add_subscriber" says "add": a word for a change.
    Description, as the server wrote it
    WRITE: add ONE subscriber by e-mail address. No subscriber type is set, so Buttondown applies the newsletter's normal sign-up rules (double opt-in: the subscriber is typically created as unactivated and Buttondown e-mails THAT ONE address a confirmation message; opt-in is never bypassed, nor is the firewall). Only add people who asked to subscribe. Creating a subscriber (and its tags) can also start the newsletter's own automations, which may e-mail that one subscriber. An existing e-mail is left untouched (error, no overwrite). Optional tags (a tag that does not exist is created, which needs a plan with tags), a private note and metadata. Buttondown limits creation to 100 subscribers per day. POST /subscribers.

    Annotations the server declares

    • title: Add a subscriber
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • buttondown_create_email_draftWRITE: create a DRAFT email (status always "draft").No findings

    Why it is in this group

    • The name "buttondown_create_email_draft" says "create": a word for a change.
    Description, as the server wrote it
    WRITE: create a DRAFT email (status always "draft"). Nothing is sent or scheduled and no subscriber is e-mailed; to send it, the user must open the draft in Buttondown and send it there. This server has no tool that sends or schedules email. Body is Markdown or HTML. POST /emails.

    Annotations the server declares

    • title: Create an email draft
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • buttondown_create_tagWRITE: create a subscriber tag (needs a Buttondown plan with tags).No findings

    Why it is in this group

    • The name "buttondown_create_tag" says "create": a word for a change.
    Description, as the server wrote it
    WRITE: create a subscriber tag (needs a Buttondown plan with tags). An existing tag with the same name is returned as an error and not changed. POST /tags.

    Annotations the server declares

    • title: Create a tag
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 20Claude Code: allow
  • buttondown_get_accountThe Buttondown account this API key belongs to: username and e-mail address.No findings

    Why it is in this group

    • The name "buttondown_get_account" says "get": a word for reading.
    Description, as the server wrote it
    The Buttondown account this API key belongs to: username and e-mail address. GET /accounts/me.

    Annotations the server declares

    • title: Get account
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_get_automationOne automation by id with its trigger, actions and filters.No findings

    Why it is in this group

    • The name "buttondown_get_automation" says "get": a word for reading.
    Description, as the server wrote it
    One automation by id with its trigger, actions and filters. GET /automations/{id}.

    Annotations the server declares

    • title: Get automation
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_get_automation_analyticsPerformance numbers for one automation.No findings

    Why it is in this group

    • The name "buttondown_get_automation_analytics" says "get": a word for reading.
    Description, as the server wrote it
    Performance numbers for one automation. GET /automations/{id}/analytics.

    Annotations the server declares

    • title: Get automation analytics
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_get_emailOne email by id with its full body, subject, status, publish date, slug, archive settings and analytics summary.No findings

    Why it is in this group

    • The name "buttondown_get_email" says "get": a word for reading.
    Description, as the server wrote it
    One email by id with its full body, subject, status, publish date, slug, archive settings and analytics summary. GET /emails/{id}.

    Annotations the server declares

    • title: Get email
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_get_email_analyticsDelivery and engagement numbers for one sent email: recipients, deliveries, opens, clicks, failures, unsubscriptions, complaints, replies, page views.No findings

    Why it is in this group

    • The name "buttondown_get_email_analytics" says "get": a word for reading.
    Description, as the server wrote it
    Delivery and engagement numbers for one sent email: recipients, deliveries, opens, clicks, failures, unsubscriptions, complaints, replies, page views. GET /emails/{id}/analytics.

    Annotations the server declares

    • title: Get email analytics
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_get_newsletterOne newsletter by id (settings and identity only; no API key, CSS or templates).No findings

    Why it is in this group

    • The name "buttondown_get_newsletter" says "get": a word for reading.
    Description, as the server wrote it
    One newsletter by id (settings and identity only; no API key, CSS or templates). GET /newsletters/{id}.

    Annotations the server declares

    • title: Get newsletter
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_get_subscriberOne subscriber by id or by e-mail address: type, tags, notes, metadata, source, engagement and lifecycle dates.No findings

    Why it is in this group

    • The name "buttondown_get_subscriber" says "get": a word for reading.
    Description, as the server wrote it
    One subscriber by id or by e-mail address: type, tags, notes, metadata, source, engagement and lifecycle dates. GET /subscribers/{id_or_email}.

    Annotations the server declares

    • title: Get subscriber
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_get_tag_analyticsSubscribers created, open rate and click rate for one tag.No findings

    Why it is in this group

    • The name "buttondown_get_tag_analytics" says "get": a word for reading.
    Description, as the server wrote it
    Subscribers created, open rate and click rate for one tag. GET /tags/{id}/analytics.

    Annotations the server declares

    • title: Get tag analytics
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_automationsList automations (welcome sequences and other triggered e-mails) with name, status, trigger, actions and filters (webhook URLs in actions are shown by host only).No findings

    Why it is in this group

    • The name "buttondown_list_automations" says "list": a word for reading.
    Description, as the server wrote it
    List automations (welcome sequences and other triggered e-mails) with name, status, trigger, actions and filters (webhook URLs in actions are shown by host only). Read-only: automations are not started or changed. GET /automations.

    Annotations the server declares

    • title: List automations
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_emailsList emails (drafts, scheduled and sent), newest first by default, with subject, status, publish date, slug, archive URL and analytics summary.No findings

    Why it is in this group

    • The name "buttondown_list_emails" says "list": a word for reading.
    Description, as the server wrote it
    List emails (drafts, scheduled and sent), newest first by default, with subject, status, publish date, slug, archive URL and analytics summary. The body is left out unless include_body is set. Filter by status, subject text or date. GET /emails.

    Annotations the server declares

    • title: List emails
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_eventsList delivery events (delivered, opened, clicked, bounced, unsubscribed, ...), newest first, optionally for one email or subscriber.No findings

    Why it is in this group

    • The name "buttondown_list_events" says "list": a word for reading.
    Description, as the server wrote it
    List delivery events (delivered, opened, clicked, bounced, unsubscribed, ...), newest first, optionally for one email or subscriber. GET /events.

    Annotations the server declares

    • title: List email events
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_formsList sign-up forms with title, slug, status, tags and subscriber counts.No findings

    Why it is in this group

    • The name "buttondown_list_forms" says "list": a word for reading.
    Description, as the server wrote it
    List sign-up forms with title, slug, status, tags and subscriber counts. GET /forms.

    Annotations the server declares

    • title: List forms
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_newslettersList the newsletters on the account with name, username, domains, sender, locale and timezone.No findings

    Why it is in this group

    • The name "buttondown_list_newsletters" says "list": a word for reading.
    Description, as the server wrote it
    List the newsletters on the account with name, username, domains, sender, locale and timezone. The newsletter's API key, custom CSS and e-mail templates are never returned. GET /newsletters.

    Annotations the server declares

    • title: List newsletters
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_segmentsList saved subscriber segments with name, description and filters.No findings

    Why it is in this group

    • The name "buttondown_list_segments" says "list": a word for reading.
    Description, as the server wrote it
    List saved subscriber segments with name, description and filters. GET /segments.

    Annotations the server declares

    • title: List segments
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_snippetsList reusable content snippets with identifier, name, mode and how often each is referenced.No findings

    Why it is in this group

    • The name "buttondown_list_snippets" says "list": a word for reading.
    Description, as the server wrote it
    List reusable content snippets with identifier, name, mode and how often each is referenced. GET /snippets.

    Annotations the server declares

    • title: List snippets
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_subscribersList or search subscribers (newest first by default) with e-mail, type (regular, unactivated, unsubscribed, premium, ...), tags, notes, metadata, source, open/click rates and dates…No findings

    Why it is in this group

    • The name "buttondown_list_subscribers" says "list": a word for reading.
    Description, as the server wrote it
    List or search subscribers (newest first by default) with e-mail, type (regular, unactivated, unsubscribed, premium, ...), tags, notes, metadata, source, open/click rates and dates. Filter by e-mail text, type, tag, signup date or domain. GET /subscribers.

    Annotations the server declares

    • title: List subscribers
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_survey_responsesList survey responses (who answered what), optionally for one survey, email or subscriber.No findings

    Why it is in this group

    • The name "buttondown_list_survey_responses" says "list": a word for reading.
    Description, as the server wrote it
    List survey responses (who answered what), optionally for one survey, email or subscriber. GET /survey_responses.

    Annotations the server declares

    • title: List survey responses
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_surveysList surveys with question, answers, status and response count.No findings

    Why it is in this group

    • The name "buttondown_list_surveys" says "list": a word for reading.
    Description, as the server wrote it
    List surveys with question, answers, status and response count. GET /surveys.

    Annotations the server declares

    • title: List surveys
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_tagsList subscriber tags with name, color, descriptions and whether subscribers can edit them.No findings

    Why it is in this group

    • The name "buttondown_list_tags" says "list": a word for reading.
    Description, as the server wrote it
    List subscriber tags with name, color, descriptions and whether subscribers can edit them. GET /tags.

    Annotations the server declares

    • title: List tags
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • buttondown_list_webhooksList configured webhooks with status and subscribed event types.No findings

    Why it is in this group

    • The name "buttondown_list_webhooks" says "list": a word for reading.
    Description, as the server wrote it
    List configured webhooks with status and subscribed event types. The signing key is never returned and the URL is shown by host only. GET /webhooks.

    Annotations the server declares

    • title: List webhooks
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.3.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http buttondown https://buttondown.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__buttondown__buttondown_get_account",
      "mcp__buttondown__buttondown_list_newsletters",
      "mcp__buttondown__buttondown_get_newsletter",
      "mcp__buttondown__buttondown_list_subscribers",
      "mcp__buttondown__buttondown_get_subscriber",
      "mcp__buttondown__buttondown_list_emails",
      "mcp__buttondown__buttondown_get_email",
      "mcp__buttondown__buttondown_get_email_analytics",
      "mcp__buttondown__buttondown_list_tags",
      "mcp__buttondown__buttondown_get_tag_analytics",
      "mcp__buttondown__buttondown_list_automations",
      "mcp__buttondown__buttondown_get_automation",
      "mcp__buttondown__buttondown_get_automation_analytics",
      "mcp__buttondown__buttondown_list_surveys",
      "mcp__buttondown__buttondown_list_survey_responses",
      "mcp__buttondown__buttondown_list_segments",
      "mcp__buttondown__buttondown_list_forms",
      "mcp__buttondown__buttondown_list_snippets",
      "mcp__buttondown__buttondown_list_webhooks",
      "mcp__buttondown__buttondown_list_events"
    ],
    "ask": [
      "mcp__buttondown__buttondown_add_subscriber",
      "mcp__buttondown__buttondown_create_email_draft",
      "mcp__buttondown__buttondown_create_tag"
    ],
    "deny": [
      "mcp__buttondown__buttondown_update_subscriber",
      "mcp__buttondown__buttondown_update_email_draft"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as buttondown. Review it before you use it.