Documentation

theMarketer MCP Server · 47 tools

Endpoint: https://mcp.themarketer.com/mcp

Overview

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.

Setup instructions for each client are on the setup guide.

Example prompts

Tool reference

Read reads data only Write creates or updates data Destructive deletes or irreversibly changes data

Shared parameters

Accepted by every tool that operates on a domain. Optional unless noted in the tool.

ParameterTypeDescription
domain_idstringtheMarketer domain to operate on: its name/hostname (e.g. 'shop.example') or domain id, as returned by list_domains. Required only when the account has access to multiple domains; omit for single-domain accounts.

Audience12

Add subscriber

add_subscriberWrite

Add (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.

ParameterTypeDescription
emailrequiredstring
firstnamestring
lastnamestring
phonestring
citystring
countrystring
birthdaystring
add_tagsstring[]
syncbooleanDefault: False.
domain_idstringTarget domain.

Add subscriber by phone

add_subscriber_by_phoneWrite

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

ParameterTypeDescription
phonerequiredstring
firstnamestring
lastnamestring
domain_idstringTarget domain.

Add subscribers in bulk

add_subscribers_bulkWrite

Add multiple subscribers in one call.

Use for bulk imports (e.g. a list of contacts). Each entry needs at least an email.

ParameterTypeDescription
subscribersrequiredobject[]
domain_idstringTarget domain.

Get subscriber status

get_subscriber_statusRead

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

ParameterTypeDescription
emailrequiredstring
domain_idstringTarget domain.

List subscribers

list_subscribersRead

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

ParameterTypeDescription
statusenumOne of: subscribed, unsubscribed. Default: 'subscribed'.
date_fromstring
date_tostring
domain_idstringTarget domain.

Update subscriber tags

update_subscriber_tagsWrite

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

ParameterTypeDescription
emailrequiredstring
add_tagsrequiredstring[]
remove_tagsstring[]
overwrite_existingbooleanDefault: False.
domain_idstringTarget domain.

Get subscribers evolution

get_subscribers_evolutionRead

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

ParameterTypeDescription
domain_idstringTarget domain.

Get automation entries

get_entered_automationRead

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

ParameterTypeDescription
dayrequiredstring
pageintegerDefault: 1.
per_pageintegerDefault: 50.
domain_idstringTarget domain.

Remove subscriber

remove_subscriberDestructive

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

ParameterTypeDescription
emailrequiredstring
channelsenum[]
domain_idstringTarget domain.

Delete subscriber

delete_subscriberDestructive

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

ParameterTypeDescription
emailstring
phonestring
domain_idstringTarget domain.

Anonymize subscriber

anonymize_subscriberDestructive

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

ParameterTypeDescription
emailrequiredstring
domain_idstringTarget domain.

Campaigns4

List campaigns

list_campaignsRead

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

ParameterTypeDescription
searchstring
typeenumOne of: email, sms, push.
start_datestring
pageintegerDefault: 1.
limitintegerDefault: 20.
domain_idstringTarget domain.

Create campaign

create_campaignWrite

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

ParameterTypeDescription
typerequiredenumOne of: email, sms, push.
moderequiredenumOne of: ecommerce, regular, plaintext.
namerequiredstring
subject_linerequiredstring
preview_textrequiredstring
htmlrequiredstring
sender_namerequiredstring
sender_emailrequiredstring
reply_torequiredstring
send_atrequiredstring
utm_campaignrequiredstring
utm_mediumrequiredstring
utm_sourcerequiredstring
smart_sendingbooleanDefault: True.
use_optimal_timebooleanDefault: False.
optimize_forenumOne of: opening, buying. Default: 'opening'.
domain_idstringTarget domain.

Get campaign email report

get_campaign_email_reportRead

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

ParameterTypeDescription
campaign_idrequiredstring
domain_idstringTarget domain.

Get latest campaign

get_latest_campaignRead

Get the most recently sent campaign (or the last few with limit, max 10).

Use when the user asks about their latest campaign.

ParameterTypeDescription
limitinteger
domain_idstringTarget domain.

Domain8

List domains

list_domainsRead

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

Set the catalog feed URL (product, category, or brand feed).

Use when the user wants theMarketer to import the catalog from a feed.

ParameterTypeDescription
urlrequiredstring
typeenumOne of: product, category, brand. Default: 'product'.
domain_idstringTarget domain.

Update order feed URL

update_order_feed_urlWrite

Set the orders feed URL for importing historical orders.

Use when the user wants theMarketer to sync orders from a feed.

ParameterTypeDescription
urlrequiredstring
domain_idstringTarget domain.

Send custom event

send_custom_eventWrite

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

ParameterTypeDescription
emailrequiredstring
eventrequiredstring
domain_idstringTarget domain.

Validate domain

validate_domainRead

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

ParameterTypeDescription
domain_idstringTarget domain.

Get costs

get_costsRead

Get the account's billing details and usage costs.

Use when the user asks what they are paying / their plan usage.

ParameterTypeDescription
domain_idstringTarget domain.

Check SMS credit

check_sms_creditRead

Get the remaining SMS credit for the account.

Use before SMS sends or when the user asks about SMS balance.

ParameterTypeDescription
domain_idstringTarget domain.

Verify connection

verify_connectionRead

Verify that the connector's theMarketer credentials are valid.

Use to debug the connector setup; returns true when the credentials work.

ParameterTypeDescription
domain_idstringTarget domain.

E-commerce9

Save order

save_orderWrite

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

ParameterTypeDescription
numberrequiredstring
firstnamerequiredstring
lastnamerequiredstring
productsrequiredobject[]
email_addressstring
phonestring
addressstring
total_pricenumber
shipping_pricenumber
discount_codestring
discount_valuenumber
retailbooleanDefault: False.
store_idstring
store_namestring
store_citystring
store_countrystring
domain_idstringTarget domain.

Update order status

update_order_statusWrite

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

ParameterTypeDescription
order_numberrequiredstring
order_statusrequiredstring
domain_idstringTarget domain.

Get e-commerce stats

get_ecommerce_statsRead

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

ParameterTypeDescription
domain_idstringTarget domain.

Get real-time visitors

get_realtime_visitorsRead

Get the real-time visitor metrics for the website.

Use when the user asks who/how many people are on the site right now.

ParameterTypeDescription
domain_idstringTarget domain.

Upsert product

upsert_productWrite

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

ParameterTypeDescription
idrequiredstring
modeenumOne of: create, update. Default: 'update'.
namestring
urlstring
main_imagestring
categorystring
brandstring
pricenumber
sale_pricenumber
availabilityinteger
stockinteger
created_atstring
acquisition_pricenumber
skustring
descriptionstring
domain_idstringTarget domain.

Sync categories

sync_categoriesWrite

Create or update a product category.

Use to sync the catalog's category tree. hierarchy is the full path (e.g. "Home > Furniture > Chairs").

ParameterTypeDescription
idrequiredstring
namerequiredstring
hierarchyrequiredstring
urlstring
image_urlstring
domain_idstringTarget domain.

Sync brands

sync_brandsWrite

Create or update a product brand.

Use to sync the catalog's brand list.

ParameterTypeDescription
idrequiredstring
namerequiredstring
urlstring
image_urlstring
domain_idstringTarget domain.

Get available coupons

get_available_couponsRead

List the unused coupons available to a subscriber.

Use when the user asks what discount codes a contact can still use.

ParameterTypeDescription
emailrequiredstring
domain_idstringTarget domain.

Save coupon

save_couponWrite

Register 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).

