RCS Campaigns MCP server
com.rcs-campaigns/campaigns·v0.1.10Send RCS & SMS campaigns: templates, audiences, surveys, inbox replies, delivery webhooks.
121 downloads/wk
Reviews
Write oneNobody has reviewed RCS Campaigns yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
RCS Campaigns tools (48, 19 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
assign_conversationGive a thread an owner, or release it back to the pool with `userId: null`. The assignee is a bare Clerk user id and is NOT validated against the org roster — a stale id degrades to "assigned to someone who left", visibly, rather than to an outage in a one-field write.
capabilitiesDescribe the gateway: tool catalog, the scopes this key holds, and pricing posture. Call first to plan what you may do.
clone_surveyDuplicate an org-owned survey into a fresh DRAFT (e.g. to iterate a variant). Returns the new survey.
clone_templateClone a published marketplace template into your org as a fresh private draft. Returns the new template. To deliver rich RCS rather than SMS fallback, submit_template it and await provider approval before send_message.
create_audiencewrite actionCreate a saved audience (contact list) in your org, optionally seeded with contacts (e.g. leads parsed from a CSV). Every contact needs a reachable E.164-ish `number` — a contact with no valid number fails the whole create with a 400 (fix the row rather than silently dropping it). Use `attributes` for any extra CSV columns you want available as {{key}} merge fields later.
create_surveywrite actionCreate a survey draft in your org. Provide a SurveyDefinition (intro? + questions[] of type rating/single_select/text/comment); the shared validator gates it. PICTURES: every question should carry an `imageUrl`, and the definition should carry `headerImageUrl` (start picture) and `outroImageUrl` (finish picture). If the user provided no pictures, WEB-SEARCH for suitable, relevant images first and
create_templatewrite actionCreate a template draft in your org. Compose a TemplateContent (text/card/carousel) with a REQUIRED non-empty smsFallback; the shared RCS validator gates it. Submit it (submit_template) and await provider approval before send_message for rich RCS; an unsubmitted template delivers as SMS fallback.
create_webhookwrite actionRegister an HTTPS endpoint to receive signed platform events. The response carries the signing `secret` EXACTLY ONCE — store it now; every later read redacts it and there is no way to retrieve it again. Each delivery is signed `X-RCS-Signature: t=<unix>,v1=<hex HMAC-SHA256 of "<t>.<rawBody>">`.
delete_audiencewrite actionDelete an audience and all of its contacts (org-scoped, irreversible).
delete_knowledgewrite actionDelete a template's knowledge base document.
delete_surveywrite actionDelete a survey your org owns. IRREVERSIBLE: its responses and sessions are deleted with it, so any results you have not already read are lost. Ask the user before deleting a survey that has been sent or has responses — read get_results first if in doubt.
delete_templatewrite actionDelete a template your org owns. IRREVERSIBLE, and it also removes the template from the provider (Twilio), so an approved template loses its approval and can no longer be sent. Broadcasts that already went out are unaffected. Prefer this only for drafts and abandoned iterations; ask the user before deleting anything they have submitted or sent.
delete_webhookwrite actionRemove a webhook endpoint. Its delivery history is deleted with it; anything still queued for it stops.
disable_knowledgeDisable knowledge answering on a template WITHOUT deleting the doc (pause).
duplicate_templateDuplicate a template your org OWNS into a fresh private draft (e.g. to iterate a variant without touching the original). The copy keeps the content, channel, category, tags and knowledge base, but starts unsubmitted — it has no provider approval of its own until you submit_template it. For copying someone else's PUBLISHED marketplace listing, use clone_template instead.
enable_knowledgeEnable knowledge answering on a template (the doc is used again).
get_audienceFetch one audience your org owns by id.
get_contactFetch one contact by its public contact id, with the audiences they belong to.
get_conversationRead one thread in a single call: its meta, the most recent messages (ascending), the contact summary (marketing status, tags, audiences) and whether the WhatsApp 24h service window is open. Internal team notes are deliberately NOT included.
get_knowledgeRead a template's knowledge base: the grounding document text plus whether answering is enabled. Use before set_knowledge to edit a doc incrementally instead of overwriting it blind.
get_resultsRead a survey’s aggregated results: per-question option counts / rating averages / text samples + completion totals (multi-part questions aggregate per part; free-text answers are auto-translated to English).
get_surveyFetch one survey your org owns by id (its full definition).
get_templateFetch one template by id (a published marketplace listing or one your org owns).
get_usageRead your org’s month-to-date metered message usage.
import_contactsAppend contacts to an existing audience (e.g. more leads from a later CSV batch). Same reachability rule as create_audience: every contact needs a valid `number` or the whole import 400s.
list_audience_contactsPaginated list of an audience's contacts. Use `q` to find someone in a large imported batch instead of paging through it — it matches on the server, over the whole audience, so it keeps working on lists too big to page.
list_contactsSearch the org's contact records (one person per number, across every audience). Returns consent, opt-out, number verdict, marketing status, merge fields and tags.
list_conversationsList the org's conversation threads (one per phone number), newest activity first. Archived threads are hidden. Filter by free text, unread, unassigned, a specific assignee, or the campaign a thread was messaged in.
list_survey_sendsA survey's outbound send log (live + test sends), newest first, with per-message delivery status — including failed/stubbed attempts and the reason they did not deliver.
list_webhooksThe org's registered outbound webhook endpoints. The signing secret is redacted — it is shown only once, by create_webhook.
render_surveyPreview a survey the way a respondent sees it: the text body + RCS chip titles for each question. Side-effect-free.
render_templateValidate a template and return the rendered RCS payload + variable-bound SMS/MMS fallback, without sending. Use to inspect before cloning/sending.
replyReply into a thread — free text (with an optional image) or an approved template. Reaches a real phone and bills your org. Every gate an operator hits applies unchanged: an opted-out number is refused (409), the org allowance is enforced, WhatsApp free text needs the 24h window open (an approved template otherwise), and an RCS send always carries its SMS fallback. When the thread has an outbound l
search_audiencesList/search the audiences (saved contact lists) your org owns. Returns each audience with its name, source, and contactCount.
search_surveysList/search the surveys your org owns. Returns each survey with its recipients + responses counts.
search_templatesSearch the published RCS template marketplace. Returns normalized listings (id, name, rating, cloneCount, categoryKeys).
send_messagewrite actionSend an org-owned template to a list of E.164 phone numbers (RCS-first with mandatory SMS/MMS fallback). Pass the template's blueprintId or id. The template sends as rich RCS only after submit_template + provider approval; until then it delivers as SMS fallback — the returned funnel's `fellBackToSms` count signals how many recipients got SMS instead of RCS. Bills your org. Returns the send funnel.
send_surveywrite actionSend a survey to explicit E.164 numbers (the CRM-triggered single-customer send) and/or saved audiences. Flips the survey ACTIVE. Bills your org. Returns { recipients, sent }.
send_survey_testwrite actionSend a one-off TEST of the survey to a single E.164 number (does not change status or audiences). Check list_survey_sends afterwards for the delivery outcome.
set_knowledgeSet/replace a template's knowledge base: the grounding document AI answers are generated from when recipients reply. Include operating instructions in the doc itself — e.g. "Any question not answered by this document must be answered exactly: …". Setting a doc re-enables answering.
submit_surveywrite actionSubmit a survey for provider approval: on RCS its button-question templates, on WhatsApp its single Flow template. Returns the survey with the resulting approval state.
submit_templatewrite actionSubmit an org-owned template to the provider (Twilio) for approval. Returns the contentSid + approval status.
test_webhookFire a synthetic signed event at one endpoint to verify the receiver. Returns the delivery id and whether it was accepted.
update_contactwrite actionCorrect a contact's names, email, merge fields (`attributes`, a whole-map replace) or tags. Consent and opt-out are deliberately NOT reachable from here — recording or clearing them is a compliance-sensitive action that stays with a human operator.
update_surveywrite actionPartially update a survey: name, description, definition (re-validated; editing a submitted WhatsApp survey requires resubmission), startDate/endDate, and audienceIds — setting audienceIds on a future-dated survey schedules the send to fire automatically at startDate. PICTURES: as with create_survey, keep every question's `imageUrl` plus `headerImageUrl`/`outroImageUrl` populated — web-search for
update_templatewrite actionPartially update a template your org owns: name, description, category, tags, knowledgeDoc, and content (re-validated by the shared RCS validator — a non-empty smsFallback is still required). Only the fields you pass change. Editing the CONTENT of an already-approved template invalidates that approval: submit_template it again and await approval, or it delivers as SMS fallback until then. Use get_
update_webhookwrite actionUpdate an endpoint's url, subscribed events, description, or active flag. Only the fields you pass change. The signing secret is never returned or rotated here.
upload_mediawrite actionStore one picture on the platform GCS bucket and get its stable https URL — the only kind of URL survey/template media should use. Pass EITHER the image inline (base64 + mime) OR an https sourceUrl the server fetches and re-hosts (use this for web-searched pictures).
Public scan report
scanner v0.1.10 · 2026-10-31 · same rubric, same numbers if you re-run it
- Code scan15 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancerepository not readable: repo not found3/15
- Maintainer identityverified namespace with website, no repo4/10
How RCS Campaigns compares
Against every graded Email MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 58/100
- higher than 13% of 916 Email servers
- Tools
- 48
- the typical Email server has 7
- Tools that change things
- 40%
- typical: 25%. Fewer write tools means less an agent can break
- Downloads a week
- 121
- more than 63% of 235 Email servers with a package
What its tools let an agent do: 21 read · 8 create · 10 change · 5 delete · 4 send or post
Release history: 3 versions in the registry since 2026-09-21, latest 2026-09-29, typically one every 8 days.
Install RCS Campaigns in Claude Code, Cursor or VS Code
Runs npx -y @rcs-campaigns/agent-toolkit on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add campaigns -- npx -y @rcs-campaigns/agent-toolkit
RCS Campaigns: common questions
- Is RCS Campaigns MCP server safe?
- With care: it is graded C, so read the findings first (58/100). Read the RCS Campaigns safety report
- How do I install RCS Campaigns?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does RCS Campaigns need an API key?
- Yes. The registry entry asks for
RCS_AGENT_KEY. - Is RCS Campaigns maintained?
- The latest release is v0.1.10.
- What can I use instead of RCS Campaigns?
- Servers from other publishers that do the same job: Agenticmail MCP server, Sendraven MCP server and Zenvia MCP server.
- How does RCS Campaigns compare with other Email MCP servers?
- safety score 58/100 (higher than 13% of 916 Email servers); tools 48 (the typical Email server has 7); tools that change things 40% (typical: 25%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to RCS Campaigns
Same job from other publishers: the closest match first, then the best rated.
- AgenticmailReal email and SMS for AI agents — send mail, receive verification codes, drive a real inbox.not reviewedEstablishedB
- SendravenEmail infrastructure for AI agents: send, read replies as threads, campaigns, per-key limits.not reviewedGrowingB
- ZenviaMCP server for Zenvia — SMS, WhatsApp, RCS, Email, Voice, Facebook messaging, templates and reportsnot reviewedGrowingB
- MailchimpMailchimp via MCP: draft, test, and send campaigns; manage audiences and subscribers; pull reports.not reviewedGrowingA
- MailkiteSend email, manage domains, DNS, webhooks, templates, and inbound routing on MailKitenot reviewedGrowingA