Skip to content

Connectors · Email & messaging

Dotdigital MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Dotdigital and the rest of your systems. It gives your agent 324 Dotdigital actions (170 reads, 107 writes and 47 that wait for a confirmation) and holds the Dotdigital credential itself, so the agent never does. It paces Dotdigital's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "dotdigital.address_books.list",  intent: "check which Dotdigital account is connected"}# Get lists · read · 1 upstream call
  • 324actionsin one signed file
  • 170readlook, never change
  • 107writecreate and update
  • 47wait for a yesdestructive, confirmed first

Set up

Connect Dotdigital in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Dotdigital.

    Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • api_userDotdigital API user email (Settings > Access > API users; it looks like [email protected])
    • api_passwordThe API user's password
    • regionYour Dotdigital region
    account { op: "connections.requirements", service: "dotdigital" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "dotdigital.address_books.list" }# get lists · read · 1 upstream callcheck { action: "dotdigital.address_books.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Dotdigital at a glance

Sign-in
Username and secret. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
api_userapi_password
Setup fields
region
Limits we pace to
2,000 calls an hour, per connection
API covered
Dotdigital API v2 + v3 services + CPaaS (OpenAPI documents for v3.5), at your Dotdigital instance's API base URL, which you enter when connecting (path -api.dotdigital.com)
Built from
Dotdigital's documentation, read 23 October 2026developer.dotdigital.comdeveloper.dotdigital.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
169 of 170 reads, for up to 5 minutes; a write clears what it affects
Shared entities
4, so ask can line Dotdigital up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Dotdigital.

324 actions in 66 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 170readlook, never change
  • 107writecreate and update
  • 47destructivewait for a confirmation
  1. Campaign activity

    22

    22 read · 0 write · 0 destructive

    Get campaign activity · Get campaign clicks · Get campaign clicks since date · Get campaign clicks and link groups

  2. Contacts

    22

    11 read · 10 write · 1 destructive

    Get contacts · Create contact · Get contact · Update contact

  3. Campaigns

    17

    10 read · 6 write · 1 destructive

    Get all campaigns · Create campaign · Get campaign · Update campaign

  4. Profiles

    17

    3 read · 8 write · 6 destructive

    Creates a new Profile · Query profiles · Retrieves a Profile · Updates or undeletes a Profile

  5. Address book contacts

    13

    5 read · 5 write · 3 destructive

    Get contacts from address book · Add contact to address book · Bulk import contacts in address book with merge option · Get modified contacts in address book since date

  6. Chats

    12

    3 read · 7 write · 2 destructive

    Retrieves a list of chats · Creates a new chat · Retrieves a chat · Updates a chat

  7. Cpaas analytics

    12

    12 read · 0 write · 0 destructive

    Retrieves chat analytics · Retrieves conversation message analytics · Retrieves live chat analytics · Retrieves message metrics

  8. Contacts V3

    10

    4 read · 4 write · 2 destructive

    Create a contact · Get contacts based on your criteria · Get a contact by an identifier · Deletes a contact using a specific identifier

58 more areas · 199 actions
  • Conversations 10
  • Address books 8
  • Insight data contact records 8
  • Transactional data 7
  • Webhooks 7
  • Chat team config 6
  • Insight data account records 6
  • Messages 6
  • SMS campaigns 6
  • Event subscriptions 5
  • Firehose configurations 5
  • Inbound rules 5
  • Insight data collections 5
  • Message templates 5
  • Preferences 5
  • Transactional emails 5
  • Whatsapp numbers 5
  • Chat messages 4
  • Contact imports 4
  • Contact preferences 4
  • Contact scores 4
  • Conversation messages 4
  • Email templates 4
  • Forms 4
  • Account 3
  • Campaign attachments 3
  • Custom identifiers 3
  • Data fields 3
  • Image folders 3
  • Insight data 3
  • Program enrolments 3
  • Segments 3
  • Sessions 3
  • Transactional data imports 3
  • Content 2
  • Document folders 2
  • Documents 2
  • Events 2
  • Form responses 2
  • Inbound messages 2
  • Marketing emails 2
  • Phone validation jobs 2
  • Presence 2
  • Profile opt in defaults 2
  • Programs 2
  • Transactional data collections 2
  • Whatsapp templates 2
  • Chat config 1
  • Custom from addresses 1
  • Ecommerce orders 1
  • Images 1
  • Phone validation 1
  • Product recommendations 1
  • Profile messages 1
  • SMS keywords 1
  • SMS messages 1
  • SMS numbers 1
  • SMS shortcodes 1

