Skip to content
Agentmart
Submit a tool

Sendraven

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

Connector by sendraven.aiOfficial · Domain verified by the MCP Registry

IndexedMITLocal (stdio)Remote (HTTP)★ 1
Write a review

Install

Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/sendraven-ai-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Remote endpoint

  • https://mcp.sendraven.ai/mcp Remote (HTTP)

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

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

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
28 read · 14 write · 14 delete
Secrets
1 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Node.js package

Tools by what they do 56

From the running server's own tool list (tools/list) on Oct 25, 2026.

Read 28 · Look things up without changing anything.

  • count_segment
  • find_contact
  • get_automation
  • get_broadcast
  • get_contact
  • get_email
  • get_email_metrics
  • get_email_preferences
  • get_thread
  • get_usage
  • list_audiences
  • list_automation_enrollments
Show 16 more tools
  • list_automations
  • list_broadcast_recipients
  • list_broadcasts
  • list_emails
  • list_pending_approvals
  • list_scheduled_emails
  • list_segments
  • list_sending_domains
  • list_suppressions
  • list_tags
  • list_templates
  • list_threads
  • list_topics
  • list_webhook_deliveries
  • preview_broadcast
  • render_template

Write 14 · Create, change, send or run things.

  • add_contact
  • add_sending_domain
  • create_automation
  • create_broadcast
  • emit_event
  • enroll_in_automation
  • pick_broadcast_winner
  • reply_to_message
  • resume_broadcast
  • send_broadcast
  • send_email
  • send_template_email
Show 2 more tools
  • set_automation_status
  • verify_sending_domain

Delete 14 · Delete, drop, revoke or wipe things.

  • add_suppression
  • cancel_scheduled_email
  • decide_approval
  • delete_contact
  • import_contacts
  • mark_thread_handled
  • remove_from_audience
  • remove_suppression
  • set_email_preferences
  • suppress_many
  • tag_contact
  • update_automation
Show 2 more tools
  • update_contact
  • update_email_tags

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • SENDRAVEN_API_KEY

Network hosts it talks to 1

  • mcp.sendraven.ai · found in remote endpoint, install command

Files it touches

  • Any path the agent passes to its tools

Tools (56)

