sendraven.ai MCP server by sendraven.ai

MCP server · Email delivery APIs · indexed, not reviewed

HostedLocalvendor's own

Not reviewed

No score, grade or rank. This listing is facts from the official MCP registry and our own checks, and it stays out of the rankings until the panel reviews it.

How the index works

Email infrastructure for AI agents: send, read replies as threads, campaigns, per-key limits.

What the official MCP registry says

Facts

MCP registry
ai.sendraven/mcp · 0.4.20
Endpoint
https://mcp.sendraven.ai/mcp
Packages
npm @sendraven/mcp stdio
npm / week
600
GitHub stars
1
Registry entry
updated 27 Sep 2026

From the official MCP registry, the package registries and our own checks. JSON · Markdown

Why it's listed

  • It's published in the registry under sendraven.ai, a namespace the registry only gives to whoever proves they control that domain.

Being indexed says nothing about quality, and nobody can pay for it. Is this yours? Ask for a review.

Tools it lists 55 · about 19,888 tokens of context · checked 2 hours ago

ToolWhat it doesHint
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…writes
list_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 or recipient. Paged: at most 100 per call; while…read-only
get_emailFetch one message with its full event timeline (send, delivery, bounce, complaint, open, click). The timeline shows why an email didn't arrive.read-only
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…writes
list_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…read-only
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…writes
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.writes
list_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…read-only
add_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…writes
remove_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…writes
create_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').…writes
get_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…read-only
list_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…read-only
preview_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…read-only
send_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…writes
pick_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…writes
resume_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…writes
list_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…read-only
get_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…read-only
reply_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…writes
mark_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…writes
list_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…read-only
render_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…read-only
send_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…writes
list_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…read-only
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…writes
list_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…read-only
get_automationFetch one automation: its status, trigger, steps, 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 by…read-only
list_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…read-only
create_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…writes
update_automationChange the rules that take someone out of a sequence (topic_key, exit_tags, required_tags, exit_on_reply), its reply_to, its reenrollment, or its default_variables (replaces the whole set; {} clears it). Steps and the…writes
set_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…writes
enroll_in_automationPut someone into a multi-step sequence. Unlike several separately scheduled emails, the sequence stops on its own if they unsubscribe (from everything or from the automation's topic), reply, hard bounce, gain one of its…writes
emit_eventEmit a named event, starting every automation that waits on it — for example 'trial_started' or 'invoice_overdue'. The configured sequences decide what happens, rather than the caller naming an automation. Returns…writes
list_topicsList subscription topics — the categories a person can opt out of individually. Marketing mail sent under a topic lets recipients unsubscribe from that kind alone rather than from everything.read-only
get_email_preferencesWhat one person has chosen to receive. It shows whether someone who isn't getting a particular kind of email opted out of it — an opt-out looks identical to a delivery failure from the outside.read-only
set_email_preferencesSet which topics a person receives, recording what they asked for — silently re-subscribing someone who opted out is what generates spam complaints. Every key must be an existing topic from list_topics: one unknown key…writes
list_audiencesList contact lists, newest first, with each one's id and contact_count. Paged: at most 100 per call; while has_more is true, more lists are on later pages, returned when next_cursor is passed back as cursor.read-only
add_contactAdd someone to an audience. A contact exists once per workspace and can be on any number of audiences, so adding an address that already exists joins them to this list rather than creating a second copy. status records…writes
import_contactsImport up to 5,000 contacts into an audience in one call, with names, tags, custom properties and subscription status. This is the migration tool: the previous provider's unsubscribed, bounced and complained lists,…writes
get_contactFetch one contact by id, with their audience memberships, custom properties and engagement dates.read-only
update_contactUpdate a contact. Attributes are merged, so sending one field does not clear the rest. unsubscribed: true is a real opt-out: it suppresses the address for marketing, cancels their pending sends and ends their automation…writes
list_segmentsList saved audience filters. A campaign created with a segment id, rather than a filter described inline, shares one definition that can be reused and counted.read-only
list_tagsEvery tag in use in the workspace, with how many contacts carry each. Tags are free-form, so this is the only way to know what exists before applying one.read-only
count_segmentHow many contacts a segment currently matches. A filter that matches nobody shows up here as 0, before any campaign is built around it or sent.read-only
get_email_metricsDelivery and engagement over a window. Open and click rates are over delivered, not sent — a low open rate with a high bounce rate is a deliverability problem, not an engagement one.read-only
list_scheduled_emailsMessages queued to send later but not yet sent, newest first; cancel_scheduled_email cancels one. At most 100 per call; while has_more is true, next_cursor passed back as cursor returns the next page.read-only
suppress_manyStop sending to many addresses at once — the path for importing another provider's unsubscribe list before a first campaign. Without it, everyone who already opted out there gets mailed again here. The defaults differ…writes
list_webhook_deliveriesRecent delivery attempts for a webhook endpoint: each with event, status, attempts, last_status_code, last_error and delivered_at (null until it succeeds). This is what tells 'we never sent it' from 'your endpoint…read-only
list_broadcast_recipientsWho a campaign reached and what happened to each message, with the A/B variant when there is one. At most 200 per call; while has_more is true, next_cursor (a message id) passed back as cursor returns the next page.read-only
get_usageThis workspace's plan, what it has sent this billing period, what the period costs so far, and — the fields worth branching on — sending_locked and lock_reason, which name the exact 402 a send would be refused with…read-only
find_contactFind a contact by address across every audience, without knowing which list they are on, or list the workspace's contacts by tag or subscription. email matches exactly, and q matches an address prefix. A person exists…read-only
remove_from_audienceTake a contact off one audience. They stay in the workspace and keep every other audience, their suppression and their engagement history. delete_contact removes the person entirely — leaving a list and being forgotten…writes
delete_contactRemove a person from the workspace entirely, along with every audience membership. Their suppression and topic preferences are kept on purpose — an opt-out has to outlive the contact record, or the next import silently…writes
tag_contactAdd or remove tags on a contact. Tags are flat labels — vip, beta, churned — as opposed to custom properties, which are declared fields with a value. They are lower-cased and spaces become hyphens, so VIP and vip are…writes

What https://mcp.sendraven.ai/mcp answered to tools/list, asked without credentials over MCP 2025-11-25. The token figure is the size of the list as sent, divided by four; a model sees about that much before it calls anything. Full definitions, input schemas included, are in the listing's JSON under mcpTools.

How its tools read to an agent 0 errors · 27 warnings · 1 note

  • warnTC07send_broadcastthe description is about 525 tokens
  • warnTC11add_contact3 parameters without a description: email, first_name, last_name
  • warnTC11add_suppression1 parameter without a description: email
  • warnTC11cancel_scheduled_emailits one parameter, id, has no description
  • warnTC11count_segmentits one parameter, id, has no description
  • warnTC11create_automation4 parameters without a description: name, steps, steps[].subject, trigger
  • warnTC11create_broadcast8 parameters without a description: ab_test, html, name, segment, segment.clicked_within_days, segment.opened_within_days and 2 more
  • warnTC11decide_approval2 parameters without a description: decision, reason
  • warnTC11emit_event2 parameters without a description: email, variables
  • warnTC11enroll_in_automation1 parameter without a description: email
  • warnTC11get_contactits one parameter, id, has no description
  • warnTC11get_email_preferencesits one parameter, email, has no description
  • warnTC11import_contactsnone of its 4 parameters has a description
  • warnTC11list_webhook_deliveries1 parameter without a description: endpoint_id
  • warnTC11remove_suppression1 parameter without a description: email
  • warnTC11render_templatenone of its 2 parameters has a description
  • warnTC11reply_to_message3 parameters without a description: html, subject, text
  • warnTC11send_email2 parameters without a description: subject, text
  • warnTC11send_template_email3 parameters without a description: from, scheduled_at, variables
  • warnTC11set_automation_status1 parameter without a description: status
  • warnTC11set_email_preferences1 parameter without a description: email
  • warnTC11suppress_many1 parameter without a description: emails
  • warnTC11tag_contact2 parameters without a description: add, remove
  • warnTC11update_contact3 parameters without a description: attributes, first_name, last_name

The first 24 of 28; every finding is in the listing's JSON under mcpTools.check.

The checks from /check and anchor check, run each day on the list above: about 19,888 tokens of definitions. Not part of the score yet. Check your own server.

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.