Sendhustle MCP server
Send and manage email via the SendHustle API — emails, domains, contacts, audiences, campaigns.
33 downloads/wk
Reviews
Write oneNobody has reviewed Sendhustle yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Sendhustle tools (100, 53 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
add_automation_stepAppend a step to an automation (POST /automations/:id/steps).
add_contact_to_segmentAdd a contact to a segment (POST /contacts/:id/segments/:segmentId).
apply_domain_dns_cloudflareApply a domain's DNS records via the Cloudflare API, then auto-verify (POST /domains/:id/dns/cloudflare). Requires a scoped Zone.DNS:Edit token.
apply_domain_dns_godaddyApply a domain's DNS records via the GoDaddy API, then auto-verify (POST /domains/:id/dns/godaddy).
apply_domain_dns_namecheapApply a domain's DNS records via the Namecheap API, then auto-verify (POST /domains/:id/dns/namecheap). Namecheap requires the calling server's IP to be whitelisted on the account.
cancel_campaignwrite actionCancel a scheduled campaign, returning it to draft (POST /campaigns/:id/cancel).
cancel_emailwrite actionCancel a scheduled email before it sends (POST /emails/:id/cancel).
check_domain_mxMX preflight for a hostname before enabling receiving (GET /domains/mx-check). Returns { has_mx, ours, records } — whether the hostname already has MX records and whether they all point at our inbound host.
claim_domainClaim a domain already verified elsewhere (POST /domains/claim). Returns a TXT record to add.
create_audiencewrite actionCreate an audience — a named list of contacts (POST /audiences).
create_automationwrite actionCreate an automation triggered by an event (POST /automations). Every automation belongs to one sending domain — only send_event calls with the same domain trigger it. Optionally pass an inline step graph (steps + connections).
create_campaignwrite actionCreate a campaign targeting a sending domain's contact pool (POST /campaigns, domain-first). Send it later with send_campaign.
create_contactwrite actionCreate a contact in a sending domain's contact pool (POST /contacts, domain-first). The same address on two domains is two records with separate consent.
create_contact_propertywrite actionCreate a custom contact property / merge tag (POST /contact-properties). type is 'string' or 'number'. Idempotent on key: if a property with the same key already exists, returns that property (with already_existed: true) instead of an error.
create_domainwrite actionCreate a sender domain (POST /domains). The response includes DNS records you must add at your DNS provider before verifying.
create_segmentwrite actionCreate a segment on a sending domain (POST /segments, domain-first). Segment names are unique WITHIN a domain but reusable across domains. filter supports { status, email_contains, property_filters }.
create_templatewrite actionCreate a reusable email template (POST /templates). Supports subject/html/text with {{ variables }} and optional variable definitions.
create_topicwrite actionCreate a subscription topic on a sending domain (POST /topics, domain-first). default_subscription is 'opt_in' or 'opt_out'; visibility is 'public' or 'private'.
create_webhookwrite actionCreate a webhook endpoint (POST /webhooks). The signing secret is returned ONCE on create — store it.
delete_audiencewrite actionDelete an audience and its contacts (DELETE /audiences/:id).
delete_automationwrite actionDelete an automation (DELETE /automations/:id).
delete_automation_stepwrite actionDelete a step from an automation (DELETE /automations/:id/steps/:stepId). Stop (disable) the automation first if it is enabled.
delete_campaignwrite actionDelete a campaign (DELETE /campaigns/:id).
delete_contactwrite actionDelete a contact by id or email (DELETE /contacts/:id). Pass `domain` when addressing by EMAIL (picks the pool).
delete_contact_propertywrite actionDelete a contact property (DELETE /contact-properties/:id).
delete_domainwrite actionDelete a domain (DELETE /domains/:id).
delete_received_emailwrite actionPermanently delete a received email, including its stored raw message and attachments (DELETE /emails/receiving/:id). This cannot be undone.
delete_segmentwrite actionDelete a segment (DELETE /segments/:id).
delete_templatewrite actionDelete a template (DELETE /templates/:id).
delete_topicwrite actionDelete a topic (DELETE /topics/:id).
delete_webhookwrite actionDelete a webhook (DELETE /webhooks/:id).
detect_domain_dnsDetect a domain's DNS provider and the one-click apply methods available (GET /domains/:id/dns/detect).
duplicate_templateDuplicate a template (POST /templates/:id/duplicate).
forward_received_emailwrite actionForward a received email to other recipients (POST /emails/receiving/:id/forward). "from" must be a verified sending address; defaults to the configured sender.
get_audienceRetrieve an audience by id (GET /audiences/:id).
get_automationRetrieve an automation, including its step graph (GET /automations/:id).
get_automation_runwrite actionRetrieve a single automation run, including its step-by-step trace (GET /automations/:id/runs/:runId).
get_campaignRetrieve a campaign by id (GET /campaigns/:id).
get_campaign_abA/B winner evaluation for an A/B-test campaign (GET /campaigns/:id/ab).
get_campaign_statsPer-campaign analytics — counts, engagement rates, and top clicked links (GET /campaigns/:id/stats).
get_contactRetrieve a contact (GET /contacts/:id). A contact id is exact; an EMAIL can exist in several domains' pools, so pass `domain` to pick the pool.
get_contact_propertyRetrieve a contact property by id (GET /contact-properties/:id).
get_contact_topicsGet a contact's topic subscriptions (GET /contacts/:id/topics).
get_domainRetrieve a domain, including its DNS records and verification status (GET /domains/:id).
get_domain_claimRetrieve the current claim (and its TXT verification record) for a placeholder domain (GET /domains/:id/claim).
get_email_attachmentwrite actionRetrieve metadata for one attachment of a sent email (GET /emails/:id/attachments/:attachmentId). Returns a download_url for the file.
get_poll_resultsGet the aggregated answer breakdown for one email's poll (GET /polls/:emailId).
get_received_emailwrite actionRetrieve a single received email by id (GET /emails/receiving/:id).
get_received_email_attachmentwrite actionRetrieve metadata for one attachment of a received email, including its download_url. (GET /emails/receiving/:id/attachments/:attachmentId serves the raw bytes; this tool returns the matching metadata entry from the attachment list instead.)
get_received_email_rawwrite actionDownload the original RFC822/MIME message of a received email (GET /emails/receiving/:id/raw). Returns the raw message as text.
get_segmentRetrieve a segment by id (GET /segments/:id).
get_templateRetrieve a template by id (GET /templates/:id).
get_topicRetrieve a topic by id (GET /topics/:id).
get_webhookRetrieve a webhook by id (GET /webhooks/:id).
import_contacts_batchBulk-import contacts from a JSON array (POST /audiences/:id/contacts/batch). Upserts by email; max 10,000 per call. Each contact: { email, first_name?, last_name?, unsubscribed?, properties? }.
import_contacts_csvBulk-import contacts from CSV text (POST /audiences/:id/contacts/import). Header row optional; the email column is required. Non-builtin columns auto-register as custom properties unless create_properties is false. Max 5 MB / 10,000 rows.
import_sheet_contactsImport contacts from a link-shared Google Sheet (POST /audiences/:id/contacts/import-sheet). Sheet headers become contact properties usable as {{merge_tags}}; rows land in a fresh segment.
list_audiencesList audiences (GET /audiences).
list_automation_runsList an automation's runs (GET /automations/:id/runs). Filter with status (comma-separated: running,completed,failed,cancelled,skipped).
list_automationsList automations (GET /automations).
list_campaignsList campaigns (GET /campaigns).
list_contact_propertiesList contact properties (GET /contact-properties).
list_contact_segmentsList the segments a contact belongs to (GET /contacts/:id/segments).
list_contactsList a sending domain's contacts (GET /contacts?domain=..., domain-first). Optional segment_id restricts to that segment's members.
list_domainsList sender domains (GET /domains).
list_email_attachmentswrite actionList a sent email's attachments (GET /emails/:id/attachments).
list_emailsList sent emails with cursor pagination (GET /emails).
list_pollsList emails that have in-email poll responses, with per-email counts (GET /polls).
list_received_email_attachmentswrite actionList a received email's attachments as metadata with download URLs (GET /emails/receiving/:id/attachments).
list_received_emailsList inbound (received) emails with cursor pagination (GET /emails/receiving).
list_segment_contactsPreview the contacts a segment currently resolves to (GET /segments/:id/contacts).
list_segmentsList a sending domain's segments (GET /segments?domain=...). Every domain includes an auto-created "General" (all contacts) segment.
list_templatesList templates (GET /templates).
list_topicsList a sending domain's subscription topics (GET /topics?domain=...).
list_webhooksList webhooks (GET /webhooks).
publish_templatewrite actionPublish a template, making its latest draft live (POST /templates/:id/publish).
remove_contact_from_segmentwrite actionRemove a contact from a segment (DELETE /contacts/:id/segments/:segmentId).
reply_received_emailwrite actionReply to a received email's sender, threaded into the same conversation (POST /emails/receiving/:id/reply). `from` must be on a verified domain.
retrieve_emailwrite actionRetrieve a sent email and its events by id (GET /emails/:id).
rotate_webhook_secretRotate a webhook signing secret (POST /webhooks/:id/rotate). The new secret is returned ONCE; the old secret stops verifying immediately.
send_batch_emailswrite actionSend up to 100 emails in one request (POST /emails/batch). Pass an array of email objects, each with from/to/subject and html and/or text. Per-email "from" defaults to the configured sender if omitted.
send_campaignwrite actionSend a campaign now, or schedule it with scheduled_at (POST /campaigns/:id/send).
send_emailwrite actionSend a single email through SendHustle (POST /emails). Supports HTML and/or plain text, CC/BCC, reply-to, scheduling, attachments, tags, and custom headers. The "from" address must be on a verified domain; if omitted, the server default sender is used.
stop_automationStop an automation — prevents new runs; in-progress runs finish (POST /automations/:id/stop).
test_webhookwrite actionSend a synchronous test delivery and return the endpoint's live result (POST /webhooks/:id/test).
update_audiencewrite actionRename an audience (PATCH /audiences/:id).
update_automationwrite actionUpdate an automation's name, status, domain, or connection graph (PATCH /automations/:id). Enabling requires at least one step; editing connections or the domain requires the automation to be disabled.
update_automation_stepwrite actionUpdate a step in place (PATCH /automations/:id/steps/:stepId). The graph key stays stable, so connections keep pointing at it. Disable the automation first if it is enabled.
update_campaignwrite actionUpdate a draft campaign's content or targeting (PATCH /campaigns/:id).
update_contactwrite actionUpdate a contact by id or email (PATCH /contacts/:id). Pass `domain` when addressing by EMAIL (picks the pool).
update_contact_propertywrite actionUpdate a contact property's fallback value (PATCH /contact-properties/:id). key/type are immutable.
update_contact_topicswrite actionUpdate a contact's topic subscriptions (PATCH /contacts/:id/topics). Provide topics as an array of { id, subscription: 'opt_in' | 'opt_out' }.
update_domainwrite actionUpdate a domain's tracking/TLS/capabilities settings (PATCH /domains/:id).
update_emailwrite actionReschedule a scheduled email by setting a new send time (PATCH /emails/:id).
update_segmentwrite actionUpdate a segment's name or filter (PATCH /segments/:id).
update_templatewrite actionUpdate a template (PATCH /templates/:id).
update_topicwrite actionUpdate a topic (PATCH /topics/:id).
update_webhookwrite actionUpdate a webhook's endpoint, events, or status (PATCH /webhooks/:id).
verify_domainTrigger verification of a domain after its DNS records are in place (POST /domains/:id/verify).
verify_domain_claimTrigger DNS verification for a pending domain claim (POST /domains/:id/claim/verify).
Public scan report
scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it
- Code scan11 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancerepository not readable: repo not found3/15
- Maintainer identityno repository or website to verify2/10
Install directly
Runs npx -y sendhustle-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add sendhustle-mcp -- npx -y sendhustle-mcp
Sendhustle: common questions
- Is Sendhustle MCP server safe?
- With care: it is graded C, so read the findings first (55/100). Read the Sendhustle safety report
- How do I install Sendhustle?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Sendhustle need an API key?
- Yes. The registry entry asks for
SENDHUSTLE_API_KEY. - Is Sendhustle maintained?
- The latest release is v1.0.2.
- What can I use instead of Sendhustle?
- Servers from other publishers that do the same job: MCP server, Email MCP server and Mailchimp MCP server. Compare all Sendhustle alternatives.
Alternatives to Sendhustle
Same job from other publishers: the closest match first, then the best rated.
- MCPEmail infrastructure for AI agents: send, read replies as threads, campaigns, per-key limits.not reviewedGrowingB
EmailQuery SES send history, delivery events, domains and suppressions, and send from your AWS account.not reviewedGrowingA- MailchimpMailchimp via MCP: draft, test, and send campaigns; manage audiences and subscribers; pull reports.not reviewedGrowingA
- VaemailEmail infrastructure for AI agents: send, authenticate domains, track delivery, diagnose issues.not reviewedGrowingB
- RuSenderManage email campaigns, contacts and deliverability analytics in RuSender from an AI assistant.not reviewedGrowingA