mcpserver.lol
registry/commonninja-mcp
Connection check verified live · 20h ago

commonninja-mcp

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

Tools 47
GitHub stars
Installs / wk
Licence
Transport streamable-http, stdio
Last checked 20h ago

Tools & capabilities

47 tools

Read from the running server on 20h ago.

add_contact email*last_namefirst_nameaudience_id*
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…
add_sending_domain domain*risk_class
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 c…
add_suppression email*scopereason
Stop sending to an address. Scope 'marketing' leaves transactional mail working.
cancel_scheduled_email id*
Cancel a scheduled email before it sends. Only works while status is 'scheduled'.
count_segment id*
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.
decide_approval id*reasondecision*decided_by*
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 a…
delete_contact contact_id*
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 conta…
emit_event name*email*variables
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 ha…
enroll_in_automation email*variablesautomation_id*
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 wou…
find_contact qemaillimitcursorunsubscribed
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 separatel…
get_broadcast id*
One campaign, with a 'progress' object while it is sending or paused: how many addresses are still pending, sent, failed, or skipped because the person opted out after the campaign…
get_contact id*
Fetch one contact by id, with their audience memberships, custom properties and engagement dates.
get_email id*
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.
get_email_metrics days
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 on…
get_email_preferences email*
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…
get_thread id*
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` hold…
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 o…
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 id*limit
Who a campaign reached and what happened to each message.
list_broadcasts
List campaigns with their status and send progress. A campaign showing 'paused' is not broken: it ran out of the day's sending quota part way and is waiting to continue. Use get_br…
list_emails tolimitstatus
List recent messages with their delivery status. Filter by status (queued, scheduled, sent, delivered, bounced, complained, rejected) or recipient.
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 'p…
list_scheduled_emails limit
Messages queued to send later but not yet sent. Cancel one with cancel_scheduled_email.
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 limit
List addresses we refuse to mail and why (hard_bounce, complaint, unsubscribe, manual). Check here first when someone reports not receiving email.
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 foo…
list_threads limitawaiting_reply
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 n…
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 t…
list_webhook_deliveries limitendpoint_id*
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'.
preview_broadcast id*
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…
remove_from_audience contact_id*audience_id*
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_…
remove_suppression email*scope
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…
render_template slug*variables*
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.
reply_to_message to*from*htmltextsubject*reply_to_message_id*
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.…
resume_broadcast id*
Continue a campaign left 'paused' by the daily sending quota. It mails only the addresses still pending — the audience was frozen when the campaign started and everyone already rea…
send_broadcast id*scheduled_at
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. A campaign bigger th…
send_email to*from*htmltextsubject*scheduled_at
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.
send_template_email to*from*subjecttemplate*variables*scheduled_at
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.
set_email_preferences email*topics*
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.
suppress_many scopeemails*reason
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 m…
tag_contact addremovecontact_id*
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 space…
update_contact id*last_nameattributesfirst_name
Update a contact. Attributes are merged, so sending one field does not clear the rest.
verify_sending_domain id*
Re-check a domain's DNS records now instead of waiting for the background monitor.