As the server listed them on Oct 25, 2026. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • add_contactAdd 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. status records that the person opted out elsewhere — it writes the suppression as well as the flag, and an add never resubscribes someone who opted out here. Someone new to the audience starts any automation triggered by joining it; re-adding an existing member starts nothing. A retry has the same result. import_contacts adds up to 5,000 people in one call.

  • add_sending_domainAdd sending domain

    Register 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. subdomains names the pair differently (tx. and promo.), still one domain. risk_class provisions one identity on the domain exactly as given instead; it cannot be combined with subdomains. Two records come back marked optional: an inbound MX so replies land in threads, and a link. CNAME that turns on click tracking on t…

  • add_suppressionSuppress addresscan change or delete data

    Stop 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 expects and 'manual' does not do. A hard bounce or complaint already on file is never replaced; the response is the stored suppression (id, email, reason, scope, detail, created_at), so its reason says which one stands.

  • cancel_scheduled_emailCancel scheduled emailcan change or delete data

    Cancel 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 answers 404 not_found.

  • count_segmentCount segmentread-only

    How 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.

  • create_automationCreate automation

    Define 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 say so. identity_id must be a marketing sending domain (see list_sending_domains; risk_class 'marketing') and from must sit on it; both are checked here rather than at the first send. reply_to sends replies somewhere other than from, and it disables the reply exit: SendRaven never sees mail sent to another domain. Every …

  • create_broadcastCreate campaign draft

    Create 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 is refused with 422 unknown_topic, since it would count everyone as opted out. A segment_id must filter the same audience as audience_id. An A/B test takes 2 to 10 'variants' that differ in subject, from_name or send_at, and optionally 'ab_test'. A subject or from-name test sends sample_share of the audience (default 0.…

  • decide_approvalApprove or reject held emailcan change or delete data

    Approve 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 present: false and null otherwise, beside scheduled_at). The approval hold exists so that a person, not an agent, makes this decision; decided_by records the person who authorised it. The API enforces that with 403 forbidden for: a client connected by signing in (an OAuth access token, which is how a remote MCP connectio…

  • delete_contactDelete contactcan change or delete data

    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. remove_from_audience takes someone off a single audience instead.

  • emit_eventEmit automation event

    Emit 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 automations_started; 0 means nothing was waiting on that name or the person was excluded. The calling key's guardrails apply as for enroll_in_automation, before anything is looked up: a key that holds its sends for approval gets 403 forbidden, and a key with a recipient allowlist gets 403 recipient_not_allowed for an address not on it.

  • enroll_in_automationEnroll contact in automation

    Put 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 exit tags, or lose one of its required tags, which would otherwise have to be tracked and cancelled by hand. A sequence stops for someone who converted when the contact is tagged with an exit tag; nothing needs cancelling. Enrolling the same person twice is a no-op, so a retry is harmless. The answer always carries enrolled, reason and enrollment: enrolled: true with reason nul…

  • find_contactFind contactread-only

    Find 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 once per workspace, so each row is one contact with audience_ids listing every list they are on, first_name, last_name, tags, attributes and whether they are unsubscribed. Newest first, at most 100 per call; while has_more is true, next_cursor passed back as cursor with the same filters returns the next page.

  • get_automationGet automationread-only

    Fetch 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 list_automation_enrollments. An unknown automation_id answers 404 not_found; a name or slug passed instead is answered with the matching id.

  • get_broadcastGet campaignread-only

    One 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 is waiting; pause_reason says on what, and resume_after when a warm-up pause renews. progress is null for a campaign not in flight. For an A/B test, progress.by_variant is a list of { key, pending, sent, failed, skipped } in variant order, ending with a row whose key is null: the addresses still waiting for the winner.…

  • get_contactGet contactread-only

    Fetch one contact by id, with their audience memberships, custom properties and engagement dates.

Show 41 more tools
  • get_emailGet emailread-only

    Fetch one message with its full event timeline (send, delivery, bounce, complaint, open, click). The timeline shows why an email didn't arrive.

  • get_email_metricsGet email metricsread-only

    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.

  • get_email_preferencesGet email preferencesread-only

    What 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.

  • get_threadGet conversation threadread-only

    Read 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 who the From line claims; when false the From line may be forged, and a forged sender still passes SPF, so spf_verdict does not show it. automated is true on an out-of-office or bounce report, which needs no answer (null on mail before 22 Sep 2026). pending_reply is true when an answer written after the latest inbound m…

  • get_usageGet usage and sending statusread-only

    This 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 right now, before a large batch or campaign is tried: on Free a send that would cross the 3,000 included emails is refused whole, and a workspace with no verified payment method cannot send at all, on any plan. lock_reason payment_method_required is the one no tool can fix: only a person can add a payment method, in the dashboard. Pricing is one meter, outbound emails sent: contacts…

  • import_contactsImport contactscan change or delete data

    Import 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, imported with the matching status before the first campaign, keep the new domain from mailing people who opted out, which loses a domain its reputation in a day. Existing contacts are updated rather than duplicated, and nobody who opted out here is resubscribed, so re-running an import is safe. Returns counts: inserted, updated, skipped, unsubscribed, bounced, complained, suppressed…

  • list_audiencesList audiencesread-only

    List 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.

  • list_automation_enrollmentsList automation enrollmentsread-only

    The 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?', which find_contact and list_emails do not. status narrows to one state: 'active' (still going, including people held while the automation is paused), 'completed', 'failed', or 'canceled' for everyone who left early, where cancel_reason says why (unsubscribed, unsubscribed_from_topic, replied, suppressed, exit_tag, require…

  • list_automationsList automationsread-only

    List 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 current step rather than ending their sequence: they stay 'active' and continue from that step once it is active again. list_automation_enrollments lists who is on one, and who left and why.

  • list_broadcast_recipientsList campaign recipientsread-only

    Who 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.

  • list_broadcastsList campaignsread-only

    List 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 only get_broadcast returns. Every field is snake_case and always present, null when unset. A campaign showing 'paused' is not broken; its pause_reason says why. A quota or interrupted pause continues on its own. A warm-up pause is the sending domain's daily allowance protecting its reputation: it resumes on its own at re…

  • list_emailsList sent emailsread-only

    List 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 the same filters returns the next page. An unknown status is refused with 422 invalid_request rather than answering an empty log.

  • list_pending_approvalsList pending approvalsread-only

    List 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 its expires_at; an expired approval drops out of the list and can no longer be decided.

  • list_scheduled_emailsList scheduled emailsread-only

    Messages 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.

  • list_segmentsList segmentsread-only

    List 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.

  • list_sending_domainsList sending domainsread-only

    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. mail_from says whether SES has adopted the bounce. subdomain as the Return-Path: pending while SES polls for its MX record, then active. SES polls for 72 hours from when the domain was added, not from when the MX appears, and then marks it failed; publishing the MX later and calling verify_sending_domain restarts it. A verified domain sends fine meanwhile; only SPF alignment waits.

  • list_suppressionsList suppressionsread-only

    List 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; scanning pages instead is how the wrong suppression gets cleared. At most 100 per call; while has_more is true, next_cursor passed back as cursor returns the next page.

  • list_tagsList tagsread-only

    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_templatesList templatesread-only

    List 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 from a template.

  • list_threadsList conversation threadsread-only

    List 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 true, meaning its answer is already on the way. Most recently active first, at most 100 per call; while has_more is true, next_cursor passed back as cursor with the same awaiting_reply and tag returns the next page. Each thread lists the tags of the messages sent on it.

  • list_topicsList topicsread-only

    List 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.

  • list_webhook_deliveriesList webhook deliveriesread-only

    Recent 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 returned 500'. Newest first, the most recent `limit` only; not paged.

  • mark_thread_handledMark thread handled

    Clear 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; this clears it without one. The next message they send flags the thread again.

  • pick_broadcast_winnerPick A/B test winner

    Decide 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; anything else, or a campaign that is not an A/B test, answers 409 invalid_state. A variant key the campaign does not have answers 422 invalid_request. get_broadcast shows the figures so far — a variant with a handful of opens more is not a result, and the worker decides on its own at decide_at. Returns the campaign object, as…

  • preview_broadcastPreview campaignread-only

    How 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 the floor is refused.

  • remove_from_audienceRemove contact from audiencecan change or delete data

    Take 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 are different things.

  • remove_suppressionRemove suppressioncan change or delete data

    Remove 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 scope (an address suppressed for 'marketing' is not lifted by 'all'); list_suppressions with email shows the scope that is stored.

  • render_templatePreview templateread-only

    Render 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 no plain-text part.

  • reply_to_messageReply in thread

    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, which send_email does not do. It is a send, so it answers exactly as send_email does and meets the same refusals (422 no_verified_identity, 429 daily_limit, 403 recipient_not_allowed, and so on); idempotency_key makes a retry safe.

  • resume_broadcastResume paused campaign

    Continue 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_state. pause_reason says why it paused. A background worker resumes quota, interrupted and suspension pauses on its own, so this only saves waiting. A warm-up pause cannot be resumed before its resume_after (409 invalid_state naming the time) and resumes on its own then; a retry answers the same, because the allowance is p…

  • send_broadcastSend or schedule campaign

    Send 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 422 no_postal_address (a person adds it in Settings), and a suspended workspace with 422 workspace_suspended, whether sending now or scheduling. Calling this on an already-scheduled campaign with a new scheduled_at moves it; with no scheduled_at it starts now. Any other status answers 409 invalid_state, and a malformed …

  • send_emailSend email

    Send 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 approval_id. skipped: true (status 'rejected', with reason) means every recipient was suppressed or opted out and nothing was sent; a retry answers the same. status 'pending_approval' (with approval_id) means a person must release it; a retry does not release it. Otherwise skipped is false and reason and approval_id are …

  • send_template_emailSend 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. Nothing is sent when a value is missing: 422 missing_variables lists the names in `missing`, and a call with those filled in goes through (render_template checks this without sending). An unknown slug answers 422 invalid_request. The response has the same fields as send_email: id, status, thread_id, scheduled_at, skipped, reason and approval_id. Refusals, by type: 422 no_verified_identity (the From domain has no verified sending domain; a retry answers…

  • set_automation_statusActivate or pause automation

    Activate, 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 setting 'active' again continues each person from where they were, with steps that came due meanwhile going out from the next worker run at the usual pace. A step's content is read when it is sent, so a paused automation's steps can be fixed without deleting it. Activating does not re-check the sending domain; if it is no l…

  • set_email_preferencesSet email preferencescan change or delete data

    Set 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 refuses the whole call with 422 unknown_topic and nothing is saved. Setting a topic to false also ends any automation enrolment sent under that topic.

  • suppress_manySuppress addresses in bulkcan change or delete data

    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. The defaults differ from add_suppression: scope 'marketing' and reason 'list_hygiene'. reason 'unsubscribe' marks a list of opt-outs, and also cancels their queued scheduled sends and ends their automation enrolments. Addresses are de-duplicated; the response counts suppressed and duplicates.

  • tag_contactTag contactcan change or delete data

    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. list_tags returns the tags the workspace already uses, so an existing tag can be reused rather than a synonym created. Adding a tag an automation exits on (e.g. customer), or removing one it requires (e.g. trial), ends the person's enrolment in it at once. Adding a tag the contact did not already carry sta…

  • update_automationUpdate automationcan change or delete data

    Change 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 trigger are fixed once created. A reenrollment change applies from the next enrolment; nobody already enrolled is touched. Fields left out keep their value; a null topic_key or reply_to, or an empty tag list, clears it. People already enrolled see the change from their next step, so a mistaken edit can be put back before it has ended anyone's sequence. Clearing reply_to has repli…

  • update_contactUpdate contactcan change or delete data

    Update 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 enrolments. unsubscribed: false lifts a marketing unsubscribe, which is for a person who asked to be resubscribed. Resubscribing someone who hard bounced or complained is refused with 409 invalid_state before anything in the request is written.

  • update_email_tagsUpdate email tags

    Add 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_tags [{name:'category', value:'billing-recovery'}]. The thread and the dashboard's tag suggestions follow. Changes only what SendRaven stores, not what the provider already saw. Safe to repeat. Answers the email as get_email does. broadcast_id, set on campaign mail, cannot be changed (422 invalid_request), nor can a messag…

  • verify_sending_domainCheck sending domain DNS

    Re-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.

Signals

Stars
1
Forks
0
Open issues
0
Last commit
Oct 19, 2026 (10 days ago)
Last release
Oct 19, 2026 (10 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
ai.sendraven/mcp
Version
0.4.25
Auth
Auth not stated, API key
Packages
npm @sendraven/mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026
Cite this page

Sendraven MCP server. Agent Mart. https://agentmart.dev/connectors/sendraven-ai-mcp (last updated 2026-10-24)