ParameterTypeDescription
coderequiredstring
typerequiredenumOne of: fixed, percentage, shipping.
valuerequirednumber
expiration_daterequiredstring
emailstring
domain_idstringTarget domain.

Loyalty2

Get loyalty info

get_loyalty_infoRead

Get a subscriber's loyalty program status (points, tier, rewards).

Use when the user asks about a contact's loyalty points or level.

ParameterTypeDescription
emailrequiredstring
domain_idstringTarget domain.

Manage loyalty points

manage_loyalty_pointsWrite

Increase or decrease a subscriber's loyalty points.

Use when the user wants to award or deduct points (e.g. a manual correction or a reward). This changes the customer's balance — confirm the amount first.

ParameterTypeDescription
emailrequiredstring
actionrequiredenumOne of: increase, decrease.
pointsrequiredintegerNumber of points, at least 1
domain_idstringTarget domain.

Reports2

Get report

get_reportRead

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.

ParameterTypeDescription
channelrequiredenumOne of: email, sms, push, forms.
metricrequiredenumOne 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_daterequiredstring
end_daterequiredstring
scopeenumOne of: campaigns, automation, popups, embedded. Default: 'campaigns'.
previous_start_datestring
previous_end_datestring
domain_idstringTarget domain.

Get audience report

get_audience_reportRead

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

