Send and manage transactional and marketing emails, campaigns, and automation sequences for your business.
Email infrastructure for AI agents. Send transactional emails immediately or scheduled, manage marketing campaigns with A/B testing, set up multi-step automation sequences, track delivery and replies as threaded conversations, and manage subscriber preferences and suppressions.
Try asking Muse: "Send a welcome email to a new customer and enroll them in a three-step onboarding sequence."
Source: Found in the official MCP Registry (ai.sendraven/mcp) · First listed September 24, 2026
Each bar is one check, every 15 minutes. Green means it answered. Last checked 5 h ago.
What Muse can see: It does not ask you to sign in, so it cannot see your accounts. It only sees what Muse sends it from your request.
Before it acts: Read what Muse plans to do before you approve it, and remove the app from Muse when you stop using it.
musedirectory.ai is not part of Meta. More about how Muse handles your information
Not in Muse's Connectors list yet, but Muse can still use it. Copy the request below and paste it into Muse. Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.
https://mcp.sendraven.ai/mcpNot in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
SendRaven is a remote MCP server, so any assistant that can add a custom connector by link can use it. Same link, same tools.
In ChatGPT, open Settings, then Connectors (called Apps & Connectors on some accounts).
Under Advanced settings, switch on Developer mode. That is what lets you add a connector by link.
Choose Create, give it a name, paste the link as the MCP server URL, and save. If it needs a sign-in, ChatGPT asks for it here.
Start a chat, open the tools menu, pick the connector, and ask. ChatGPT asks before it runs a tool the first time.
Custom connectors need a paid ChatGPT plan, and on Team, Enterprise and Edu accounts only an admin can add them. Our "Working" label means the server answered us; it cannot tell whether your plan lets you add it. All connectors that work in ChatGPT
In Claude, open Settings, then Connectors.
Choose Add custom connector, give it a name, and paste the link.
If it needs a sign-in, Claude sends you to it. Then turn the connector on in a chat from the tools menu and ask.
Custom connectors are available on paid Claude plans; on Team and Enterprise accounts an admin may need to add them. Our "Working" label means the server answered us; it cannot tell whether your plan lets you add it. All connectors that work in Claude
https://mcp.sendraven.ai/mcpResponse time at the last check: 316ms. Worked in 97.7% of checks over 30 days.
Screened, no issues found
Screening looks for known threats and hidden instructions at the time of the check, and runs again weekly and whenever the tool list changes. It cannot see the server's code, so only connect what you need and review what Muse asks to do. How screening works.
send_emailSend a transactional email, immediately or scheduled. scheduled_at takes a relative phrase like 'in 3 days' or an ISO timestamp. The From domain must already be verified. Every accepted send answers with the same fields: id, status, thread_id, scheduled_at, skipped, reason and aplist_emailsList messages newest first with their delivery status, including held, scheduled, skipped and failed ones and the mail campaigns and automations sent. Filter by status, recipient or tag. Paged: at most 100 per call; while has_more is true, next_cursor passed back as cursor with tget_emailFetch one message with its full event timeline (send, delivery, bounce, complaint, open, click). The timeline shows why an email didn't arrive.cancel_scheduled_emailCancel a scheduled email before it sends. Only works while status is 'scheduled': a message that has already started sending, or is in any other state, answers 409 invalid_state naming its status; a retry answers the same, and get_email shows where it stands. An unknown id answerupdate_email_tagsAdd or remove tags on an email already sent, scheduled or held, to refile it for the tag filters of list_emails and list_threads. Removals apply first, then additions, so one call swaps a tag: remove_tags [{name:'recovery_case'}] (no value: every tag with that name) with add_tagslist_sending_domainsList sending domains with their verification status and the DNS records each one needs. Each record shows what is currently published, so this diagnoses a stuck verification. mail_from says whether SES has adopted the bounce. subdomain as the Return-Path: pending while SES polls add_sending_domainRegister a sending domain and get back the DNS records to publish. It takes the domain mail is sent from — mail.<domain> and news.<domain> are provisioned beneath it and the right one is chosen per message, so a marketing complaint spike can never affect password reset delivery. verify_sending_domainRe-check a domain's DNS records now instead of waiting for the background monitor. Also restarts bounce-path (mail_from) verification when SES gave up before the MX record existed.set_utm_tagsTurn UTM tags on or off for a sending domain, and set what they say. When on, every link in that domain's marketing HTML gets utm_source (default 'newsletter'), utm_medium (default 'email') and utm_campaign (the campaign's name or the automation's slug). A link that already has alist_suppressionsList addresses we refuse to mail and why (hard_bounce, complaint, unsubscribe, manual, list_hygiene), newest first, each with its scope. When someone reports not receiving email, this shows whether the address is suppressed. email returns one address's suppressions directly; scanadd_suppressionStop sending to an address. Scope 'marketing' leaves transactional mail working; the default is 'all'. Reason 'unsubscribe' is a real opt-out: it also cancels the person's queued scheduled sends and ends their automation enrolments, which is what a person who asked to stop expectremove_suppressionRemove a suppression so the address can be mailed again. A hard bounce means the address was rejected by the receiving server, and re-sending raises the bounce rate that AWS enforces on. The scope must match the stored one: removed: false means nothing was suppressed in that scopcreate_broadcastCreate a campaign as a draft. Nothing is sent: preview_broadcast reports its reach and send_broadcast sends it. identity_id must be a marketing sending domain (see list_sending_domains; risk_class 'marketing'). topic_key must name an existing topic (list_topics); an unknown one iget_broadcastOne campaign, with a 'progress' object while it is sending, paused or testing: how many addresses are still pending, sent, failed, or skipped because the person opted out after the campaign started. This is what tells a paused campaign that is still making progress from one that get_broadcast_metricsHow a campaign did: sent, delivered, bounced, complained, unique opens and clicks, and open_rate and click_rate over delivered (null until something is delivered). Opens and clicks count only people: a security gateway that followed every link, or a mailbox that loaded every imaglist_broadcastsList campaigns, newest first, with their status. Paged: at most 100 per call; while has_more is true, next_cursor passed back as cursor returns the next page. Each row is the campaign object get_broadcast returns, live progress and A/B results included, without its html, which onpreview_broadcastHow many contacts a campaign would reach, and whether the reputation gate would allow it. It is the only way to see the size of a campaign without starting it. For an A/B test it also reports the sample size and per-variant count against the 100-per-variant floor; a send below thsend_broadcastSend a draft or scheduled campaign now, or schedule it with scheduled_at. This mails every contact in the segment and cannot be undone once started; preview_broadcast shows the count beforehand. Marketing mail must carry a postal address: a workspace without one is refused with 4pick_broadcast_winnerDecide an A/B test now instead of waiting for decide_at. 'variant' names the winning key; without it the metric decides on the figures so far. The rest of the audience is then sent to the winner and cannot be redirected. Only a campaign in status 'testing' can be decided; anythinresume_broadcastContinue a paused campaign now. It mails only the addresses still pending — the audience was frozen when the campaign started and everyone already reached is marked — so calling this twice cannot double-send. Only works on a paused campaign; anything else answers 409 invalid_statlist_threadsList email conversations. awaiting_reply=true returns only the threads where someone has written in and no answer has been sent, which is what needs a response. A reply held for approval or scheduled does not count as sent: such a thread stays in that list with pending_reply trueget_threadRead a conversation as a chronological transcript of outbound and inbound messages. Inbound `text` already has quoted history and signatures stripped; `raw_text` holds the untrimmed body, for when the stripped version looks wrong. sender_authenticated says whether the sender is wreply_to_messageReply to a message, keeping it on the same conversation. Sets the threading headers so the recipient's mail client shows it as part of the existing exchange rather than a new one, which send_email does not do. It is a send, so it answers exactly as send_email does and meets the smark_thread_handledClear a conversation's awaiting_reply flag without sending anything, for when the last inbound message needs no answer — a "thanks, all sorted" — so it stops appearing in list_threads with awaiting_reply=true. A reply sent only to clear the flag mails a person for bookkeeping; thlist_templatesList stored email templates and the variables each one needs. Unlike HTML composed at send time, templates carry the workspace's reviewed subject, copy and styling. They do not carry the unsubscribe footer: that is added at send time to marketing mail, whether or not it came fromrender_templateRender a template with values, without sending, showing how the copy reads before it mails a real person. A missing variable answers 422 missing_variables with the list in `missing`; an unknown slug answers 404. Returns subject, html and text; text is null when the template has nsend_template_emailSend an email built from a stored template. Variable values are HTML-escaped on substitution, so they are safe to fill from user-supplied text. Nothing is sent when a value is missing: 422 missing_variables lists the names in `missing`, and a call with those filled in goes througlist_mediaThe workspace's hosted images, newest first, each with id, filename, content_type, size, width, height and the url to use in an <img src>. Look here before uploading a logo the workspace probably already has. At most 100 per call; while has_more is true, next_cursor passed back aupload_mediaHost an image for use in email HTML: a logo or photo in a template, a campaign or an automation step. Returns a media object whose url goes in an <img src>; it is served from the workspace's own tracking domain (https://link.<sending domain>/media/...), and the url is public to adelete_mediaDelete a hosted image by id (from list_media). Its url stops working within minutes everywhere it is used: in email already delivered, and in any template, campaign or automation step that still references it, where it shows as a broken image. Nothing checks for references, and ilist_pending_approvalsList messages held for human approval, with their full content. A key configured to require approval drafts rather than sends; a person releases it. A send that returned status 'pending_approval' is waiting here, and retrying the send does not release it. Oldest first, each with decide_approvalApprove or reject a held message. Approving releases it: it sends now, or at its scheduled_at when the draft was scheduled for later. If every recipient unsubscribed or was suppressed while it waited, nothing is sent and the answer says skipped: true with a reason (both always prlist_automationsList multi-step email sequences and how many people are currently in each, with the id each one is enrolled by. Newest first, at most 100 per call; while has_more is true, next_cursor passed back as cursor returns the next page. A 'paused' automation holds its people on their curget_automationFetch one automation: its status, trigger, steps (each with the id and condition update_automation needs passed back), exit rules and how many people are in each state. The same object list_automations returns, for a caller that already holds the id. People themselves are listed get_automation_metricsHow each step of an automation is doing: per current step, its step_id, position, sent, delivered, opened and clicked. Opens and clicks are unique people, counted only after link scanners are ruled out, so they are lower than raw hit counts and reflect readers. Use it to see wherlist_automation_enrollmentsThe people in one automation, newest enrolment first: each row has the email, status, current_step, next_due_at and, for a cancelled one, cancel_reason. It answers 'is this person still on the sequence?', 'who is waiting on step 2?' and 'why did this sequence stop for them?', whicreate_automationDefine a multi-step sequence as a draft; nothing is sent until it is activated, from the dashboard or with set_automation_status. Unlike several separately scheduled emails, it ends on its own when the person unsubscribes, replies, bounces, opts out of its topic, or their tags saupdate_automationChange a sequence's steps, the rules that take someone out of it (topic_key, exit_tags, required_tags, exit_on_reply), its reply_to, its reenrollment, or its default_variables (replaces the whole set; {} clears it). The trigger is fixed once created. steps replaces every step andset_automation_statusActivate, pause or return an automation to draft. A new automation is a draft and sends nothing until it is set to 'active'. Pausing ('paused' or 'draft') holds everyone on their current step: nobody is sent a step and nobody new is enrolled, but nobody's sequence ends, and settidelete_automationDelete an automation for good and cancel every active enrolment in it, so nobody is sent another step. Answers enrollments_canceled. It cannot be undone: to stop it for a while and continue everyone later, use set_automation_status with paused instead. Mail already sent and its hhttps://mcp.sendraven.ai/mcpNot in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use SendRaven to help me. It is a free service with an MCP server at https://mcp.sendraven.ai/mcp. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.
At the last check (November 13, 2026, 09:30 UTC) the endpoint was working, answering in 316ms. Over the last 7 days it answered 100% of health checks. It is checked every 15 minutes.
It was screened on September 24, 2026 with the result "screened, no issues found". Screening checks the domain against threat feeds and reads the tools for hidden instructions and requests for passwords or card numbers. It cannot see the server's code, so grant only the access you need.
It exposes 40 tools, including send_email, list_emails, get_email, cancel_scheduled_email. For example, you could ask Muse: "Send a welcome email to a new customer and enroll them in a three-step onboarding sequence."
This listing was added from public sources (Found in the official MCP Registry (ai.sendraven/mcp)). If you build SendRaven, claim it to correct the details and get your badge.
Paste this on your site or README. It always shows the latest check.
<a href="https://musedirectory.ai/connector/sendraven"><img src="https://musedirectory.ai/badge/sendraven.svg" alt="SendRaven on musedirectory.ai" width="236" height="40"></a>