The theMarketer MCP Server lets an AI assistant (Claude, ChatGPT, OpenClaw or any MCP-compatible client) work with your theMarketer account through natural language: look up and manage subscribers, review campaign performance, pull e-commerce and audience reports, send transactional messages and more.
Every action runs under your own theMarketer identity via OAuth 2.1, scoped to the domains you have access to. Read tools never change data. Write tools create or update records. Destructive tools delete or irreversibly alter data and always require confirmation in the assistant.
Audience12
Add subscriber
add_subscriberWriteAdd (or update) a subscriber in the audience by email.
Use when the user wants to add a contact/subscriber to their list. By default the import is queued; pass sync=true to process immediately and get the result in the response. birthday is YYYY-MM-DD.
| Parameter | Type | Description |
|---|
emailrequired | string | |
firstname | string | |
lastname | string | |
phone | string | |
city | string | |
country | string | |
birthday | string | |
add_tags | string[] | |
sync | boolean | Default: False. |
domain_id | string | Target domain. |
Add subscriber by phone
add_subscriber_by_phoneWriteAdd a subscriber identified by phone number (no email).
Use for SMS-only contacts. The phone number must be valid for the account's country prefix.
| Parameter | Type | Description |
|---|
phonerequired | string | |
firstname | string | |
lastname | string | |
domain_id | string | Target domain. |
Add subscribers in bulk
add_subscribers_bulkWriteAdd multiple subscribers in one call.
Use for bulk imports (e.g. a list of contacts). Each entry needs at least an email.
| Parameter | Type | Description |
|---|
subscribersrequired | object[] | |
domain_id | string | Target domain. |
Get subscriber status
get_subscriber_statusReadGet a subscriber's profile and subscription status by email.
Use when the user asks whether someone is subscribed, or for details about a specific contact.
| Parameter | Type | Description |
|---|
emailrequired | string | |
domain_id | string | Target domain. |
List subscribers
list_subscribersReadList subscribed or unsubscribed email contacts, optionally in a date range.
Use when the user wants the actual list of contacts (not counts; for counts use get_subscribers_evolution). Large results are truncated with a summary.
| Parameter | Type | Description |
|---|
status | enum | One of: subscribed, unsubscribed. Default: 'subscribed'. |
date_from | string | |
date_to | string | |
domain_id | string | Target domain. |
Update subscriber tags
update_subscriber_tagsWriteAdd and/or remove tags on a subscriber.
Use to label contacts for segmentation (e.g. "vip", "newsletter"). add_tags must contain at least one tag (the API requires it); pass overwrite_existing=true to replace all existing tags.
| Parameter | Type | Description |
|---|
emailrequired | string | |
add_tagsrequired | string[] | |
remove_tags | string[] | |
overwrite_existing | boolean | Default: False. |
domain_id | string | Target domain. |
Get subscribers evolution
get_subscribers_evolutionReadGet the current audience size per channel and the last-7-day changes.
Use when the user asks how many subscribers/contacts they have (email, SMS, push, loyalty) or how many joined/left recently. Returns, per channel: contacts (current headcount), subscribed_contacts_in_last_7days, unsubscribed_contacts_in_last_7days. For a day-by-day history over a custom date range use get_audience_report.
| Parameter | Type | Description |
|---|
domain_id | string | Target domain. |
Get automation entries
get_entered_automationReadList subscribers who entered an automation on a given day.
Use to audit automation triggers (who entered which automation and when). Paginated: per_page max 100.
| Parameter | Type | Description |
|---|
dayrequired | string | |
page | integer | Default: 1. |
per_page | integer | Default: 50. |
domain_id | string | Target domain. |
Get referral link
get_referral_linkReadGet the unique referral link for a subscriber.
Use when the user wants the refer-a-friend URL for a specific contact. Returns null if the email is not a subscriber.
| Parameter | Type | Description |
|---|
emailrequired | string | |
domain_id | string | Target domain. |
Remove subscriber
remove_subscriberDestructiveUnsubscribe a contact from marketing channels.
Use when the user explicitly wants to unsubscribe someone. Without channels, the contact is unsubscribed from all channels. This affects consent and is hard to undo — confirm intent first.
| Parameter | Type | Description |
|---|
emailrequired | string | |
channels | enum[] | |
domain_id | string | Target domain. |
Delete subscriber
delete_subscriberDestructiveDelete a subscriber record entirely (by email and/or phone).
Use only when the user explicitly wants the contact removed from the platform, not just unsubscribed. At least one of email/phone is required. This cannot be undone — confirm intent first.
| Parameter | Type | Description |
|---|
email | string | |
phone | string | |
domain_id | string | Target domain. |
Anonymize subscriber
anonymize_subscriberDestructiveAnonymize a subscriber's personal data (GDPR erasure).
Use for data-protection requests ("forget this customer"). This permanently removes personal data and cannot be undone — confirm intent first.
| Parameter | Type | Description |
|---|
emailrequired | string | |
domain_id | string | Target domain. |
Campaigns4
List campaigns
list_campaignsReadList the account's campaigns, newest first.
Use when the user asks what campaigns exist/were sent. Filter by name (search), channel (type) or sent-after date (start_date, YYYY-MM-DD). Paginated: limit max 100.
| Parameter | Type | Description |
|---|
search | string | |
type | enum | One of: email, sms, push. |
start_date | string | |
page | integer | Default: 1. |
limit | integer | Default: 20. |
domain_id | string | Target domain. |
Create campaign
create_campaignWriteCreate and schedule a campaign for the whole audience.
Use when the user wants to send/schedule an email, SMS, or push campaign. send_at is "YYYY-MM-DD HH:MM"; html is the full message content (max 500KB). The campaign goes to all subscribers (audience_type=all). This schedules a real send — confirm the content and time with the user first.
| Parameter | Type | Description |
|---|
typerequired | enum | One of: email, sms, push. |
moderequired | enum | One of: ecommerce, regular, plaintext. |
namerequired | string | |
subject_linerequired | string | |
preview_textrequired | string | |
htmlrequired | string | |
sender_namerequired | string | |
sender_emailrequired | string | |
reply_torequired | string | |
send_atrequired | string | |
utm_campaignrequired | string | |
utm_mediumrequired | string | |
utm_sourcerequired | string | |
smart_sending | boolean | Default: True. |
use_optimal_time | boolean | Default: False. |
optimize_for | enum | One of: opening, buying. Default: 'opening'. |
domain_id | string | Target domain. |
Get campaign email report
get_campaign_email_reportReadGet the detailed performance report of one email campaign.
Use when the user asks how a specific campaign performed (opens, clicks, revenue). Get the id from list_campaigns.
| Parameter | Type | Description |
|---|
campaign_idrequired | string | |
domain_id | string | Target domain. |
Get latest campaign
get_latest_campaignReadGet the most recently sent campaign (or the last few with limit, max 10).
Use when the user asks about their latest campaign.
| Parameter | Type | Description |
|---|
limit | integer | |
domain_id | string | Target domain. |
Domain8
List domains
list_domainsReadList the theMarketer domains this connection can operate on.
Use first when the account may manage multiple domains (shops) and you need to pick one: refer to a domain by its `name` (or `domain_id`) in the `domain_id` parameter of any other tool. Single-domain accounts never need this.
No parameters.
Update product feed URL
update_feed_urlWriteSet the catalog feed URL (product, category, or brand feed).
Use when the user wants theMarketer to import the catalog from a feed.
| Parameter | Type | Description |
|---|
urlrequired | string | |
type | enum | One of: product, category, brand. Default: 'product'. |
domain_id | string | Target domain. |
Update order feed URL
update_order_feed_urlWriteSet the orders feed URL for importing historical orders.
Use when the user wants theMarketer to sync orders from a feed.
| Parameter | Type | Description |
|---|
urlrequired | string | |
domain_id | string | Target domain. |
Send custom event
send_custom_eventWriteFire a custom event for a subscriber (triggers automations).
Use when the user wants to trigger automation flows tied to a custom event name. The platform prefixes the name with "__sm__" automatically.
| Parameter | Type | Description |
|---|
emailrequired | string | |
eventrequired | string | |
domain_id | string | Target domain. |
Validate domain
validate_domainReadValidate the account's email sending DNS setup (SPF/DKIM/DMARC).
Use when the user asks whether their sending domain is configured correctly or has deliverability problems.
| Parameter | Type | Description |
|---|
domain_id | string | Target domain. |
Get the account's billing details and usage costs.
Use when the user asks what they are paying / their plan usage.
| Parameter | Type | Description |
|---|
domain_id | string | Target domain. |
Check SMS credit
check_sms_creditReadGet the remaining SMS credit for the account.
Use before SMS sends or when the user asks about SMS balance.
| Parameter | Type | Description |
|---|
domain_id | string | Target domain. |
Verify connection
verify_connectionReadVerify that the connector's theMarketer credentials are valid.
Use to debug the connector setup; returns true when the credentials work.
| Parameter | Type | Description |
|---|
domain_id | string | Target domain. |
E-commerce9
Save order
save_orderWriteRecord an order in theMarketer (triggers automations, revenue stats).
Use when the user wants to sync/register a sale. Requires number, firstname, lastname, at least one product, and email_address or phone. Pass retail=true (with the store_* fields) for in-store/POS orders. Processing is queued; a true result means the order was accepted.
| Parameter | Type | Description |
|---|
numberrequired | string | |
firstnamerequired | string | |
lastnamerequired | string | |
productsrequired | object[] | |
email_address | string | |
phone | string | |
address | string | |
total_price | number | |
shipping_price | number | |
discount_code | string | |
discount_value | number | |
retail | boolean | Default: False. |
store_id | string | |
store_name | string | |
store_city | string | |
store_country | string | |
domain_id | string | Target domain. |
Update order status
update_order_statusWriteUpdate the status of an existing order (e.g. shipped, delivered, returned).
Use when the user wants to change an order's fulfillment status. Processing is queued; a true result means the update was accepted.
| Parameter | Type | Description |
|---|
order_numberrequired | string | |
order_statusrequired | string | |
domain_id | string | Target domain. |
Get e-commerce stats
get_ecommerce_statsReadGet ecommerce statistics for the last 30 days (orders, revenue, conversion).
Use when the user asks how the shop performed recently. The period is fixed by the API to the last 30 days.
| Parameter | Type | Description |
|---|
domain_id | string | Target domain. |
Get real-time visitors
get_realtime_visitorsReadGet the real-time visitor metrics for the website.
Use when the user asks who/how many people are on the site right now.
| Parameter | Type | Description |
|---|
domain_id | string | Target domain. |
Upsert product
upsert_productWriteCreate or update a product in the catalog.
Use to sync product data. mode="create" requires name, url, main_image, category, brand, price, sale_price (<= price), availability (0-2), stock and created_at ("YYYY-MM-DD HH:MM"); mode="update" needs only id plus the fields to change.
| Parameter | Type | Description |
|---|
idrequired | string | |
mode | enum | One of: create, update. Default: 'update'. |
name | string | |
url | string | |
main_image | string | |
category | string | |
brand | string | |
price | number | |
sale_price | number | |
availability | integer | |
stock | integer | |
created_at | string | |
acquisition_price | number | |
sku | string | |
description | string | |
domain_id | string | Target domain. |
Sync categories
sync_categoriesWriteCreate or update a product category.
Use to sync the catalog's category tree. hierarchy is the full path (e.g. "Home > Furniture > Chairs").
| Parameter | Type | Description |
|---|
idrequired | string | |
namerequired | string | |
hierarchyrequired | string | |
url | string | |
image_url | string | |
domain_id | string | Target domain. |
Sync brands
sync_brandsWriteCreate or update a product brand.
Use to sync the catalog's brand list.
| Parameter | Type | Description |
|---|
idrequired | string | |
namerequired | string | |
url | string | |
image_url | string | |
domain_id | string | Target domain. |
Get available coupons
get_available_couponsReadList the unused coupons available to a subscriber.
Use when the user asks what discount codes a contact can still use.
| Parameter | Type | Description |
|---|
emailrequired | string | |
domain_id | string | Target domain. |
Save coupon
save_couponWriteRegister a discount coupon, optionally assigned to one subscriber.
Use when the user wants to create/import a discount code so theMarketer can distribute it in campaigns. expiration_date is a date like YYYY-MM-DD; type is fixed (amount), percentage, or shipping (free shipping).
| Parameter | Type | Description |
|---|
coderequired | string | |
typerequired | enum | One of: fixed, percentage, shipping. |
valuerequired | number | |
expiration_daterequired | string | |
email | string | |
domain_id | string | Target domain. |
Reports2
Get one performance metric for a marketing channel over a date range.
Use when the user asks how email/SMS/push campaigns, automations, or signup forms performed (sends, opens, clicks, revenue, conversion, unsubscribes, form impressions...). For audience size and growth use get_subscribers_evolution or get_audience_report instead. Scope per channel: email/sms/push accept "campaigns" or "automation"; forms accepts "popups" or "embedded". Metrics per channel: email -> sent, opens, unique-opens, open-rate, unique-open-rate, clicks, unique-clicks, click-rate, unique-click-rate, transactions, revenue, conversion-rate, average-order-value, unsubscribed, unsubscribe-rate, complaints, complaint-rate, bounced, bounce-rate; sms/push -> same minus opens/bounces/complaints; forms -> total-impressions, impressions, total-subscribed-users, subscribed-users, total-subscribe-rate, subscribe-rate. Pass previous_start_date/previous_end_date to compare with a previous period.
| Parameter | Type | Description |
|---|
channelrequired | enum | One of: email, sms, push, forms. |
metricrequired | enum | One of: sent, open-rate, unique-open-rate, click-rate, unique-click-rate, opens, unique-opens, clicks, unique-clicks, transactions, revenue, conversion-rate, average-order-value, unsubscribed, complaints, bounced, bounce-rate, complaint-rate, unsubscribe-rate, total-impressions, total-subscribed-users, total-subscribe-rate, impressions, subscribed-users, subscribe-rate. |
start_daterequired | string | |
end_daterequired | string | |
scope | enum | One of: campaigns, automation, popups, embedded. Default: 'campaigns'. |
previous_start_date | string | |
previous_end_date | string | |
domain_id | string | Target domain. |
Get audience report
get_audience_reportReadGet the day-by-day history of an audience metric over a date range.
Use for trends: how the number of subscribers (email, SMS, push, loyalty) or the list hygiene (active/inactive/cleaned/bounced emails) evolved over time. For the current headcount and the last-7-day signups/unsubscribes per channel use get_subscribers_evolution, which is always up to date. For campaign performance use get_report. total-* metrics are end-of-day snapshots of the headcount: each day's value is the total on that day, not new signups, and total_period is the latest snapshot in the range. The subscribed-* metrics are not supported by theMarketer's reports engine yet and return an error. Pass previous_start_date/previous_end_date to compare with a previous period.
| Parameter | Type | Description |
|---|
metricrequired | enum | One of: total-subscribed-emails, total-subscribed-sms, total-subscribed-push, total-subscribed-loyalty, total-unsubscribed-emails, total-unsubscribed-sms, total-unsubscribed-push, total-unsubscribed-loyalty, total-active-emails, total-inactive-emails, total-cleaned-emails, total-bounced-emails, subscribed-emails, subscribed-sms, subscribed-push, subscribed-loyalty. |
start_daterequired | string | |
end_daterequired | string | |
previous_start_date | string | |
previous_end_date | string | |
domain_id | string | Target domain. |
Reviews4
Get product reviews
get_product_reviewsReadGet the product reviews feed.
Use when the user wants to see collected product reviews. The API returns an XML string feed (not JSON).
| Parameter | Type | Description |
|---|
page | integer | |
per_page | integer | |
domain_id | string | Target domain. |
Create product review
create_reviewWriteImport a customer review for an order (and optionally its products).
Use to import existing reviews (e.g. from another platform). review_date is a date string like YYYY-MM-DD.
| Parameter | Type | Description |
|---|
order_idrequired | string | |
review_daterequired | string | |
order_rating | integer | |
order_review | string | |
product_rating | integer | |
product_review | string | |
domain_id | string | Target domain. |
Add merchant review
add_merchant_reviewWriteAdd a product review on behalf of a customer (merchant import).
Use to attach a review to a product (by product id or SKU) for a given customer email; the contact is created as subscriber if missing.
| Parameter | Type | Description |
|---|
emailrequired | string | |
product_idrequired | string | |
rating | integer | |
content | string | |
name | string | |
date_created | string | |
domain_id | string | Target domain. |
Update MerchantPro settings
update_merchantpro_settingsWriteUpdate the MerchantPro integration settings (feeds and credentials).
Use only for shops on the MerchantPro platform; pass just the fields to change. Returns per-field success/failed status.
| Parameter | Type | Description |
|---|
product_feed_url | string | |
inventory_feed_url | string | |
order_feed_url | string | |
api_key | string | |
api_password | string | |
domain_id | string | Target domain. |
Transactional6
Send transactional email
send_transactional_emailWriteSend one transactional email (order confirmation, password reset...).
Use for one-off operational emails, not marketing campaigns (use create_campaign for those). This sends a real email — confirm the content and recipient first. Pass queue=true to enqueue instead of sending synchronously. Attachments are base64, max 7MB each / 15MB total. The recipient address must have a resolvable DNS (MX) record.
| Parameter | Type | Description |
|---|
torequired | string | |
subjectrequired | string | |
bodyrequired | string | |
sender | string | |
reply_to | string | |
bcc | string | |
attachments | object[] | |
queue | boolean | Default: False. |
domain_id | string | Target domain. |
Send transactional emails in bulk
send_transactional_emails_bulkWriteSend up to 100 transactional emails in one batch.
Use for operational sends to multiple recipients. This sends real emails — confirm with the user first. Pass send_async=true to enqueue the batch.
| Parameter | Type | Description |
|---|
emailsrequired | object[] | |
send_async | boolean | Default: False. |
domain_id | string | Target domain. |
Send transactional SMS
send_transactional_smsWriteSend one transactional SMS.
Use for operational SMS (order updates, codes). This sends a real SMS and consumes SMS credit — confirm with the user first. The recipient must start with + (international format) and have at least 10 digits after the country code.
| Parameter | Type | Description |
|---|
torequired | string | |
contentrequired | string | |
domain_id | string | Target domain. |
Get delivery logs
get_delivery_logsReadGet the email delivery logs for one recipient.
Use to debug whether/when emails reached a contact (delivered, bounced...). Paginated: per_page max 100; optional start/end dates.
| Parameter | Type | Description |
|---|
emailrequired | string | |
page | integer | Default: 1. |
per_page | integer | Default: 15. |
start | string | |
end | string | |
domain_id | string | Target domain. |
Set mobile push token
set_mobile_push_tokenWriteRegister a mobile push token for a subscriber.
Use when integrating a mobile app: links the device token (type e.g. ios/android) to the subscriber so they can receive push notifications. Note: the API may take ~10s to respond.
| Parameter | Type | Description |
|---|
emailrequired | string | |
typerequired | string | |
tokenrequired | string | |
domain_id | string | Target domain. |
Remove mobile push token
remove_mobile_push_tokenDestructiveRemove a subscriber's mobile push token.
Use when a device should stop receiving push notifications (logout, uninstall). The contact stops receiving mobile push on that platform.
| Parameter | Type | Description |
|---|
emailrequired | string | |
typerequired | string | |
domain_id | string | Target domain. |
To help us resolve it quickly, include your theMarketer domain, the assistant you use (Claude, ChatGPT, OpenClaw, ...), the approximate time and the exact error message shown. Please do not include passwords or API keys.