ParameterTypeDescription
metricrequiredenumOne 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_daterequiredstring
end_daterequiredstring
previous_start_datestring
previous_end_datestring
domain_idstringTarget domain.

Reviews4

Get product reviews

get_product_reviewsRead

Get the product reviews feed.

Use when the user wants to see collected product reviews. The API returns an XML string feed (not JSON).

ParameterTypeDescription
pageinteger
per_pageinteger
domain_idstringTarget domain.

Create product review

create_reviewWrite

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

ParameterTypeDescription
order_idrequiredstring
review_daterequiredstring
order_ratinginteger
order_reviewstring
product_ratinginteger
product_reviewstring
domain_idstringTarget domain.

Add merchant review

add_merchant_reviewWrite

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

ParameterTypeDescription
emailrequiredstring
product_idrequiredstring
ratinginteger
contentstring
namestring
date_createdstring
domain_idstringTarget domain.

Update MerchantPro settings

update_merchantpro_settingsWrite

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

ParameterTypeDescription
product_feed_urlstring
inventory_feed_urlstring
order_feed_urlstring
api_keystring
api_passwordstring
domain_idstringTarget domain.

Transactional6

Send transactional email

send_transactional_emailWrite

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

ParameterTypeDescription
torequiredstring
subjectrequiredstring
bodyrequiredstring
senderstring
reply_tostring
bccstring
attachmentsobject[]
queuebooleanDefault: False.
domain_idstringTarget domain.

Send transactional emails in bulk

send_transactional_emails_bulkWrite

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

ParameterTypeDescription
emailsrequiredobject[]
send_asyncbooleanDefault: False.
domain_idstringTarget domain.

Send transactional SMS

send_transactional_smsWrite

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

ParameterTypeDescription
torequiredstring
contentrequiredstring
domain_idstringTarget domain.

Get delivery logs

get_delivery_logsRead

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

ParameterTypeDescription
emailrequiredstring
pageintegerDefault: 1.
per_pageintegerDefault: 15.
startstring
endstring
domain_idstringTarget domain.

Set mobile push token

set_mobile_push_tokenWrite

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

ParameterTypeDescription
emailrequiredstring
typerequiredstring
tokenrequiredstring
domain_idstringTarget domain.

Remove mobile push token

remove_mobile_push_tokenDestructive

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

ParameterTypeDescription
emailrequiredstring
typerequiredstring
domain_idstringTarget domain.

Troubleshooting

The assistant says it is not connected / asks me to authenticate again.
Your session expired or was revoked. Click Connect (or Authenticate) on the connector and sign in again with your theMarketer ID.
Sign-in window never appears.
Allow popups for your assistant's site (claude.ai, chatgpt.com), then retry. In ChatGPT, Developer mode must be enabled and, on Business/Enterprise plans, allowed by your workspace admin.
"Domain not found" or "you do not have access to this domain".
Your theMarketer account has several domains. Ask the assistant to list domains and then name the domain explicitly, or make sure your theMarketer user has access to it.
A tool returns "rate limit exceeded".
Requests are limited per account per minute. Wait a moment and retry, or combine several questions into one.
Access denied / insufficient scope.
Disconnect the connector and connect again; on the consent screen approve the requested read and write scopes.
I want to stop the assistant from accessing my account.
Remove the connector in your assistant's settings. Tokens held by the MCP Server become unusable and expire.

Support

Email support@themarketer.com.

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.