Sendraven is a remote MCP server that gives an AI agent 45 tools, among them add_contact, add_sending_domain, add_suppression. It answers at https://mcp.sendraven.ai/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 11 of 11 times since 2 September 2026; the last check, on 19 October 2026, succeeded.
Email infrastructure for AI agents: send, read replies as threads, campaigns, per-key limits.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
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. Inputs: audience_id, email, first_name, last_name |
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 Inputs: domain, risk_class |
add_suppression | Stop sending to an address. Scope 'marketing' leaves transactional mail working. Inputs: email, scope, reason |
cancel_scheduled_email | Cancel a scheduled email before it sends. Only works while status is 'scheduled'. Inputs: id |
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. Inputs: id |
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. Inputs: id, decision, decided_by, reason |
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 Inputs: contact_id |
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. Inputs: name, email, variables |
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 Inputs: automation_id, email, variables |
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 whet Inputs: email, q, unsubscribed, limit, cursor |
get_contact | Fetch one contact by id, with their audience memberships, custom properties and engagement dates. Inputs: id |
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. Inputs: id |
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. Inputs: days |
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. Inputs: email |
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. Ch Inputs: id |
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 |
list_api_keys | List this workspace's API keys with their scopes and limits. Never returns key values. |
list_audiences | List contact lists and how many contacts each holds. |
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. |
list_broadcast_recipients | Who a campaign reached and what happened to each message. Inputs: id, limit |
list_broadcasts | List campaigns with their status and send progress. |
list_emails | List recent messages with their delivery status. Filter by status (queued, scheduled, sent, delivered, bounced, complained, rejected) or recipient. Inputs: status, to, limit |
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 |
list_scheduled_emails | Messages queued to send later but not yet sent. Cancel one with cancel_scheduled_email. Inputs: limit |
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. |
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. |
list_suppressions | List addresses we refuse to mail and why (hard_bounce, complaint, unsubscribe, manual). Check here first when someone reports not receiving email. Inputs: limit |
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. |
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. |
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. Inputs: awaiting_reply, limit |
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. |
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'. Inputs: endpoint_id, limit |
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. Inputs: id |
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 t Inputs: audience_id, contact_id |
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. Inputs: email, scope |
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. Inputs: slug, variables |
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 somet Inputs: reply_to_message_id, from, to, subject, text, html |
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. Inputs: id, scheduled_at |
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. Inputs: from, to, subject, html, text, scheduled_at |
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. Inputs: template, variables, from, to, subject, scheduled_at |
set_email_preferences, suppress_many, tag_contact, update_contact, verify_sending_domain
Every block below points at https://mcp.sendraven.ai/mcp. Pick your client and copy.
claude mcp add --transport http sendraven https://mcp.sendraven.ai/mcp
{
"mcpServers": {
"sendraven": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.sendraven.ai/mcp"]
}
}
}{
"mcpServers": {
"sendraven": {
"url": "https://mcp.sendraven.ai/mcp"
}
}
}{
"servers": {
"sendraven": {
"type": "http",
"url": "https://mcp.sendraven.ai/mcp"
}
}
}{
"context_servers": {
"sendraven": {
"url": "https://mcp.sendraven.ai/mcp"
}
}
}{
"mcpServers": {
"sendraven": {
"serverUrl": "https://mcp.sendraven.ai/mcp"
}
}
}{
"mcpServers": {
"sendraven": {
"url": "https://mcp.sendraven.ai/mcp"
}
}
}name: Sendraven
version: 0.0.1
schema: v1
mcpServers:
- name: Sendraven
type: streamable-http
url: https://mcp.sendraven.ai/mcp{
"mcpServers": {
"sendraven": {
"httpUrl": "https://mcp.sendraven.ai/mcp"
}
}
}{
"mcpServers": {
"sendraven": {
"type": "http",
"url": "https://mcp.sendraven.ai/mcp"
}
}
}{
"mcpServers": {
"sendraven": {
"url": "https://mcp.sendraven.ai/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fmcp.sendraven.ai%2Fmcp&type=streamable_http&id=sendraven&name=Sendraven
It answered our last check on 19 October 2026 in 306 ms. Over 11 checks since 2 September 2026 it answered 11. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by sendraven.ai and served from mcp.sendraven.ai, the vendor's own domain: https://mcp.sendraven.ai/mcp.
45, as returned by the server's own tools/list on 2 September 2026: add_contact, add_sending_domain, add_suppression, cancel_scheduled_email, count_segment, decide_approval, delete_contact, emit_event, and 37 more.
It answered our last check on 19 October 2026 in 306 ms. Over 11 checks since 2 September 2026 it answered 11.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://mcp.sendraven.ai/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: ai.sendraven. Endpoint host: mcp.sendraven.ai. ARD identifier: urn:air:ai.sendraven:mcp:mcp.
First indexed 2 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.