Top actions

The Dotdigital API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 36 of Dotdigital's 36 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
dotdigital.address_books.listGet listsGet lists.readcomm.audience.list26 connectors
dotdigital.address_book_contacts.listGet contacts from address bookGet contacts from address book.readcomm.audience_member.list23 connectors
dotdigital.segments.listGet segmentsGet segments.readcomm.audience_segment.list22 connectors
dotdigital.contacts.listGet contactsGet contacts.readcrm.contact.list177 connectors
dotdigital.address_books.createCreate listCreate list.writecomm.audience.create24 connectors
dotdigital.contacts.createCreate contactCreate contact.writecrm.contact.create161 connectors
dotdigital.address_books.deleteDelete listDelete list.destructivecomm.audience.delete21 connectors
dotdigital.campaigns.listGet all campaignsGet all campaigns.readcomm.campaign.list41 connectors
dotdigital.email_templates.listGet templatesGet templates.readcomm.email_template.list40 connectors
dotdigital.campaigns.createCreate campaignCreate campaign.writecomm.campaign.create38 connectors
dotdigital.email_templates.createCreate templateCreate template.writecomm.email_template.create34 connectors
dotdigital.chats.createCreates a new chatCreates a new chat.writecomm.chat.create15 connectors

Try it

Prompts to paste into Claude.

Each one names the Dotdigital actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Find the Dotdigital contacts with no email address, so we can clean them up.

    callsdotdigital.contacts.list

  2. Writewrite

    Create list in Dotdigital. Show me exactly what you will send before you save it.

    callsdotdigital.address_books.create

  3. Across systemsread

    Which contacts are in both Dotdigital and HaloPSA, and how many are in only one of them?

    callsdotdigital.contacts.listhalopsa.users.list

Across your systems

Dotdigital, joined to the rest of your business.

One ask fetches from Dotdigital and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

  • Which contacts are in both Dotdigital and HaloPSA, and how many are in only one of them?

    dotdigital.contacts.list + halopsa.users.list, on crm.contact · HaloPSA

  • Which contacts are in both Dotdigital and NetSuite, and how many are in only one of them?

    dotdigital.contacts.list + netsuite.views.contacts, on crm.contact · NetSuite

Also mapped by other connectorscrm.contact 192comm.audience 27comm.audience_segment 18comm.audience_member 16
ask
ask {  intent: "which contacts are in both Dotdigital and HaloPSA, and how many are in only one of them",  steps: [    { action: "dotdigital.contacts.list", as: "people", input: {}, limit: 100, max_pages: 5 },    { action: "halopsa.users.list", as: "people2", input: {}, limit: 100, max_pages: 5 },    { join: {        left: "people",        right: "people2",        on: "crm.contact",        group_by: "people.email",        select: ["people.email", "count(people2.id) as in_halopsa"]    } }  ]}
Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for Dotdigital

Destructive actions wait for a yes.

47 Dotdigital actions are destructive. The first 10:

  • Delete listdotdigital.address_books.delete
  • Delete contactdotdigital.contacts.delete
  • Delete campaigndotdigital.campaigns.delete
  • Deletes a Messagedotdigital.messages.delete
  • Deletes a chatdotdigital.chats.delete
  • Deletes webhookdotdigital.webhooks.delete
  • Delete a filedotdigital.content.delete
  • Deletes a Profiledotdigital.profiles.delete
  • Deletes a contact using a specific identifierdotdigital.contacts_v3.delete
  • Delete contact data fielddotdigital.data_fields.delete

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

dodotdigital.address_books.deleteconfirm_policy: human

Delete list?

intent: the user asked me to delete list

