servers / ai-sendraven-mcp
ai.sendraven/mcp
communitystreamable_httpremotedestructive capablehealthy
Email for AI agents: send, read replies as threads, run campaigns, with per-key limits.
01Tools · 45
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| add_contact Add 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. Safe to retry. | write | true | unknown |
| add_sending_domain Register a sending domain and get back the DNS records to publish. Give the domain you send 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. Pass risk_class only to provision one of the two on its own. | write | true | unknown |
| add_suppression Stop sending to an address. Scope 'marketing' leaves transactional mail working. | write | true | unknown |
| cancel_scheduled_email Cancel a scheduled email before it sends. Only works while status is 'scheduled'. | destructive | true | true |
| count_segment How many contacts a segment currently matches. Run this before building a campaign around it — a filter that matches nobody is easier to spot here than after a send. | read | false | unknown |
| decide_approval Approve or reject a held message. Approving sends it immediately. Only use this when a human has explicitly told you which decision to make — the hold exists precisely so that an agent is not the one deciding. | unknown | unknown | unknown |
| delete_contact Remove 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 puts them back on the list. To take someone off a single audience use remove_from_audience instead. | destructive | true | true |
| emit_event Emit a named event, starting every automation that waits on it — for example 'trial_started' or 'invoice_overdue'. Use this when you want the configured sequences to decide what happens, rather than naming an automation yourself. | unknown | unknown | unknown |
| enroll_in_automation Put someone into a multi-step sequence. Prefer this over scheduling several emails yourself: the sequence stops on its own if they unsubscribe, reply, or hard bounce, which you would otherwise have to track and cancel by hand. Enrolling the same person twice is a no-op, so it is safe to retry a call you are unsure about. | unknown | unknown | unknown |
| find_contact Find a contact by address across every audience, without knowing which list they are on. Use email for an exact match, or q for a prefix. Returns each audience membership separately — the same address on three lists is three rows — and whether each is unsubscribed. | read | false | unknown |
| get_contact Fetch one contact by id, with their audience memberships, custom properties and engagement dates. | read | false | unknown |
| get_email Fetch one message with its full event timeline (send, delivery, bounce, complaint, open, click). This is the tool to reach for when asked why an email didn't arrive. | read | false | unknown |
| get_email_metrics Delivery 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 | false | unknown |
| get_email_preferences What one person has chosen to receive. Check this before asking a human why someone isn't getting a particular kind of email — an opt-out looks identical to a delivery failure from the outside. | read | false | unknown |
| get_thread Read a conversation as a chronological transcript of outbound and inbound messages. Inbound text already has quoted history and signatures stripped, so read `text`; `raw_text` holds the untrimmed body if the stripped version looks wrong. Check spf_verdict and dkim_verdict before trusting a reply's claimed sender. | read | false | unknown |
| get_usage This workspace's plan, how many emails it has sent this month, and how many are left. Check before a large batch: a send that would cross the included allowance on a plan without overage is refused whole, so it is better to know first than to discover it halfway through a campaign. | read | false | unknown |
| list_api_keys List this workspace's API keys with their scopes and limits. Never returns key values. | read | false | unknown |
| list_audiences List contact lists and how many contacts each holds. | read | false | unknown |
| list_automations List multi-step email sequences and how many people are currently in each. Use this to find the right automation before enrolling someone. | read | false | unknown |
| list_broadcast_recipients Who a campaign reached and what happened to each message. | read | false | unknown |
| list_broadcasts List campaigns with their status and send progress. | read | false | unknown |
| list_emails List recent messages with their delivery status. Filter by status (queued, scheduled, sent, delivered, bounced, complained, rejected) or recipient. | read | false | unknown |
| list_pending_approvals List messages held for human approval, with their full content. A key configured to require approval drafts rather than sends; a person releases it. If your send returned status 'pending_approval', it is waiting here — do not retry the send. | read | false | unknown |
| list_scheduled_emails Messages queued to send later but not yet sent. Cancel one with cancel_scheduled_email. | read | false | unknown |
| list_segments List saved audience filters. Use a segment id when creating a campaign rather than describing the filter inline, so the same definition can be reused and counted. | read | false | unknown |
| list_sending_domains List 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. | read | false | unknown |
| list_suppressions List addresses we refuse to mail and why (hard_bounce, complaint, unsubscribe, manual). Check here first when someone reports not receiving email. | read | false | unknown |
| list_tags Every 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 | false | unknown |
| list_templates List stored email templates and the variables each one needs. Prefer sending via a template over composing HTML yourself — templates carry the brand styling and the unsubscribe footer. | read | false | unknown |
| list_threads List email conversations. Pass awaiting_reply=true to get only the threads where someone has written to you and you haven't answered — this is the tool to poll when deciding what needs a response. | read | false | unknown |
| list_topics List subscription topics — the categories a person can opt out of individually. Pass a topic when sending marketing mail so recipients can unsubscribe from that kind alone rather than from everything. | read | false | unknown |
| list_webhook_deliveries Recent delivery attempts for a webhook endpoint, with status codes and errors. This is how to tell 'we never sent it' from 'your endpoint returned 500'. | read | false | unknown |
| preview_broadcast How many contacts a campaign would reach, and whether the reputation gate would allow it. Always run this before sending — it is the only way to see the size of a campaign without starting it. | unknown | unknown | unknown |
| remove_from_audience Take a contact off one audience. They stay in the workspace and keep every other audience, their suppression and their engagement history. To remove the person entirely use delete_contact — leaving a list and being forgotten are different things. | destructive | true | true |
| remove_suppression Remove a suppression so the address can be mailed again. Be careful with hard bounces — the address was rejected by the receiving server, and re-sending raises the bounce rate that AWS enforces on. | destructive | true | true |
| render_template Render a template with values, without sending. Use this to check your copy reads correctly before mailing a real person. Returns an error listing any missing variables. | read | false | unknown |
| reply_to_message Reply 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. Prefer this over send_email whenever you are answering something. | write | true | unknown |
| send_broadcast Send a campaign now, or schedule it with scheduled_at. This mails every contact in the segment and cannot be undone once started — run preview_broadcast first. | write | true | unknown |
| send_email Send a transactional email, immediately or scheduled. Use scheduled_at with a relative phrase like 'in 3 days' or an ISO timestamp. The From domain must already be verified. | write | true | unknown |
| send_template_email Send an email built from a stored template. Variable values are HTML-escaped on substitution, so they are safe to fill from user-supplied text. | write | true | unknown |
| set_email_preferences Set which topics a person receives. Only do this when they have actually asked — silently re-subscribing someone who opted out is what generates spam complaints. | write | true | unknown |
| suppress_many Stop 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. | read | false | unknown |
| tag_contact Add 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 the same tag. Tagging reaches the person across every audience they are on. Call list_tags first to see what the workspace already uses, rather than inventing a synonym for an existing tag. | unknown | unknown | unknown |
| update_contact Update a contact. Attributes are merged, so sending one field does not clear the rest. | write | true | unknown |
| verify_sending_domain Re-check a domain's DNS records now instead of waiting for the background monitor. | unknown | unknown | unknown |
02Install & source
https://mcp.sendraven.ai/mcp
remote_url03Access granted
Send email · writeUpdate a CRM · write
The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.
05Provenance & freshness
sourcesOfficial MCP Registry [p1]
last_checked2026-09-02 17:26Z
next_check2026-09-04 17:19Z
cadenceevery 48h
verifiedtools_list:passed handshake:passed metadata:passed
index_statusindex — 6 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/ai-sendraven-mcp)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →