bulk_create_subscribers
ChatGPTBulk-create subscribers in one list. Each row must contain EMAIL. The customer plan maxBulkImportRows limit is enforced.
cancel_scheduled_campaign
ChatGPTStops a scheduled campaign before it starts by moving it back to draft; nothing is deleted and it can be scheduled again later. For a campaign that is already sending use pause_unpause_campaign. Confirm with the user first.
check_blacklist
ChatGPTChecks whether a public IPv4 address or a domain is listed on the public email blocklists (DNSBLs) that MailSenpai queries. For a domain it checks the domain, its registered domain, the IPs of its MX servers and its A record. Returns status (done, in_progress), summary, counts (checks, listed, unreachable, clean) and, for each target, every list with result (listed, clean, unreachable), the reason and the list's official removal page. manual_checks holds the lists that are not queried (for example Spamhaus), each with the link to its official check page. Works on any IP or domain, needs no data from the MailSenpai account and changes nothing. Use it when emails bounce with a blocklist error or before sending from a new IP. It usually answers in 1-5 seconds; if status is in_progress, call again with the returned job.
check_domain_dns
ChatGPTChecks the public DNS records that decide whether a domain's email gets delivered: SPF (single record, ending, DNS lookups under the limit of 10, includes that no longer exist), DKIM (the most common selectors, or the one you pass in selector, with key length), DMARC (policy, reports address, inherited from the parent domain) and MX (which servers and spam filters receive the mail). Returns status (checked, public_mailbox, not_found, invalid, dns_unreachable), summary, checks.spf/dkim/dmarc/mx each with result (ok, fix, missing, check) and an explanatory note, tips ordered by priority with the exact values to publish, and the raw records. Works on any domain, does not need data from the MailSenpai account and changes nothing. Use it before sending from a new domain or when emails land in spam.
confirm_subscriber
ChatGPTSets a subscriber's status to confirmed by subscriber_uid: confirms an unconfirmed contact or re-subscribes one who unsubscribed, so they receive campaigns again. Do this only with the contact's consent and after the user confirms. Use confirm_subscriber_by_email if you only have the address.
confirm_subscriber_by_email
ChatGPTSame as confirm_subscriber, but first finds the subscriber by email in the given list. Re-subscribing someone who opted out requires their consent, so confirm with the user first.
copy_campaign
ChatGPTDuplicates an existing campaign (list, segment, content and settings) into a new DRAFT without send date and returns the new campaign_uid; the copy's name gets a "#1"-style suffix. Use it to reuse a past campaign; use create_campaign to start from scratch. Nothing is sent.
copy_list
ChatGPTCreates a copy of a list with its settings, custom fields and segments (subscribers are NOT copied) and returns the new list_uid; the copy's name gets a "#1"-style suffix. Use create_list instead to start an empty list from scratch.
create_campaign
ChatGPTCreates a new campaign, by default as a DRAFT that sends nothing. Needs list_uid, name, subject, from_name, from_email, reply_to, send_at and content (template_uid or template_content HTML). To duplicate a past campaign use copy_campaign; to create and schedule in one step use create_scheduled_campaign. status=pending-sending schedules real sending and requires confirm_send=true after explicit user approval.
create_list
ChatGPTCreates a new, empty mailing list and returns its list_uid. To duplicate an existing list with its custom fields and segments use copy_list instead; to add contacts afterwards use create_subscriber or bulk_create_subscribers.
create_list_field
ChatGPTAdds a new custom field to a list (e.g. a "City" text field or a "Plan" dropdown) and returns it. Valid type identifiers come from list_list_field_types. Existing subscribers start with the new field empty.
create_list_segment
ChatGPTCreates a saved segment in a list from field conditions (and optional campaign open/click conditions) and returns its segment_uid. Get field_id values from list_list_fields and operators from list_segment_condition_operators.
create_or_update_subscriber
ChatGPTUpsert: looks up data.EMAIL in the list; if found it updates that subscriber, otherwise it creates a new one. Use it to sync contacts when you do not know whether they already exist. Existing values are overwritten, so confirm with the user before updating real contacts.
create_scheduled_campaign
ChatGPTCreates a campaign and schedules it for real sending in one step (status pending-sending at campaign.send_at). To prepare a draft for review use create_campaign instead. Ask the user to approve list, content and send time, then call with confirm_send=true (plus approval_reference if the plan requires it).
create_subscriber
ChatGPTAdds a new subscriber to a list and returns its subscriber_uid. Fails if the email is already in the list: use create_or_update_subscriber to add-or-update, or bulk_create_subscribers for many contacts at once. Depending on the list's opt-in setting the new subscriber may start as unconfirmed.
create_template
ChatGPTSaves a new reusable email template from HTML (or a ZIP archive) and returns its template_uid, which create_campaign can use. It does not create or send any campaign.
create_transactional_email
ChatGPTSends one transactional email to a single recipient, queued for immediate delivery or for send_at. It is a real send: show the user the recipient and content and call with confirm_send=true only after approval. To email a whole list use a campaign instead.
delete_campaign
ChatGPTPermanently deletes a campaign and its statistics; this cannot be undone. To stop a campaign but keep it use cancel_scheduled_campaign or pause_unpause_campaign. Ask the user for explicit confirmation, then call with confirm_delete=true.
delete_list
ChatGPTPermanently deletes a mailing list together with all its subscribers, custom fields and segments; this cannot be undone. Ask the user for explicit confirmation, then call with confirm_delete=true. Only available if the plan allows deletions.
delete_list_field
ChatGPTPermanently deletes a custom field from a list, together with the values stored in it for every subscriber; this cannot be undone. Ask the user for explicit confirmation, then call with confirm_delete=true.
delete_list_segment
ChatGPTPermanently deletes a saved segment; the subscribers themselves are kept. Ask the user for explicit confirmation, then call with confirm_delete=true.
delete_subscriber
ChatGPTPermanently deletes a subscriber (by subscriber_uid) and its history from a list; this cannot be undone. To stop emails while keeping the record use unsubscribe_subscriber instead. Ask the user for explicit confirmation, then call with confirm_delete=true.
delete_subscriber_by_email
ChatGPTSame as delete_subscriber, but first finds the address in the given list. Permanent; for a simple opt-out use unsubscribe_subscriber_by_email. Ask the user for explicit confirmation, then call with confirm_delete=true.
delete_template
ChatGPTPermanently deletes a saved template; campaigns that already used it keep their content. Ask the user for explicit confirmation, then call with confirm_delete=true.
delete_transactional_email
ChatGPTPermanently deletes a transactional email record by email_uid; this cannot be undone. Ask the user for explicit confirmation, then call with confirm_delete=true.
get_campaign
ChatGPTReturns one campaign by campaign_uid: name, subject, sender, list and segment, status and send date. For opens, clicks and bounces use get_campaign_stats. Read-only.
get_campaign_stats
ChatGPTReturns the aggregate results of one campaign: recipients processed, delivered, opens and unique opens, clicks, hard/soft bounces, unsubscribes and complaints, with rates. For the individual bounce records use list_campaign_bounces. Read-only.
get_email_spam_test_result
ChatGPTReturns the state and result of a spam test started with start_email_spam_test. status is waiting (no email received yet: ask the user to send it, then call again), analyzing, completed or expired. When completed: score from 0 to 10, rating (excellent, good, needs_work, at_risk), summary, partial (true when authentication or the filter verdict could not be evaluated), the received email (from, subject, sending IP, size), sections with each check (authentication, blocklists, reverse DNS, headers, content), to_do with the fixes in order of impact and the spam filter rules that fired. Only the analysis is stored, never the message text; details are deleted after 24 hours. The score describes this one message, it is not a promise of inbox placement. Read-only.
get_list
ChatGPTReturns the full settings of one mailing list by list_uid: general info, default sender (from name, from email, reply-to), notification and company details. If you only know the list name, find its list_uid with list_lists first. Read-only.
get_list_field
ChatGPTReturns one custom field of a list by field_id: label, tag, type, required flag, default value and options (for dropdowns). Use list_list_fields to find the field_id. Read-only.
get_list_segment
ChatGPTReturns one segment by segment_uid with its name, match mode (all or any) and conditions. Use list_segment_subscribers to see the matching subscribers. Read-only.
get_my_mailsenpai_capabilities
ChatGPTReturns what the connected MailSenpai account may do: customer name, roles, permission scopes, the list UIDs it is restricted to (empty means all lists) and plan limits such as canSendCampaigns, canDelete, requiresApprovalForSend and maxPerPage. Call it first when you are unsure whether a write, send or delete action is allowed. Read-only, no parameters.
get_subscriber
ChatGPTReturns one subscriber by subscriber_uid with email, all custom field values, status, source, IP address and date added. If you only have the email address use search_subscriber_by_email first. Read-only.
get_template
ChatGPTReturns one saved email template by template_uid, including its name and full HTML content. Read-only.
get_transactional_email
ChatGPTReturns one transactional email by email_uid with recipient, sender, subject, status and sending details. Read-only.
list_blacklisted_subscribers
ChatGPTLists the subscribers of a list with status blacklisted (blocked: they never receive emails, e.g. after complaints or hard bounces). Shortcut for search_subscribers_by_status with status=blacklisted. Paginated; read-only.
list_campaign_bounces
ChatGPTLists the individual bounces recorded for one campaign: subscriber, bounce type (hard, soft or internal) and the receiving server's message. Use get_campaign_stats for totals only. Paginated; read-only.
list_campaigns
ChatGPTLists the account's campaigns page by page with campaign_uid, name, type and status (draft, pending-sending, sending, sent, paused...), optionally only those of one list. Use get_campaign for the details and get_campaign_stats for the results. Paginated; read-only.
list_confirmed_subscribers
ChatGPTLists the subscribers of a list with status confirmed, i.e. the active contacts who receive campaigns. Shortcut for search_subscribers_by_status with status=confirmed. Paginated; read-only.
list_countries
ChatGPTLists the countries known to MailSenpai with country_id, name and code, used for address details (e.g. a list's company info) and to look up zones with list_country_zones. Paginated; read-only.
list_country_zones
ChatGPTLists the zones (states, provinces, regions) of one country by country_id from list_countries. Paginated; read-only.
list_list_field_types
ChatGPTReturns the custom field types that create_list_field accepts (identifier and name, e.g. text, dropdown, date). Read-only, no parameters.
list_list_fields
ChatGPTLists the custom fields of one list (for example EMAIL, FNAME, LNAME) with each field's field_id, tag, label, type and required flag. Use it to learn the tags for subscriber data and the field_id needed in segment conditions. Paginated; read-only.
list_list_segments
ChatGPTLists the segments (saved subscriber filters) of one list with each segment_uid and name. Use get_list_segment for the conditions and list_segment_subscribers to see who matches. Paginated; read-only.
list_lists
ChatGPTLists the account's mailing lists page by page, with each list's list_uid, name and display name. Use it to find the list_uid that most other tools need; use get_list for the full settings of one list. Returns data.records plus count and total_pages. Read-only.
list_segment_condition_operators
ChatGPTReturns the operators that segment conditions can use (operator_id, name and slug such as contains or greater-than). Read-only, no parameters.
list_segment_subscribers
ChatGPTReturns the subscribers that currently match a saved segment (subscriber_uid, email, status, field values). Use list_subscribers for the whole list, or search_subscribers_by_custom_fields for a one-off filter without saving a segment. Paginated; read-only.
list_subscribers
ChatGPTLists the subscribers of one list page by page, optionally filtered by status; each record has subscriber_uid, email, custom field values, status, source and date added. To find one person use search_subscriber_by_email; to filter by field values use search_subscribers_by_custom_fields. Paginated; read-only.
list_templates
ChatGPTLists the saved email templates of the account (template_uid, name, screenshot) page by page. Use search_templates to filter by name and get_template for the full HTML. Paginated; read-only.
list_transactional_emails
ChatGPTLists transactional emails (single one-to-one messages such as receipts or password resets) with email_uid, recipient, subject, status and send date. Paginated; read-only.
list_unconfirmed_subscribers
ChatGPTLists the subscribers of a list with status unconfirmed (signed up but not yet confirmed, so they do not receive campaigns). Shortcut for search_subscribers_by_status with status=unconfirmed. Paginated; read-only.
list_unsubscribed_subscribers
ChatGPTLists the subscribers of a list with status unsubscribed (opted out; kept for history and no longer emailed). Shortcut for search_subscribers_by_status with status=unsubscribed. Paginated; read-only.
mark_campaign_as_sent
ChatGPTMarks a campaign as sent, which permanently stops any remaining delivery; it cannot be resumed afterwards. Use it only to close a stuck or abandoned campaign, after explicit user confirmation, with confirm_send=true.
pause_unpause_campaign
ChatGPTToggles a campaign between sending and paused: a sending campaign is paused, a paused campaign RESUMES sending. Check the current status with get_campaign first and confirm with the user, because resuming restarts delivery.
reschedule_campaign
ChatGPTChanges the send date and time of a campaign that is already scheduled (it stays pending-sending). Use schedule_campaign_send for a draft that is not scheduled yet. Requires confirm_send=true after the user approves the new time.
schedule_campaign_send
ChatGPTSchedules an existing draft campaign for real sending at send_at (status becomes pending-sending). Use reschedule_campaign to move an already scheduled campaign and cancel_scheduled_campaign to stop it before it starts. Ask the user to approve, then call with confirm_send=true.
search_subscriber_by_email
ChatGPTChecks whether an email address is in ONE given list and returns its subscriber_uid and status; an error saying the subscriber does not exist means not found. Use search_subscriber_by_email_all_lists when you do not know the list. Read-only.
search_subscriber_by_email_all_lists
ChatGPTFinds an email address across ALL lists of the account and returns every match with its list, subscriber_uid and status. Use it when the list is unknown (e.g. privacy or opt-out requests); use search_subscriber_by_email when you know the list. Read-only.
search_subscribers_by_custom_fields
ChatGPTFinds subscribers in one list whose custom field values match exactly, e.g. {"CITY": "Rome"}; with several fields all must match. Use it for ad-hoc lookups; use search_subscriber_by_email for an email address and create_list_segment for a reusable filter. Paginated; read-only.
search_subscribers_by_status
ChatGPTLists the subscribers of one list that have the given status (required). Same result as list_subscribers with a status filter; the list_confirmed/unconfirmed/unsubscribed/blacklisted_subscribers tools are shortcuts for common statuses. Paginated; read-only.
search_templates
ChatGPTFinds saved templates matching the given filters, e.g. {"name": "welcome"}, page by page. Use list_templates to browse all templates. Read-only.
set_subscriber_status
ChatGPTSets any status on a subscriber identified by subscriber_uid: confirmed, unconfirmed, unsubscribed, blacklisted, unapproved, disabled or moved. For the common cases prefer confirm_subscriber or unsubscribe_subscriber. It changes who receives emails, so confirm with the user first.
set_subscriber_status_by_email
ChatGPTSame as set_subscriber_status, but first finds the subscriber by email in the given list. It changes who receives emails, so confirm with the user first.
start_email_spam_test
ChatGPTStarts a free spam test and returns a unique test address (testspam+code@mailsenpai.com) and a test_token. The user must then send a real email to that address from the program they normally use (newsletter tool, CRM, website or app): this tool cannot send it for them. Then call get_email_spam_test_result with the test_token. Not read-only: it creates a test and MailSenpai emails the instructions to the account's address (or to email, when given; it must be a company address, not Gmail or similar). Ask the user before starting. Limits: 3 tests per address per day; the address expires after 24 hours. A test still waiting for the same address is reused.
unsubscribe_subscriber
ChatGPTUnsubscribes one subscriber (by subscriber_uid) from one list: the record and its history are kept with status unsubscribed and it stops receiving campaigns; reversible with confirm_subscriber. Use delete_subscriber only to erase the record completely. Confirm with the user first.
unsubscribe_subscriber_by_email
ChatGPTSame as unsubscribe_subscriber, but finds the address in ONE given list. To opt an address out of every list at once use unsubscribe_subscriber_from_all_lists_by_email. Confirm with the user first.
unsubscribe_subscriber_from_all_lists_by_email
ChatGPTUnsubscribes an email address from ALL lists of the account in one call; the records are kept with status unsubscribed. Use it for global opt-out requests; use unsubscribe_subscriber_by_email for a single list. Confirm with the user first.
update_campaign
ChatGPTEdits an existing campaign by campaign_uid (name, subject, sender, list or segment, content, send time); normally only drafts and paused campaigns can be changed. Setting status=pending-sending or a send_at schedules real sending and needs confirm_send=true after explicit user approval; confirm other changes with the user too.
update_list
ChatGPTChanges the settings of an existing list (name, description, default sender, notifications, company) identified by list_uid. Takes the same data format as create_list; subscribers are not touched. It overwrites the current values, so confirm the changes with the user first.
update_list_field
ChatGPTChanges an existing custom field (label, tag, type, required flag, visibility, options) by field_id. Changing the tag or type can break templates and segments that use the field, so confirm with the user first.
update_list_segment
ChatGPTReplaces the name, match mode and conditions of an existing segment by segment_uid. Campaigns that target the segment will use the new conditions, so confirm with the user first.
update_subscriber
ChatGPTUpdates the custom field values (and optionally the status) of an existing subscriber identified by subscriber_uid. Use update_subscriber_by_email if you only have the address. It overwrites the values you pass, so confirm with the user first.
update_subscriber_by_email
ChatGPTSame as update_subscriber, but first finds the subscriber by email address in the given list; returns an error if the address is not in that list. It overwrites the values you pass, so confirm with the user first.
update_template
ChatGPTReplaces the name and/or HTML content of an existing template by template_uid. Campaigns already created from it keep their own copy of the content. It overwrites the template, so confirm with the user first.