run suspended · waiting for a named person · key dotdigital-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "dotdigital-agent",  allowed_actions: ["dotdigital.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "dotdigital.address_books.delete", approver: "[email protected]" },    { match: "dotdigital.contacts.delete", approver: "[email protected]" },    { match: "dotdigital.campaigns.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Dotdigital only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Dotdigital costs on actionlake.

Every Dotdigital action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Dotdigital refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 324 Dotdigital actions
  • 324actions pageeach page of a long list is one call
  • 169reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Dotdigital action.

324 actions by area: the id your agent calls, what it does, and its effect.

Campaign activity22
  • dotdigital.campaign_activity.listGet campaign activityread
  • dotdigital.campaign_activity.list_clicksGet campaign clicksread
  • dotdigital.campaign_activity.list_clicks_sinceGet campaign clicks since dateread
  • dotdigital.campaign_activity.list_clicks_with_groupsGet campaign clicks and link groupsread
  • dotdigital.campaign_activity.get_contact_activityGet campaign activity for a contactread
  • dotdigital.campaign_activity.get_contact_revenueGet campaign revenue for contactread
  • and 16 more in this area
Contacts22
  • dotdigital.contacts.createCreate contactwrite
  • dotdigital.contacts.getGet contactread
  • dotdigital.contacts.listGet contactsread
  • dotdigital.contacts.updateUpdate contactwrite
  • dotdigital.contacts.countGet all contacts countread
  • dotdigital.contacts.create_with_consentCreate contact with consentwrite
  • and 16 more in this area
Campaigns17
  • dotdigital.campaigns.createCreate campaignwrite
  • dotdigital.campaigns.getGet campaignread
  • dotdigital.campaigns.listGet all campaignsread
  • dotdigital.campaigns.updateUpdate campaignwrite
  • dotdigital.campaigns.copyCopy campaignwrite
  • dotdigital.campaigns.create_split_testCreate split test campaignwrite
  • and 11 more in this area
Profiles17
  • dotdigital.profiles.createCreates a new Profilewrite
  • dotdigital.profiles.getRetrieves a Profileread
  • dotdigital.profiles.listQuery profilesread
  • dotdigital.profiles.updateUpdates or undeletes a Profilewrite
  • dotdigital.profiles.add_linkCreates a relationship where this profile is the primary and the linked profile is a childwrite
  • dotdigital.profiles.deleteDeletes a Profiledestructive
  • and 11 more in this area
Address book contacts13
  • dotdigital.address_book_contacts.addAdd contact to address bookwrite
  • dotdigital.address_book_contacts.importBulk import contacts in address book with merge optionwrite
  • dotdigital.address_book_contacts.listGet contacts from address bookread
  • dotdigital.address_book_contacts.list_modified_sinceGet modified contacts in address book since dateread
  • dotdigital.address_book_contacts.list_preference_opt_ins_sinceGet contacts with modified preference opt-in in address book since dateread
  • dotdigital.address_book_contacts.list_unsubscribed_sinceGet unsubscribed from list since dateread
  • and 7 more in this area
Chats12
  • dotdigital.chats.createCreates a new chatwrite
  • dotdigital.chats.getRetrieves a chatread
  • dotdigital.chats.listRetrieves a list of chatsread
  • dotdigital.chats.updateUpdates a chatwrite
  • dotdigital.chats.assignAssigns a chatwrite
  • dotdigital.chats.change_channelChanges the channel for an existing chatwrite
  • and 6 more in this area
Cpaas analytics12
  • dotdigital.cpaas_analytics.get_chatsRetrieves chat analyticsread
  • dotdigital.cpaas_analytics.get_conversation_messagesRetrieves conversation message analyticsread
  • dotdigital.cpaas_analytics.get_live_chatsRetrieves live chat analyticsread
  • dotdigital.cpaas_analytics.get_message_metricsRetrieves message metricsread
  • dotdigital.cpaas_analytics.get_messagesRetrieves message analyticsread
  • dotdigital.cpaas_analytics.get_sessionsRetrieves session analyticsread
  • and 6 more in this area
Contacts V310
  • dotdigital.contacts_v3.createCreate a contactwrite
  • dotdigital.contacts_v3.deleteDeletes a contact using a specific identifierdestructive
  • dotdigital.contacts_v3.getGet a contact by an identifierread
  • dotdigital.contacts_v3.listGet contacts based on your criteriaread
  • dotdigital.contacts_v3.delete_manyDelete multiple contactsdestructive
  • dotdigital.contacts_v3.get_deletion_statusGet the status of a delete contacts jobread
  • and 4 more in this area
Conversations10
  • dotdigital.conversations.createCreates a new conversationwrite
  • dotdigital.conversations.getRetrieves a conversationread
  • dotdigital.conversations.listRetrieves a list of conversationsread
  • dotdigital.conversations.updateUpdates a conversationwrite
  • dotdigital.conversations.add_participantsAdds a list of participants to a conversationwrite
  • dotdigital.conversations.deleteDeletes a conversationdestructive
  • and 4 more in this area
Address books8
  • dotdigital.address_books.createCreate listwrite
  • dotdigital.address_books.getGet listread
  • dotdigital.address_books.listGet listsread
  • dotdigital.address_books.updateUpdate listwrite
  • dotdigital.address_books.deleteDelete listdestructive
  • dotdigital.address_books.list_campaignsGet campaigns sent to address book or segmentread
  • and 2 more in this area
Insight data contact records8
  • dotdigital.insight_data_contact_records.deleteDelete record from Insight data collection for a contactdestructive
  • dotdigital.insight_data_contact_records.getRetrieve Insight data record for a contactread
  • dotdigital.insight_data_contact_records.listRetrieve records for a contact from Insight data collectionread
  • dotdigital.insight_data_contact_records.list_allRetrieve data for contact-scoped Insight data collectionread
  • dotdigital.insight_data_contact_records.delete_manyDeletes multiple records from an contact scoped Insight Data collectiondestructive
  • dotdigital.insight_data_contact_records.emptyEmpty Insight data collection for a contactdestructive
  • and 2 more in this area
Transactional data7
  • dotdigital.transactional_data.createAdd transactional data to contactwrite
  • dotdigital.transactional_data.deleteDelete transactional data by keydestructive
  • dotdigital.transactional_data.getGet transactional data by keyread
  • dotdigital.transactional_data.list_account_scopedGet account scoped transactional dataread
  • dotdigital.transactional_data.delete_for_contactDelete transactional data collection for contactdestructive
  • dotdigital.transactional_data.list_for_contactGet transactional data collection for contact by emailread
  • and 1 more in this area
Webhooks7
  • dotdigital.webhooks.createCreate webhookwrite
  • dotdigital.webhooks.getRetrieves webhook configurationread
  • dotdigital.webhooks.listGet webhooksread
  • dotdigital.webhooks.updateUpdate webhook configurationwrite
  • dotdigital.webhooks.deleteDeletes webhookdestructive
  • dotdigital.webhooks.list_available_eventsRetrieves available webhook eventsread
  • and 1 more in this area
Chat team config6
  • dotdigital.chat_team_config.deleteRemoves the config for a teamdestructive
  • dotdigital.chat_team_config.getRetrieves the members of a teamread
  • dotdigital.chat_team_config.update_app_messagingUpdate the App Messaging config for a teamwrite
  • dotdigital.chat_team_config.update_settingsUpdate general settings for a teamwrite
  • dotdigital.chat_team_config.delete_app_messagingRemoves the App Messaging config for a teamdestructive
  • dotdigital.chat_team_config.delete_settingsRemoves the settings for a teamdestructive
Insight data account records6
  • dotdigital.insight_data_account_records.deleteDelete record from an account Insight data collectiondestructive
  • dotdigital.insight_data_account_records.getRetrieve single record from an account Insight data collectionread
  • dotdigital.insight_data_account_records.listRetrieves records from an accounts Insight data collectionread
  • dotdigital.insight_data_account_records.list_collectionsList account Insight data collectionsread
  • dotdigital.insight_data_account_records.delete_manyDeletes multiple records from an account scoped Insight Data collectiondestructive
  • dotdigital.insight_data_account_records.putUpsert record into an account Insight data collectionwrite
Messages6
  • dotdigital.messages.deleteDeletes a Messagedestructive
  • dotdigital.messages.getRetrieves the current state of a specific messageread
  • dotdigital.messages.post_statusPosts a status for a messagewrite
  • dotdigital.messages.sendSend a new messagewrite
  • dotdigital.messages.redactPatches a Messagewrite
  • dotdigital.messages.send_batchSend a batch of new messageswrite
SMS campaigns6
  • dotdigital.sms_campaigns.createCreate SMS campaignwrite
  • dotdigital.sms_campaigns.getGet SMS campaignread
  • dotdigital.sms_campaigns.listGet SMS campaignsread
  • dotdigital.sms_campaigns.updateUpdate SMS campaignwrite
  • dotdigital.sms_campaigns.copyCopy SMS campaignwrite
  • dotdigital.sms_campaigns.deleteDelete SMS campaigndestructive
Event subscriptions5
  • dotdigital.event_subscriptions.createCreate subscriptionwrite
  • dotdigital.event_subscriptions.getGets subscriptionread
  • dotdigital.event_subscriptions.listList subscriptionsread
  • dotdigital.event_subscriptions.updateUpdate subscriptionwrite
  • dotdigital.event_subscriptions.deleteDeletes subscriptiondestructive
Firehose configurations5
  • dotdigital.firehose_configurations.createAdd configurationwrite
  • dotdigital.firehose_configurations.deleteDelete configurationdestructive
  • dotdigital.firehose_configurations.getGet configurationread
  • dotdigital.firehose_configurations.updateUpdate configurationwrite
  • dotdigital.firehose_configurations.update_statusUpdate configuration statuswrite
Inbound rules5
  • dotdigital.inbound_rules.createCreate a message rule configurationwrite
  • dotdigital.inbound_rules.getRetrieves single message rule configurationread
  • dotdigital.inbound_rules.listRetrieves a message rules configuration listread
  • dotdigital.inbound_rules.updateUpdate single message rule configurationwrite
  • dotdigital.inbound_rules.deleteDelete single message rule configurationdestructive
Insight data collections5
  • dotdigital.insight_data_collections.createCreates an Insight data collectionwrite
  • dotdigital.insight_data_collections.deleteDeletes an Insight data collectiondestructive
  • dotdigital.insight_data_collections.get_schemaGets the JSON schema for an Insight data collectionread
  • dotdigital.insight_data_collections.listLists all Insight data collectionsread
  • dotdigital.insight_data_collections.emptyEmpties an Insight data collectiondestructive
Message templates5
  • dotdigital.message_templates.createCreate a templatewrite
  • dotdigital.message_templates.getRetrieves a templateread
  • dotdigital.message_templates.listRetrieves a list of all available templatesread
  • dotdigital.message_templates.updateUpdates a templatewrite
  • dotdigital.message_templates.deleteDeletes a templatedestructive
Preferences5
  • dotdigital.preferences.createCreate preferencewrite
  • dotdigital.preferences.deleteDelete preferencedestructive
  • dotdigital.preferences.listGet preferencesread
  • dotdigital.preferences.updateUpdate preferencewrite
  • dotdigital.preferences.list_modified_sinceGet modified preferences since dateread
Transactional emails5
  • dotdigital.transactional_emails.sendSend transactional emailwrite
  • dotdigital.transactional_emails.send_batchSend batch transactional emailwrite
  • dotdigital.transactional_emails.send_triggered_campaignSend transactional email using a triggered campaignwrite
  • dotdigital.transactional_emails.send_triggered_campaign_batchSend batch transactional email using a triggered campaignwrite
  • dotdigital.transactional_emails.get_stats_sinceGet transactional email statisticsread
Whatsapp numbers5
  • dotdigital.whatsapp_numbers.createCreates WhatsApp configurationwrite
  • dotdigital.whatsapp_numbers.deleteRemoves WhatsApp numberdestructive
  • dotdigital.whatsapp_numbers.getGet WhatsApp numberread
  • dotdigital.whatsapp_numbers.listGet WhatsApp configuration for API Spaceread
  • dotdigital.whatsapp_numbers.registerRegisters WhatsApp numberwrite
Chat messages4
  • dotdigital.chat_messages.listRetrieves a chat's messages from an point (event) in time and works backwardsread
  • dotdigital.chat_messages.list_eventsRetrieves a chat's eventsread
  • dotdigital.chat_messages.post_status_updatesPosts message updates backwrite
  • dotdigital.chat_messages.sendSends a message to chatwrite
Contact imports4
  • dotdigital.contact_imports.createBulk import contactswrite
  • dotdigital.contact_imports.create_from_collectionBulk import contacts collectionwrite
  • dotdigital.contact_imports.getGet contact import statusread
  • dotdigital.contact_imports.get_reportGet contact import reportread
Contact preferences4
  • dotdigital.contact_preferences.getGet preferences for contactread
  • dotdigital.contact_preferences.list_contacts_opted_inGet contacts opted into a preferenceread
  • dotdigital.contact_preferences.list_opt_ins_sinceGet contacts with modified preference opt-in since dateread
  • dotdigital.contact_preferences.setSet preferences for contactwrite
Contact scores4
  • dotdigital.contact_scores.getGet scoring for contactread
  • dotdigital.contact_scores.listGet scoring for contactsread
  • dotdigital.contact_scores.list_for_address_bookGet scoring for contacts in address bookread
  • dotdigital.contact_scores.list_modified_sinceGet scoring modified since date for contactsread
Conversation messages4
  • dotdigital.conversation_messages.listRetrieves a conversation's messages from an point (event) in time and works backwardsread
  • dotdigital.conversation_messages.list_eventsRetrieves a conversation's eventsread
  • dotdigital.conversation_messages.post_status_updatesPosts message updates backwrite
  • dotdigital.conversation_messages.sendSends a message to conversationwrite
Email templates4
  • dotdigital.email_templates.createCreate templatewrite
  • dotdigital.email_templates.getGet template by idread
  • dotdigital.email_templates.listGet templatesread
  • dotdigital.email_templates.updateUpdate templatewrite
Forms4
  • dotdigital.forms.getGet form by IDread
  • dotdigital.forms.listGet formsread
  • dotdigital.forms.list_fieldsGet form fieldsread
  • dotdigital.forms.list_with_activity_sinceGet forms with activity since dateread
Account3
  • dotdigital.account.empty_recycle_binEmpty recycle bindestructive
  • dotdigital.account.getGet account informationread
  • dotdigital.account.get_server_timeGet server timeread
Campaign attachments3
  • dotdigital.campaign_attachments.addAdd campaign attachmentwrite
  • dotdigital.campaign_attachments.listGet campaign attachmentsread
  • dotdigital.campaign_attachments.removeRemove campaign attachmentdestructive
Custom identifiers3
  • dotdigital.custom_identifiers.createCreates a custom identifierwrite
  • dotdigital.custom_identifiers.deleteDelete a custom identifier by namedestructive
  • dotdigital.custom_identifiers.listGet all custom identifiersread
Data fields3
  • dotdigital.data_fields.createCreate contact data fieldwrite
  • dotdigital.data_fields.deleteDelete contact data fielddestructive
  • dotdigital.data_fields.listGet contact data fieldsread
Image folders3
  • dotdigital.image_folders.createCreate image folderwrite
  • dotdigital.image_folders.getGet image folders by idread
  • dotdigital.image_folders.listGet image foldersread
Insight data3
  • dotdigital.insight_data.get_async_job_statusRetrieve the status of an asynchronous requestread
  • dotdigital.insight_data.get_import_statusRetrieve the status of an Insight data import requestread
  • dotdigital.insight_data.importBulk imports Insight datawrite
Program enrolments3
  • dotdigital.program_enrolments.createCreate program enrolmentwrite
  • dotdigital.program_enrolments.getGets an enrolment by IDread
  • dotdigital.program_enrolments.list_by_statusGets enrolments by statusread
Segments3
  • dotdigital.segments.get_refresh_progressGet refresh progress for segmentread
  • dotdigital.segments.listGet segmentsread
  • dotdigital.segments.refreshRefresh segmentwrite
Sessions3
  • dotdigital.sessions.endEnds a session, revoking access to servicesdestructive
  • dotdigital.sessions.getRetrieves details about a sessionread
  • dotdigital.sessions.get_anonymous_tokenGets a token that can be used to start an anonymous sessionread
Transactional data imports3
  • dotdigital.transactional_data_imports.createBulk add transactional data to contactswrite
  • dotdigital.transactional_data_imports.getGet transactional data import statusread
  • dotdigital.transactional_data_imports.get_reportGet transactional data import reportread
Content2
  • dotdigital.content.deleteDelete a filedestructive
  • dotdigital.content.uploadUpload a filewrite
Document folders2
  • dotdigital.document_folders.createCreate document folderwrite
  • dotdigital.document_folders.listGet document foldersread
Documents2
  • dotdigital.documents.listGet documents in folderread
  • dotdigital.documents.uploadUpload documentwrite
Events2
  • dotdigital.events.exportRetrieve eventsread
  • dotdigital.events.importImport a collection of eventswrite
Form responses2
  • dotdigital.form_responses.listGet form responsesread
  • dotdigital.form_responses.list_with_activity_sinceGet form responses with activity since dateread
Inbound messages2
  • dotdigital.inbound_messages.createPosts an inbound messagewrite
  • dotdigital.inbound_messages.post_statusPosts a status for an inboundwrite
Marketing emails2
  • dotdigital.marketing_emails.sendSend marketing emailwrite
  • dotdigital.marketing_emails.send_batchSend batch marketing emailswrite
Phone validation jobs2
  • dotdigital.phone_validation_jobs.getGet bulk job detailsread
  • dotdigital.phone_validation_jobs.listList bulk validation jobsread
Presence2
  • dotdigital.presence.list_agentsRetrieves the presence for a list of agent's profileIdsread
  • dotdigital.presence.list_app_messaging_usersRetrieves the presence for a list of user's profileIdsread
Profile opt in defaults2
  • dotdigital.profile_opt_in_defaults.getGets default profiles opt in/out options for each channel in channel serviceread
  • dotdigital.profile_opt_in_defaults.setSet default profiles opt in/out options for each channel in channel servicewrite
Programs2
  • dotdigital.programs.getGet program by IDread
  • dotdigital.programs.listGet programsread
Transactional data collections2
  • dotdigital.transactional_data_collections.emptyEmpty transactional data collectiondestructive
  • dotdigital.transactional_data_collections.listGet transactional data collectionsread
Whatsapp templates2
  • dotdigital.whatsapp_templates.getGet WhatsApp templateread
  • dotdigital.whatsapp_templates.listGet WhatsApp templatesread
Chat config1
  • dotdigital.chat_config.getRetrieves the chat configuration for an apiSpaceread
Custom from addresses1
  • dotdigital.custom_from_addresses.listGet custom from addressesread
Ecommerce orders1
  • dotdigital.ecommerce_orders.listGet orders since dateread
Images1
  • dotdigital.images.uploadUpload imagewrite
Phone validation1
  • dotdigital.phone_validation.validateValidate a single numberread
Product recommendations1
  • dotdigital.product_recommendations.listGet all product recommendationsread
Profile messages1
  • dotdigital.profile_messages.listRetrieves message history for the specified profile. Messages retrieved from the date spacified (default now), in desce…read
SMS keywords1
  • dotdigital.sms_keywords.listGet SMS keywordsread
SMS messages1
  • dotdigital.sms_messages.sendSend SMS messagewrite
SMS numbers1
  • dotdigital.sms_numbers.listGet SMS phone numbersread
SMS shortcodes1
  • dotdigital.sms_shortcodes.listGet SMS shortcodesread

This index shows a sample of each area. All 324 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.

Questions

The Dotdigital MCP server, answered.

Is there a Dotdigital MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 324 Dotdigital actions across campaign activity, contacts, campaigns and profiles, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Dotdigital.

What do I need to connect Dotdigital?

Dotdigital API user email (Settings > Access > API users; it looks like [email protected]) and The API user's password. Plus your region. The free call account { op: "connections.requirements", service: "dotdigital" } lists exactly what to paste.

Can an AI agent delete or change things in Dotdigital?

Only if its key allows it, and only with an explicit confirmation. 47 Dotdigital actions are destructive, including delete list, delete contact and delete campaign. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Dotdigital API limit?

actionlake paces every call to the limits in the Dotdigital service file: 2,000 calls an hour per connection. Repeated reads are answered from cache (169 Dotdigital actions can be), which never reaches Dotdigital.

What does a Dotdigital action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (324 Dotdigital actions page). Cache hits, searches, dry runs and calls Dotdigital refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Dotdigital API does it cover?

The Dotdigital API v2 + v3 services + CPaaS (OpenAPI documents for v3.5) at your Dotdigital instance's API base URL, which you enter when connecting (path -api.dotdigital.com). It is built from Dotdigital's documentation as read on 23 October 2026. 324 actions in 66 areas, each one in the signed service file (version 1.0.0).

Can I combine Dotdigital with my other systems?

Yes. ask joins Dotdigital to HaloPSA or NetSuite on the same customer and returns the answer rather than every row. Dotdigital maps crm.contact, which 192 other connectors also map.

Does actionlake keep my Dotdigital data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Dotdigital credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Dotdigital today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.