Skip to content

io.github.spruikco/send16-mcp

by spruikco · remote · local (npm) · no sign-in to list tools · v0.5.8 · published by GitHub user spruikco

Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.

Deletes · 22Final · 1Changes · 26

87 tools: 22 can delete or cancel things, 1 do something that can't be undone, 26 change things and 38 only read.

Scanned Oct 21, 2026

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

claude mcp add --transport http send16 https://mcp.send16.com/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "pre_send_review" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "pre_send_review" says "send": a word for sending, and what is sent cannot be taken back.

    What this check looks for
  • The server marks "generate_email_from_url" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "generate_email_from_url" says "generate": a word for a change.

    What this check looks for

Tools

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

87 tools

Deletes or cancels 22Claude Code: deny
  • activate_automationActivate an automation.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Activate an automation. New events matching its triggers will start enrolling contacts. Confirm with the user first: once active it can start emailing contacts straight away.

    Annotations the server declares

    • title: Activate automation
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • delete_actionDelete an Action.No findings

    Why it is in this group

    • The name "delete_action" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete an Action.

    Annotations the server declares

    • title: Delete action
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_audienceDelete an audience (list).No findings

    Why it is in this group

    • The name "delete_audience" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete an audience (list). Contacts are not deleted; only the list and its memberships are removed.

    Annotations the server declares

    • title: Delete audience
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_campaignDelete a draft campaign.No findings

    Why it is in this group

    • The name "delete_campaign" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a draft campaign. Sent campaigns cannot be deleted (only archived).

    Annotations the server declares

    • title: Delete draft campaign
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_contactDelete a contact and all associated events.No findings

    Why it is in this group

    • The name "delete_contact" says "delete": a word for removing or ending something.
    • The description says "Irreversible".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a contact and all associated events. Irreversible.

    Annotations the server declares

    • title: Delete contact
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_topicDelete a subscription topic.No findings

    Why it is in this group

    • The name "delete_topic" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a subscription topic. All subscribers will be detached.

    Annotations the server declares

    • title: Delete subscription topic
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_webhookDelete an outgoing webhook endpoint.No findings

    Why it is in this group

    • The name "delete_webhook" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete an outgoing webhook endpoint.

    Annotations the server declares

    • title: Delete webhook
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • enroll_in_automationManually enroll a contact in an active automation.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Manually enroll a contact in an active automation. The automation must be in 'active' status. Use send_event for event-driven enrollment. Confirm with the user first: the automation can start emailing the contact straight away.

    Annotations the server declares

    • title: Enroll contact in automation
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • import_contactsBulk import contacts from CSV data (min column: email), optionally straight into audiences and/or with tags.No findings

    Why it is in this group

    • The name "import_contacts" says "import": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Bulk import contacts from CSV data (min column: email), optionally straight into audiences and/or with tags. This is the tool for cross-app flows; e.g. pulling people out of Gmail, a CRM, or a spreadsheet and landing them in a Send16 audience in one call. Set updateExisting for upsert semantics (safe to re-run). Requires consentConfirmed: true, so confirm with the user that everyone on the list opted in before calling.

    Annotations the server declares

    • title: Import contacts
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • pause_automationPause an automation.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Pause an automation. Existing enrollments freeze in place; no new contacts enroll.

    Annotations the server declares

    • title: Pause automation
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • pause_campaignPause a sending campaign.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Pause a sending campaign. Already-sent messages are unaffected; remaining sends halt.

    Annotations the server declares

    • title: Pause campaign
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • regenerate_webhook_secretRotate the HMAC signing secret for an outgoing webhook endpoint.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Rotate the HMAC signing secret for an outgoing webhook endpoint. Returns the new secret once.

    Annotations the server declares

    • title: Rotate webhook secret
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • remove_contact_from_audienceRemove a contact from an audience.No findings

    Why it is in this group

    • The name "remove_contact_from_audience" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove a contact from an audience.

    Annotations the server declares

    • title: Remove contact from audience
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • remove_suppressionRemove an email from the suppression list.No findings

    Why it is in this group

    • The name "remove_suppression" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove an email from the suppression list. Use only when you've confirmed the recipient wants to receive mail again.

    Annotations the server declares

    • title: Remove suppression
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • resume_campaignResume a paused campaign.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Resume a paused campaign. Confirm with the user first: the remaining recipients start receiving the campaign straight away. The sending limits and pauses described on schedule_campaign still apply.

    Annotations the server declares

    • title: Resume campaign
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • schedule_campaignSchedule (or send immediately) an existing draft campaign to an audience/segment/topic.No findings

    Why it is in this group

    • The name "schedule_campaign" says "schedule": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Schedule (or send immediately) an existing draft campaign to an audience/segment/topic. Before calling, confirm with the user: show them the recipients (or the recipient count), the sender and the subject, and wait for a clear yes. Send16 can refuse a send. 429 SEND_RAMP_LIMIT: new and free workspaces have hourly and daily sending limits while they build reputation; the error details give the window, the limit and how many remain. Tell the user how many can go now and that the rest can go once the window resets (or after upgrading), and do not split the send or retry in a loop to get around it. 403 SENDING_PAUSED: sending from the workspace is paused while the Send16 team reviews it. Nothing was sent. Tell the user to check the workspace owner's email or contact support, and do not retry. 422 MESSAGE_NEEDS_REVIEW: the content looked like it might be impersonating a government agency, bank, toll operator or delivery company, so it was held and not sent. Tell the user it is held for review and they can contact support if it is legitimate. Do not reword it and try again; repeated flags pause the workspace.

    Annotations the server declares

    • title: Schedule or send campaign
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • send_broadcastOne-shot broadcast: create a campaign and immediately schedule it to send, in a single call.No findings

    Why it is in this group

    • The name "send_broadcast" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    One-shot broadcast: create a campaign and immediately schedule it to send, in a single call. Pass either an audienceId, segmentId, topicId, or fully-qualified filter. Provide html OR templateSlug. Before calling, confirm with the user: show them the recipients (or the recipient count), the sender and the subject, and wait for a clear yes. Send16 can refuse a send. 429 SEND_RAMP_LIMIT: new and free workspaces have hourly and daily sending limits while they build reputation; the error details give the window, the limit and how many remain. Tell the user how many can go now and that the rest can go once the window resets (or after upgrading), and do not split the send or retry in a loop to get around it. 403 SENDING_PAUSED: sending from the workspace is paused while the Send16 team reviews it. Nothing was sent. Tell the user to check the workspace owner's email or contact support, and do not retry. 422 MESSAGE_NEEDS_REVIEW: the content looked like it might be impersonating a government agency, bank, toll operator or delivery company, so it was held and not sent. Tell the user it is held for review and they can contact support if it is legitimate. Do not reword it and try again; repeated flags pause the workspace.

    Annotations the server declares

    • title: Send broadcast
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • send_campaign_testSend a test email for an existing campaign to preview how it will look in recipients' inboxes.No findings

    Why it is in this group

    • The name "send_campaign_test" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Send a test email for an existing campaign to preview how it will look in recipients' inboxes. Confirm the test address with the user first. Can be refused with 403 SENDING_PAUSED (workspace under review, nothing was sent, tell the user to contact support).

    Annotations the server declares

    • title: Send campaign test
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • send_emailSend a transactional email through Send16.No findings

    Why it is in this group

    • The name "send_email" says "send": a word for sending, and what is sent cannot be taken back.
    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Send a transactional email through Send16. Provide `html`, `text`, or both (text-only is fine for OTPs/receipts/alerts). `from_email` must belong to a domain that is verified in the workspace; call `whoami` for the account and `list_domains` to see which senders are allowed; a send from an unverified domain returns a clear error, not a silent failure. For a zero-setup first send, use from_email `onboarding@send16.com`; the sandbox sender delivers with no DNS, but only to your own account email. Before calling, confirm with the user: show them the recipients (or the recipient count), the sender and the subject, and wait for a clear yes. Send16 can refuse a send. 429 SEND_RAMP_LIMIT: new and free workspaces have hourly and daily sending limits while they build reputation; the error details give the window, the limit and how many remain. Tell the user how many can go now and that the rest can go once the window resets (or after upgrading), and do not split the send or retry in a loop to get around it. 403 SENDING_PAUSED: sending from the workspace is paused while the Send16 team reviews it. Nothing was sent. Tell the user to check the workspace owner's email or contact support, and do not retry. 422 MESSAGE_NEEDS_REVIEW: the content looked like it might be impersonating a government agency, bank, toll operator or delivery company, so it was held and not sent. Tell the user it is held for review and they can contact support if it is legitimate. Do not reword it and try again; repeated flags pause the workspace.

    Annotations the server declares

    • title: Send email
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • send_eventFire a custom event for a contact.No findings

    Why it is in this group

    • The name "send_event" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Fire a custom event for a contact. Automations whose trigger is `{type:'custom_event', eventName:'<name>'}` will enroll the contact and start running. Payload is exposed to condition steps as `event.<key>`. Confirm with the user first if the event could start an automation that emails the contact.

    Annotations the server declares

    • title: Fire contact event
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • send_replyReply to an inbox conversation.No findings

    Why it is in this group

    • The name "send_reply" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Reply to an inbox conversation. The reply is sent from the original recipient address (the alias the convo arrived on) and threaded back to the contact. Show the user the reply text and get a clear yes first: it goes to a real person and cannot be unsent. Can be refused with 403 SENDING_PAUSED (workspace under review, nothing was sent, tell the user to contact support).

    Annotations the server declares

    • title: Send inbox reply
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • send_template_testSend a preview of a saved workspace template to one email address, so the user can see it in a real inbox.No findings

    Why it is in this group

    • The name "send_template_test" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Send a preview of a saved workspace template to one email address, so the user can see it in a real inbox. It arrives from noreply@send16.com with a small 'Template test preview' banner and uses sample merge values (first name 'Test'). Only send to the user's own address unless they ask otherwise. Confirm the test address with the user first. Can be refused with 403 SENDING_PAUSED (workspace under review, nothing was sent, tell the user to contact support).

    Annotations the server declares

    • title: Send template test
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Can't be undone 1Claude Code: ask
  • pre_send_reviewRun an AI pre-send review on an email's HTML before sending.1 finding

    Why it is in this group

    • The name "pre_send_review" says "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "pre_send_review" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "pre_send_review" says "send": a word for sending, and what is sent cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Run an AI pre-send review on an email's HTML before sending. Surfaces tone issues, broken links, missing alt text, spam triggers, and accessibility problems.

    Annotations the server declares

    • title: Review email before sending
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 26Claude Code: ask
  • add_contacts_to_audienceAdd contacts (by ID) to an audience.No findings

    Why it is in this group

    • The name "add_contacts_to_audience" says "add": a word for a change.
    Description, as the server wrote it
    Add contacts (by ID) to an audience.

    Annotations the server declares

    • title: Add contacts to audience
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • add_convo_noteAdd a private internal note on a conversation.No findings

    Why it is in this group

    • The name "add_convo_note" says "add": a word for a change.
    Description, as the server wrote it
    Add a private internal note on a conversation. Notes are visible only to workspace members.

    Annotations the server declares

    • title: Add internal note
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • add_domainRegister a new sending domain.No findings

    Why it is in this group

    • The name "add_domain" says "add": a word for a change.
    Description, as the server wrote it
    Register a new sending domain. Returns the DNS records the user must add to their DNS provider, after which they should call check_domain_health to verify.

    Annotations the server declares

    • title: Add sending domain
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • add_suppressionAdd an email to the suppression list.No findings

    Why it is in this group

    • The name "add_suppression" says "add": a word for a change.
    Description, as the server wrote it
    Add an email to the suppression list. Future sends to this address will be blocked.

    Annotations the server declares

    • title: Suppress address
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • check_domain_healthCheck the DNS health of a specific domain, including DKIM, SPF, DMARC, and MX record verification status.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Check the DNS health of a specific domain, including DKIM, SPF, DMARC, and MX record verification status. Triggers a fresh DNS lookup.

    Annotations the server declares

    • title: Check domain DNS
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • check_in_attendeeCheck a registrant in at the door (or undo it).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Check a registrant in at the door (or undo it). Use the registration ID from list_event_registrations.

    Annotations the server declares

    • title: Check in an attendee
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_actionCreate an Action that maps an event name to a transactional template.No findings

    Why it is in this group

    • The name "create_action" says "create": a word for a change.
    Description, as the server wrote it
    Create an Action that maps an event name to a transactional template. Each matching event sends one email to the contact.

    Annotations the server declares

    • title: Create action
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_audienceCreate a new audience.No findings

    Why it is in this group

    • The name "create_audience" says "create": a word for a change.
    Description, as the server wrote it
    Create a new audience.

    Annotations the server declares

    • title: Create audience
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_campaignCreate a new email campaign as a draft: optionally with full HTML content and recipients (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll) so it's ready to…No findings

    Why it is in this group

    • The name "create_campaign" says "create": a word for a change.
    Description, as the server wrote it
    Create a new email campaign as a draft: optionally with full HTML content and recipients (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll) so it's ready to test and send. Nothing is sent until schedule_campaign.

    Annotations the server declares

    • title: Create draft campaign
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_contactAdd a single new contact, optionally straight into audiences and/or with tags; e.g.No findings

    Why it is in this group

    • The name "create_contact" says "create": a word for a change.
    Description, as the server wrote it
    Add a single new contact, optionally straight into audiences and/or with tags; e.g. 'add this person from my email into the newsletter list'. Contacts are subscribed by default. For more than a handful of people, use import_contacts instead.

    Annotations the server declares

    • title: Add contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_topicCreate a new subscription topic.No findings

    Why it is in this group

    • The name "create_topic" says "create": a word for a change.
    Description, as the server wrote it
    Create a new subscription topic. Contacts opt into topics individually via the preference center.

    Annotations the server declares

    • title: Create subscription topic
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_webhookRegister an outgoing webhook endpoint.No findings

    Why it is in this group

    • The name "create_webhook" says "create": a word for a change.
    Description, as the server wrote it
    Register an outgoing webhook endpoint. Send16 POSTs event JSON to this URL with an HMAC-SHA256 signature. Outgoing webhooks are a plan feature.

    Annotations the server declares

    • title: Create webhook
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • design_email_templateUse AI to generate a complete email HTML template based on a description.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use AI to generate a complete email HTML template based on a description. Returns ready-to-use HTML that can be sent or used in campaigns.

    Annotations the server declares

    • title: Design email with AI
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • duplicate_campaignDuplicate a campaign (template, content, and settings) as a new draft; works on sent campaigns too, so this is the way to re-use a past campaign's design.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Duplicate a campaign (template, content, and settings) as a new draft; works on sent campaigns too, so this is the way to re-use a past campaign's design. Optionally rename and retarget in the same call (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll). NOTE: without retargeting, the copy keeps the ORIGINAL campaign's recipients.

    Annotations the server declares

    • title: Duplicate campaign
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • generate_email_from_urlScrape a URL (e.g.1 finding

    Why it is in this group

    • The name "generate_email_from_url" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "generate_email_from_url" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "generate_email_from_url" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Scrape a URL (e.g. a launch blog post or product page) and generate an email draft from its content. Returns subject, preview text, and HTML body.

    Annotations the server declares

    • title: Draft email from a web page
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • mark_convo_readMark a conversation as read for the current viewer.No findings

    Why it is in this group

    • The name "mark_convo_read" says "mark": a word for a change.
    Description, as the server wrote it
    Mark a conversation as read for the current viewer.

    Annotations the server declares

    • title: Mark conversation read
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • register_for_eventRegister someone for an event.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Register someone for an event. They get the event's confirmation email with their QR ticket unless the organiser switched it off, so confirm the person and the event with the user first. Registering doesn't subscribe them to marketing unless marketingOptIn is true because they asked.

    Annotations the server declares

    • title: Register someone for an event
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • render_email_contentCompile an EmailContent JSON object (the shape used by the Send16 builder + templates) into HTML using the platform's authoritative renderer.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Compile an EmailContent JSON object (the shape used by the Send16 builder + templates) into HTML using the platform's authoritative renderer. Returns the exact HTML the API would send. Useful for previews and post-processing.

    Annotations the server declares

    • title: Render email HTML
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • save_templateSave an email design as a reusable template in the user's Send16 workspace.No findings

    Why it is in this group

    • The name "save_template" says "save": a word for a change.
    Description, as the server wrote it
    Save an email design as a reusable template in the user's Send16 workspace. Use this when the user has designed an email (for example in a Claude artifact) and wants it in Send16. Pass the complete email HTML. Send16 hosts every image (remote URLs and inline data: images), converts merge tags like {{first_name}} to Send16's format, and stores the HTML exactly as designed. For best results across Gmail, Outlook and Apple Mail the HTML should be email-safe: table-based layout around 600px wide, inline styles, PNG/JPG/GIF images in <img> tags (not SVG or CSS backgrounds), web-safe font fallbacks, and alt text on images. Returns the template id; follow up with send_template_test to send a preview.

    Annotations the server declares

    • title: Save template
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • screener_decideDecide a pending screener conversation (first-time sender).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Decide a pending screener conversation (first-time sender). 'allow' lets future emails through, 'reject' blocks, 'cold' marks as cold outreach.

    Annotations the server declares

    • title: Decide screened sender
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_actionUpdate an Action (toggle enabled, change template, change event name).No findings

    Why it is in this group

    • The name "update_action" says "update": a word for a change.
    Description, as the server wrote it
    Update an Action (toggle enabled, change template, change event name).

    Annotations the server declares

    • title: Update action
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_brandUpdate workspace brand settings.No findings

    Why it is in this group

    • The name "update_brand" says "update": a word for a change.
    Description, as the server wrote it
    Update workspace brand settings. The designSpec field is a Markdown DESIGN.md document fed into AI generation system prompts; use it to encode voice, do/don't lists, and visual rules. companyName/websiteUrl/companyAddress also fill the matching merge tags in templates.

    Annotations the server declares

    • title: Update brand settings
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_campaignUpdate a draft campaign: name, subject, preview text, sender info, HTML content, and/or recipients.No findings

    Why it is in this group

    • The name "update_campaign" says "update": a word for a change.
    Description, as the server wrote it
    Update a draft campaign: name, subject, preview text, sender info, HTML content, and/or recipients. Retarget with exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll, then verify with preview_campaign_recipients before sending. Only drafts can be edited.

    Annotations the server declares

    • title: Update draft campaign
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_contactUpdate a contact's profile fields, custom fields, or subscription state.No findings

    Why it is in this group

    • The name "update_contact" says "update": a word for a change.
    Description, as the server wrote it
    Update a contact's profile fields, custom fields, or subscription state.

    Annotations the server declares

    • title: Update contact
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_convoUpdate conversation status (open/closed/archived/snoozed) or assignee.No findings

    Why it is in this group

    • The name "update_convo" says "update": a word for a change.
    Description, as the server wrote it
    Update conversation status (open/closed/archived/snoozed) or assignee.

    Annotations the server declares

    • title: Update conversation
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_topicUpdate a subscription topic (name, description, default).No findings

    Why it is in this group

    • The name "update_topic" says "update": a word for a change.
    Description, as the server wrote it
    Update a subscription topic (name, description, default).

    Annotations the server declares

    • title: Update subscription topic
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 38Claude Code: allow
  • get_actionGet a single Action with its trigger config and template binding.No findings

    Why it is in this group

    • The name "get_action" says "get": a word for reading.
    Description, as the server wrote it
    Get a single Action with its trigger config and template binding.

    Annotations the server declares

    • title: Get action
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_automationGet a single automation by ID, including its trigger, steps, and current status.No findings

    Why it is in this group

    • The name "get_automation" says "get": a word for reading.
    Description, as the server wrote it
    Get a single automation by ID, including its trigger, steps, and current status.

    Annotations the server declares

    • title: Get automation
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_automation_statsGet aggregate analytics for an automation: total enrollments, completed, exited, open/click rates per step.No findings

    Why it is in this group

    • The name "get_automation_stats" says "get": a word for reading.
    Description, as the server wrote it
    Get aggregate analytics for an automation: total enrollments, completed, exited, open/click rates per step.

    Annotations the server declares

    • title: Get automation stats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_brandGet the workspace's brand settings: colors, logo, fonts, and the DESIGN.md spec injected into AI generation prompts.No findings

    Why it is in this group

    • The name "get_brand" says "get": a word for reading.
    Description, as the server wrote it
    Get the workspace's brand settings: colors, logo, fonts, and the DESIGN.md spec injected into AI generation prompts.

    Annotations the server declares

    • title: Get brand settings
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_campaign_statsGet detailed performance statistics for a specific campaign including open rate, click rate, bounce rate, and delivery metrics.No findings

    Why it is in this group

    • The name "get_campaign_stats" says "get": a word for reading.
    Description, as the server wrote it
    Get detailed performance statistics for a specific campaign including open rate, click rate, bounce rate, and delivery metrics.

    Annotations the server declares

    • title: Get campaign stats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_contact_health_scoreGet a contact's 0-100 health score based on recent engagement (opens, clicks, replies).No findings

    Why it is in this group

    • The name "get_contact_health_score" says "get": a word for reading.
    Description, as the server wrote it
    Get a contact's 0-100 health score based on recent engagement (opens, clicks, replies).

    Annotations the server declares

    • title: Get contact health score
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_contact_timelineGet a contact's full activity timeline: emails received, events fired, opens, clicks, automation enrollments, topic changes.No findings

    Why it is in this group

    • The name "get_contact_timeline" says "get": a word for reading.
    Description, as the server wrote it
    Get a contact's full activity timeline: emails received, events fired, opens, clicks, automation enrollments, topic changes.

    Annotations the server declares

    • title: Get contact timeline
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_convoGet a single conversation with its full thread of posts (incoming + outgoing).No findings

    Why it is in this group

    • The name "get_convo" says "get": a word for reading.
    Description, as the server wrote it
    Get a single conversation with its full thread of posts (incoming + outgoing).

    Annotations the server declares

    • title: Get conversation
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_deliverability_statusGet your workspace's deliverability summary: sending reputation, domain authentication status, and recent bounce/complaint health.No findings

    Why it is in this group

    • The name "get_deliverability_status" says "get": a word for reading.
    Description, as the server wrote it
    Get your workspace's deliverability summary: sending reputation, domain authentication status, and recent bounce/complaint health. (Deliverability Hub plan feature.)

    Annotations the server declares

    • title: Get deliverability status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_event_insightsWho registered and who came for one event: counts, no-show rate, where people came from (city and state), first-timers vs returning, organisations and registrations over time.No findings

    Why it is in this group

    • The name "get_event_insights" says "get": a word for reading.
    Description, as the server wrote it
    Who registered and who came for one event: counts, no-show rate, where people came from (city and state), first-timers vs returning, organisations and registrations over time. Without an eventId, returns insights across every event: regulars and their attendance streaks, cohort retention and the regions growing fastest.

    Annotations the server declares

    • title: Event attendance insights
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_messageFetch a single message with its full event timeline (created → sent → delivered → opened → clicked → ...).No findings

    Why it is in this group

    • The name "get_message" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single message with its full event timeline (created → sent → delivered → opened → clicked → ...).

    Annotations the server declares

    • title: Get message
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_message_eventsGet just the delivery event timeline for a message: no body or recipient details.No findings

    Why it is in this group

    • The name "get_message_events" says "get": a word for reading.
    Description, as the server wrote it
    Get just the delivery event timeline for a message: no body or recipient details.

    Annotations the server declares

    • title: Get message events
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_templateGet a single starter template by ID, including its EmailContent JSON.No findings

    Why it is in this group

    • The name "get_template" says "get": a word for reading.
    Description, as the server wrote it
    Get a single starter template by ID, including its EmailContent JSON.

    Annotations the server declares

    • title: Get starter template
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_workspaceGet the current workspace (the one the API key belongs to).No findings

    Why it is in this group

    • The name "get_workspace" says "get": a word for reading.
    Description, as the server wrote it
    Get the current workspace (the one the API key belongs to).

    Annotations the server declares

    • title: Get workspace
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_workspace_usageGet the current month's send count, contact count, and plan limits.No findings

    Why it is in this group

    • The name "get_workspace_usage" says "get": a word for reading.
    Description, as the server wrote it
    Get the current month's send count, contact count, and plan limits.

    Annotations the server declares

    • title: Get usage
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_actionsList Actions.No findings

    Why it is in this group

    • The name "list_actions" says "list": a word for reading.
    Description, as the server wrote it
    List Actions. Actions fire a transactional template when a custom event arrives: simple 'event_name → template' pairings, lighter than full automations.

    Annotations the server declares

    • title: List actions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_audiencesList audiences (lists).No findings

    Why it is in this group

    • The name "list_audiences" says "list": a word for reading.
    Description, as the server wrote it
    List audiences (lists). An audience is a static, manually-managed group of contacts.

    Annotations the server declares

    • title: List audiences
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_automation_enrollmentsList active and historical enrollments for an automation.No findings

    Why it is in this group

    • The name "list_automation_enrollments" says "list": a word for reading.
    Description, as the server wrote it
    List active and historical enrollments for an automation.

    Annotations the server declares

    • title: List automation enrollments
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_automationsList all automations in the workspace, including draft/active/paused status and trigger types.No findings

    Why it is in this group

    • The name "list_automations" says "list": a word for reading.
    Description, as the server wrote it
    List all automations in the workspace, including draft/active/paused status and trigger types.

    Annotations the server declares

    • title: List automations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_campaignsList email campaigns, newest first.No findings

    Why it is in this group

    • The name "list_campaigns" says "list": a word for reading.
    Description, as the server wrote it
    List email campaigns, newest first. Use `search` to find a past campaign the user describes vaguely ('the invite one', 'that July newsletter'); it matches name and subject case-insensitively; try distinctive words from their description and broaden if no hits.

    Annotations the server declares

    • title: List campaigns
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_contactsList all contacts with optional filtering by subscription status and tag.No findings

    Why it is in this group

    • The name "list_contacts" says "list": a word for reading.
    Description, as the server wrote it
    List all contacts with optional filtering by subscription status and tag. Supports pagination.

    Annotations the server declares

    • title: List contacts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_convosList inbox conversations.No findings

    Why it is in this group

    • The name "list_convos" says "list": a word for reading.
    Description, as the server wrote it
    List inbox conversations. Filter by state, mailbox, label, screener status, or full-text search. Send16's unified inbox combines transactional reply threading with team-managed shared inboxes.

    Annotations the server declares

    • title: List inbox conversations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_domainsList all sending domains configured in your Send16 workspace, including their verification status and DNS records.No findings

    Why it is in this group

    • The name "list_domains" says "list": a word for reading.
    Description, as the server wrote it
    List all sending domains configured in your Send16 workspace, including their verification status and DNS records.

    Annotations the server declares

    • title: List sending domains
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_event_registrationsList the people registered for an event, with status (registered, waitlisted, attended, no_show, cancelled), company, city and check-in time.No findings

    Why it is in this group

    • The name "list_event_registrations" says "list": a word for reading.
    Description, as the server wrote it
    List the people registered for an event, with status (registered, waitlisted, attended, no_show, cancelled), company, city and check-in time.

    Annotations the server declares

    • title: List event registrations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_eventsList the workspace's events (meetups, workshops, conferences) with registered, attended and no-show counts and each event's public registration page.No findings

    Why it is in this group

    • The name "list_events" says "list": a word for reading.
    Description, as the server wrote it
    List the workspace's events (meetups, workshops, conferences) with registered, attended and no-show counts and each event's public registration page.

    Annotations the server declares

    • title: List events
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_inbox_countsGet unread/total counts per category and label for the inbox sidebar (newsletter, transactional, marketing, calendar, social, cold).No findings

    Why it is in this group

    • The name "list_inbox_counts" says "list": a word for reading.
    Description, as the server wrote it
    Get unread/total counts per category and label for the inbox sidebar (newsletter, transactional, marketing, calendar, social, cold).

    Annotations the server declares

    • title: Get inbox counts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_messagesList messages from the unified send log (transactional + campaign).No findings

    Why it is in this group

    • The name "list_messages" says "list": a word for reading.
    Description, as the server wrote it
    List messages from the unified send log (transactional + campaign). Filter by recipient, sender, status, date range, or source.

    Annotations the server declares

    • title: List sent messages
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_segmentsList dynamic segments.No findings

    Why it is in this group

    • The name "list_segments" says "list": a word for reading.
    Description, as the server wrote it
    List dynamic segments. Segments compute their members from a filter expression at send time.

    Annotations the server declares

    • title: List segments
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_suppressionsList suppressed email addresses (bounces, complaints, unsubscribes, manual).No findings

    Why it is in this group

    • The name "list_suppressions" says "list": a word for reading.
    Description, as the server wrote it
    List suppressed email addresses (bounces, complaints, unsubscribes, manual).

    Annotations the server declares

    • title: List suppressions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_templatesList starter-gallery email templates available to every workspace.No findings

    Why it is in this group

    • The name "list_templates" says "list": a word for reading.
    Description, as the server wrote it
    List starter-gallery email templates available to every workspace.

    Annotations the server declares

    • title: List starter templates
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_topicsList subscription topics.No findings

    Why it is in this group

    • The name "list_topics" says "list": a word for reading.
    Description, as the server wrote it
    List subscription topics. Topics are granular categories contacts can subscribe to (e.g. 'product-updates', 'weekly-digest'). Campaigns and automations can be gated to subscribers of a specific topic.

    Annotations the server declares

    • title: List subscription topics
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_webhooksList configured outgoing webhooks (your endpoints that Send16 POSTs delivery events to).No findings

    Why it is in this group

    • The name "list_webhooks" says "list": a word for reading.
    Description, as the server wrote it
    List configured outgoing webhooks (your endpoints that Send16 POSTs delivery events to). Outgoing webhooks are a plan feature.

    Annotations the server declares

    • title: List webhooks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_workspace_templatesList the templates saved in the user's own Send16 workspace (their template library, including ones saved with save_template).No findings

    Why it is in this group

    • The name "list_workspace_templates" says "list": a word for reading.
    Description, as the server wrote it
    List the templates saved in the user's own Send16 workspace (their template library, including ones saved with save_template). For the shared starter gallery use list_templates.

    Annotations the server declares

    • title: List saved templates
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_workspacesList workspaces the authenticated user has access to (owner or member).No findings

    Why it is in this group

    • The name "list_workspaces" says "list": a word for reading.
    Description, as the server wrote it
    List workspaces the authenticated user has access to (owner or member).

    Annotations the server declares

    • title: List workspaces
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • preview_campaign_recipientsPreview the recipient set for a campaign before sending.No findings

    Why it is in this group

    • The name "preview_campaign_recipients" says "preview": a word for reading.
    Description, as the server wrote it
    Preview the recipient set for a campaign before sending. Returns count + sample list.

    Annotations the server declares

    • title: Preview campaign recipients
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • preview_segmentPreview the contacts that match a segment without sending.No findings

    Why it is in this group

    • The name "preview_segment" says "preview": a word for reading.
    Description, as the server wrote it
    Preview the contacts that match a segment without sending.

    Annotations the server declares

    • title: Preview segment
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_contactsSearch contacts by email address or name.No findings

    Why it is in this group

    • The name "search_contacts" says "search": a word for reading.
    Description, as the server wrote it
    Search contacts by email address or name. Returns matching contacts with their tags and subscription status.

    Annotations the server declares

    • title: Search contacts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • whoamiVerify the API key and return the authenticated workspace: name, plan, email quota (used/limit), and owner.No findings

    Why it is in this group

    • The name "whoami" says "whoami": a word for reading.
    Description, as the server wrote it
    Verify the API key and return the authenticated workspace: name, plan, email quota (used/limit), and owner. Call this first to confirm the key works before sending. Pair with list_domains to see which `from` addresses are allowed.

    Annotations the server declares

    • title: Check account
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

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 0.5.8. Values in angle brackets are yours to fill in.

claude mcp add --transport http send16 https://mcp.send16.com/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__send16__whoami",
      "mcp__send16__list_campaigns",
      "mcp__send16__search_contacts",
      "mcp__send16__list_contacts",
      "mcp__send16__list_domains",
      "mcp__send16__get_campaign_stats",
      "mcp__send16__get_deliverability_status",
      "mcp__send16__list_automations",
      "mcp__send16__get_automation",
      "mcp__send16__list_templates",
      "mcp__send16__list_workspace_templates",
      "mcp__send16__get_template",
      "mcp__send16__list_messages",
      "mcp__send16__get_message",
      "mcp__send16__get_message_events",
      "mcp__send16__list_convos",
      "mcp__send16__get_convo",
      "mcp__send16__list_inbox_counts",
      "mcp__send16__list_topics",
      "mcp__send16__list_actions",
      "mcp__send16__get_action",
      "mcp__send16__list_audiences",
      "mcp__send16__list_segments",
      "mcp__send16__preview_segment",
      "mcp__send16__list_events",
      "mcp__send16__get_event_insights",
      "mcp__send16__list_event_registrations",
      "mcp__send16__get_contact_timeline",
      "mcp__send16__get_contact_health_score",
      "mcp__send16__preview_campaign_recipients",
      "mcp__send16__get_automation_stats",
      "mcp__send16__list_automation_enrollments",
      "mcp__send16__list_workspaces",
      "mcp__send16__get_workspace",
      "mcp__send16__get_brand",
      "mcp__send16__get_workspace_usage",
      "mcp__send16__list_suppressions",
      "mcp__send16__list_webhooks"
    ],
    "ask": [
      "mcp__send16__create_campaign",
      "mcp__send16__design_email_template",
      "mcp__send16__create_contact",
      "mcp__send16__check_domain_health",
      "mcp__send16__save_template",
      "mcp__send16__render_email_content",
      "mcp__send16__add_domain",
      "mcp__send16__pre_send_review",
      "mcp__send16__generate_email_from_url",
      "mcp__send16__mark_convo_read",
      "mcp__send16__update_convo",
      "mcp__send16__add_convo_note",
      "mcp__send16__screener_decide",
      "mcp__send16__create_topic",
      "mcp__send16__update_topic",
      "mcp__send16__create_action",
      "mcp__send16__update_action",
      "mcp__send16__create_audience",
      "mcp__send16__add_contacts_to_audience",
      "mcp__send16__register_for_event",
      "mcp__send16__check_in_attendee",
      "mcp__send16__update_contact",
      "mcp__send16__update_campaign",
      "mcp__send16__duplicate_campaign",
      "mcp__send16__update_brand",
      "mcp__send16__add_suppression",
      "mcp__send16__create_webhook"
    ],
    "deny": [
      "mcp__send16__send_email",
      "mcp__send16__send_campaign_test",
      "mcp__send16__import_contacts",
      "mcp__send16__enroll_in_automation",
      "mcp__send16__send_event",
      "mcp__send16__send_template_test",
      "mcp__send16__send_reply",
      "mcp__send16__delete_topic",
      "mcp__send16__delete_action",
      "mcp__send16__remove_contact_from_audience",
      "mcp__send16__delete_audience",
      "mcp__send16__delete_contact",
      "mcp__send16__send_broadcast",
      "mcp__send16__schedule_campaign",
      "mcp__send16__pause_campaign",
      "mcp__send16__resume_campaign",
      "mcp__send16__delete_campaign",
      "mcp__send16__activate_automation",
      "mcp__send16__pause_automation",
      "mcp__send16__remove_suppression",
      "mcp__send16__delete_webhook",
      "mcp__send16__regenerate_webhook_secret"
    ]
  }
}

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 send16. Review it before you use it.