Mmcp.market

Sendhustle MCP server

by Achlesha·io.github.Achlesha/sendhustle-mcp·v1.0.2

Send and manage email via the SendHustle API — emails, domains, contacts, audiences, campaigns.

C55/100grade C
What users say
No reviews yet
Be the first
Safety scan
C55/100

full report

Adoption
New

33 downloads/wk

Reviews

Write one

Nobody 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 posts

Read from the package source without running it. The installed server may list more.

  • add_automation_step

    Append a step to an automation (POST /automations/:id/steps).

  • add_contact_to_segment

    Add a contact to a segment (POST /contacts/:id/segments/:segmentId).

  • apply_domain_dns_cloudflare

    Apply 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_godaddy

    Apply a domain's DNS records via the GoDaddy API, then auto-verify (POST /domains/:id/dns/godaddy).

  • apply_domain_dns_namecheap

    Apply 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 action

    Cancel a scheduled campaign, returning it to draft (POST /campaigns/:id/cancel).

  • cancel_emailwrite action

    Cancel a scheduled email before it sends (POST /emails/:id/cancel).

  • check_domain_mx

    MX 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_domain

    Claim a domain already verified elsewhere (POST /domains/claim). Returns a TXT record to add.

  • create_audiencewrite action

    Create an audience — a named list of contacts (POST /audiences).

  • create_automationwrite action

    Create 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 action

    Create a campaign targeting a sending domain's contact pool (POST /campaigns, domain-first). Send it later with send_campaign.

  • create_contactwrite action

    Create 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 action

    Create 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 action

    Create a sender domain (POST /domains). The response includes DNS records you must add at your DNS provider before verifying.

  • create_segmentwrite action

    Create 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 action

    Create a reusable email template (POST /templates). Supports subject/html/text with {{ variables }} and optional variable definitions.

  • create_topicwrite action

    Create 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 action

    Create a webhook endpoint (POST /webhooks). The signing secret is returned ONCE on create — store it.

  • delete_audiencewrite action

    Delete an audience and its contacts (DELETE /audiences/:id).

  • delete_automationwrite action

    Delete an automation (DELETE /automations/:id).

  • delete_automation_stepwrite action

    Delete a step from an automation (DELETE /automations/:id/steps/:stepId). Stop (disable) the automation first if it is enabled.

  • delete_campaignwrite action

    Delete a campaign (DELETE /campaigns/:id).

  • delete_contactwrite action

    Delete a contact by id or email (DELETE /contacts/:id). Pass `domain` when addressing by EMAIL (picks the pool).

  • delete_contact_propertywrite action

    Delete a contact property (DELETE /contact-properties/:id).

  • delete_domainwrite action

    Delete a domain (DELETE /domains/:id).

  • delete_received_emailwrite action

    Permanently delete a received email, including its stored raw message and attachments (DELETE /emails/receiving/:id). This cannot be undone.

  • delete_segmentwrite action

    Delete a segment (DELETE /segments/:id).

  • delete_templatewrite action

    Delete a template (DELETE /templates/:id).

  • delete_topicwrite action

    Delete a topic (DELETE /topics/:id).

  • delete_webhookwrite action

    Delete a webhook (DELETE /webhooks/:id).

  • detect_domain_dns

    Detect a domain's DNS provider and the one-click apply methods available (GET /domains/:id/dns/detect).

  • duplicate_template

    Duplicate a template (POST /templates/:id/duplicate).

  • forward_received_emailwrite action

    Forward a received email to other recipients (POST /emails/receiving/:id/forward). "from" must be a verified sending address; defaults to the configured sender.

  • get_audience

    Retrieve an audience by id (GET /audiences/:id).

  • get_automation

    Retrieve an automation, including its step graph (GET /automations/:id).

  • get_automation_runwrite action

    Retrieve a single automation run, including its step-by-step trace (GET /automations/:id/runs/:runId).

  • get_campaign

    Retrieve a campaign by id (GET /campaigns/:id).

  • get_campaign_ab

    A/B winner evaluation for an A/B-test campaign (GET /campaigns/:id/ab).

  • get_campaign_stats

    Per-campaign analytics — counts, engagement rates, and top clicked links (GET /campaigns/:id/stats).

  • get_contact

    Retrieve 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_property

    Retrieve a contact property by id (GET /contact-properties/:id).

  • get_contact_topics

    Get a contact's topic subscriptions (GET /contacts/:id/topics).

  • get_domain

    Retrieve a domain, including its DNS records and verification status (GET /domains/:id).

  • get_domain_claim

    Retrieve the current claim (and its TXT verification record) for a placeholder domain (GET /domains/:id/claim).

  • get_email_attachmentwrite action

    Retrieve metadata for one attachment of a sent email (GET /emails/:id/attachments/:attachmentId). Returns a download_url for the file.

  • get_poll_results

    Get the aggregated answer breakdown for one email's poll (GET /polls/:emailId).

  • get_received_emailwrite action

    Retrieve a single received email by id (GET /emails/receiving/:id).

  • get_received_email_attachmentwrite action

    Retrieve 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 action

    Download the original RFC822/MIME message of a received email (GET /emails/receiving/:id/raw). Returns the raw message as text.

  • get_segment

    Retrieve a segment by id (GET /segments/:id).

  • get_template

    Retrieve a template by id (GET /templates/:id).

  • get_topic

    Retrieve a topic by id (GET /topics/:id).

  • get_webhook

    Retrieve a webhook by id (GET /webhooks/:id).

  • import_contacts_batch

    Bulk-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_csv

    Bulk-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_contacts

    Import 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_audiences

    List audiences (GET /audiences).

  • list_automation_runs

    List an automation's runs (GET /automations/:id/runs). Filter with status (comma-separated: running,completed,failed,cancelled,skipped).

  • list_automations

    List automations (GET /automations).

  • list_campaigns

    List campaigns (GET /campaigns).

  • list_contact_properties

    List contact properties (GET /contact-properties).

  • list_contact_segments

    List the segments a contact belongs to (GET /contacts/:id/segments).

  • list_contacts

    List a sending domain's contacts (GET /contacts?domain=..., domain-first). Optional segment_id restricts to that segment's members.

  • list_domains

    List sender domains (GET /domains).

  • list_email_attachmentswrite action

    List a sent email's attachments (GET /emails/:id/attachments).

  • list_emails

    List sent emails with cursor pagination (GET /emails).

  • list_polls

    List emails that have in-email poll responses, with per-email counts (GET /polls).

  • list_received_email_attachmentswrite action

    List a received email's attachments as metadata with download URLs (GET /emails/receiving/:id/attachments).

  • list_received_emails

    List inbound (received) emails with cursor pagination (GET /emails/receiving).

  • list_segment_contacts

    Preview the contacts a segment currently resolves to (GET /segments/:id/contacts).

  • list_segments

    List a sending domain's segments (GET /segments?domain=...). Every domain includes an auto-created "General" (all contacts) segment.

  • list_templates

    List templates (GET /templates).

  • list_topics

    List a sending domain's subscription topics (GET /topics?domain=...).

  • list_webhooks

    List webhooks (GET /webhooks).

  • publish_templatewrite action

    Publish a template, making its latest draft live (POST /templates/:id/publish).

  • remove_contact_from_segmentwrite action

    Remove a contact from a segment (DELETE /contacts/:id/segments/:segmentId).

  • reply_received_emailwrite action

    Reply 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 action

    Retrieve a sent email and its events by id (GET /emails/:id).

  • rotate_webhook_secret

    Rotate a webhook signing secret (POST /webhooks/:id/rotate). The new secret is returned ONCE; the old secret stops verifying immediately.

  • send_batch_emailswrite action

    Send 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 action

    Send a campaign now, or schedule it with scheduled_at (POST /campaigns/:id/send).

  • send_emailwrite action

    Send 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_automation

    Stop an automation — prevents new runs; in-progress runs finish (POST /automations/:id/stop).

  • test_webhookwrite action

    Send a synchronous test delivery and return the endpoint's live result (POST /webhooks/:id/test).

  • update_audiencewrite action

    Rename an audience (PATCH /audiences/:id).

  • update_automationwrite action

    Update 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 action

    Update 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 action

    Update a draft campaign's content or targeting (PATCH /campaigns/:id).

  • update_contactwrite action

    Update a contact by id or email (PATCH /contacts/:id). Pass `domain` when addressing by EMAIL (picks the pool).

  • update_contact_propertywrite action

    Update a contact property's fallback value (PATCH /contact-properties/:id). key/type are immutable.

  • update_contact_topicswrite action

    Update a contact's topic subscriptions (PATCH /contacts/:id/topics). Provide topics as an array of { id, subscription: 'opt_in' | 'opt_out' }.

  • update_domainwrite action

    Update a domain's tracking/TLS/capabilities settings (PATCH /domains/:id).

  • update_emailwrite action

    Reschedule a scheduled email by setting a new send time (PATCH /emails/:id).

  • update_segmentwrite action

    Update a segment's name or filter (PATCH /segments/:id).

  • update_templatewrite action

    Update a template (PATCH /templates/:id).

  • update_topicwrite action

    Update a topic (PATCH /topics/:id).

  • update_webhookwrite action

    Update a webhook's endpoint, events, or status (PATCH /webhooks/:id).

  • verify_domain

    Trigger verification of a domain after its DNS records are in place (POST /domains/:id/verify).

  • verify_domain_claim

    Trigger 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

no findings
  • 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
Overall 55/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

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
Add to Cursor

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.

All Sendhustle alternatives →
  • MCP
    Email infrastructure for AI agents: send, read replies as threads, campaigns, per-key limits.
    B
  • Email
    Query SES send history, delivery events, domains and suppressions, and send from your AWS account.
    A
  • Mailchimp
    Mailchimp via MCP: draft, test, and send campaigns; manage audiences and subscribers; pull reports.
    A
  • Vaemail
    Email infrastructure for AI agents: send, authenticate domains, track delivery, diagnose issues.
    B
  • RuSender
    Manage email campaigns, contacts and deliverability analytics in RuSender from an AI assistant.
    A

More from Achlesha