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/mcpdo { 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.
- 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 - 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 passwordregionYour Dotdigital region
account { op: "connections.requirements", service: "dotdigital" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates 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
Campaign activity
2222 read · 0 write · 0 destructive
Get campaign activity · Get campaign clicks · Get campaign clicks since date · Get campaign clicks and link groups
Contacts
2211 read · 10 write · 1 destructive
Get contacts · Create contact · Get contact · Update contact
Campaigns
1710 read · 6 write · 1 destructive
Get all campaigns · Create campaign · Get campaign · Update campaign
Profiles
173 read · 8 write · 6 destructive
Creates a new Profile · Query profiles · Retrieves a Profile · Updates or undeletes a Profile
Address book contacts
135 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
Chats
123 read · 7 write · 2 destructive
Retrieves a list of chats · Creates a new chat · Retrieves a chat · Updates a chat
Cpaas analytics
1212 read · 0 write · 0 destructive
Retrieves chat analytics · Retrieves conversation message analytics · Retrieves live chat analytics · Retrieves message metrics
Contacts V3
104 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.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
dotdigital.address_books.listGet lists | Get lists. | read | comm.audience.list26 connectors |
dotdigital.address_book_contacts.listGet contacts from address book | Get contacts from address book. | read | comm.audience_member.list23 connectors |
dotdigital.segments.listGet segments | Get segments. | read | comm.audience_segment.list22 connectors |
dotdigital.contacts.listGet contacts | Get contacts. | read | crm.contact.list177 connectors |
dotdigital.address_books.createCreate list | Create list. | write | comm.audience.create24 connectors |
dotdigital.contacts.createCreate contact | Create contact. | write | crm.contact.create161 connectors |
dotdigital.address_books.deleteDelete list | Delete list. | destructive | comm.audience.delete21 connectors |
dotdigital.campaigns.listGet all campaigns | Get all campaigns. | read | comm.campaign.list41 connectors |
dotdigital.email_templates.listGet templates | Get templates. | read | comm.email_template.list40 connectors |
dotdigital.campaigns.createCreate campaign | Create campaign. | write | comm.campaign.create38 connectors |
dotdigital.email_templates.createCreate template | Create template. | write | comm.email_template.create34 connectors |
dotdigital.chats.createCreates a new chat | Creates a new chat. | write | comm.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.
- Readread
Find the Dotdigital contacts with no email address, so we can clean them up.
calls
dotdigital.contacts.list - Writewrite
Create list in Dotdigital. Show me exactly what you will send before you save it.
calls
dotdigital.address_books.create - Across systemsread
Which contacts are in both Dotdigital and HaloPSA, and how many are in only one of them?
calls
dotdigital.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, oncrm.contact· HaloPSAWhich contacts are in both Dotdigital and NetSuite, and how many are in only one of them?
dotdigital.contacts.list+netsuite.views.contacts, oncrm.contact· NetSuite
crm.contact 192comm.audience 27comm.audience_segment 18comm.audience_member 16ask { 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"] } } ]}Governance for Dotdigital
Destructive actions wait for a yes.
47 Dotdigital actions are destructive. The first 10:
- Delete list
dotdigital.address_books.delete - Delete contact
dotdigital.contacts.delete - Delete campaign
dotdigital.campaigns.delete - Deletes a Message
dotdigital.messages.delete - Deletes a chat
dotdigital.chats.delete - Deletes webhook
dotdigital.webhooks.delete - Delete a file
dotdigital.content.delete - Deletes a Profile
dotdigital.profiles.delete - Deletes a contact using a specific identifier
dotdigital.contacts_v3.delete - Delete contact data field
dotdigital.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.
Delete list?
intent: the user asked me to delete list
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]" } ]}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
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 activityreaddotdigital.campaign_activity.list_clicksGet campaign clicksreaddotdigital.campaign_activity.list_clicks_sinceGet campaign clicks since datereaddotdigital.campaign_activity.list_clicks_with_groupsGet campaign clicks and link groupsreaddotdigital.campaign_activity.get_contact_activityGet campaign activity for a contactreaddotdigital.campaign_activity.get_contact_revenueGet campaign revenue for contactread- and 16 more in this area
Contacts22
dotdigital.contacts.createCreate contactwritedotdigital.contacts.getGet contactreaddotdigital.contacts.listGet contactsreaddotdigital.contacts.updateUpdate contactwritedotdigital.contacts.countGet all contacts countreaddotdigital.contacts.create_with_consentCreate contact with consentwrite- and 16 more in this area
Campaigns17
dotdigital.campaigns.createCreate campaignwritedotdigital.campaigns.getGet campaignreaddotdigital.campaigns.listGet all campaignsreaddotdigital.campaigns.updateUpdate campaignwritedotdigital.campaigns.copyCopy campaignwritedotdigital.campaigns.create_split_testCreate split test campaignwrite- and 11 more in this area
Profiles17
dotdigital.profiles.createCreates a new Profilewritedotdigital.profiles.getRetrieves a Profilereaddotdigital.profiles.listQuery profilesreaddotdigital.profiles.updateUpdates or undeletes a Profilewritedotdigital.profiles.add_linkCreates a relationship where this profile is the primary and the linked profile is a childwritedotdigital.profiles.deleteDeletes a Profiledestructive- and 11 more in this area
Address book contacts13
dotdigital.address_book_contacts.addAdd contact to address bookwritedotdigital.address_book_contacts.importBulk import contacts in address book with merge optionwritedotdigital.address_book_contacts.listGet contacts from address bookreaddotdigital.address_book_contacts.list_modified_sinceGet modified contacts in address book since datereaddotdigital.address_book_contacts.list_preference_opt_ins_sinceGet contacts with modified preference opt-in in address book since datereaddotdigital.address_book_contacts.list_unsubscribed_sinceGet unsubscribed from list since dateread- and 7 more in this area
Chats12
dotdigital.chats.createCreates a new chatwritedotdigital.chats.getRetrieves a chatreaddotdigital.chats.listRetrieves a list of chatsreaddotdigital.chats.updateUpdates a chatwritedotdigital.chats.assignAssigns a chatwritedotdigital.chats.change_channelChanges the channel for an existing chatwrite- and 6 more in this area
Cpaas analytics12
dotdigital.cpaas_analytics.get_chatsRetrieves chat analyticsreaddotdigital.cpaas_analytics.get_conversation_messagesRetrieves conversation message analyticsreaddotdigital.cpaas_analytics.get_live_chatsRetrieves live chat analyticsreaddotdigital.cpaas_analytics.get_message_metricsRetrieves message metricsreaddotdigital.cpaas_analytics.get_messagesRetrieves message analyticsreaddotdigital.cpaas_analytics.get_sessionsRetrieves session analyticsread- and 6 more in this area
Contacts V310
dotdigital.contacts_v3.createCreate a contactwritedotdigital.contacts_v3.deleteDeletes a contact using a specific identifierdestructivedotdigital.contacts_v3.getGet a contact by an identifierreaddotdigital.contacts_v3.listGet contacts based on your criteriareaddotdigital.contacts_v3.delete_manyDelete multiple contactsdestructivedotdigital.contacts_v3.get_deletion_statusGet the status of a delete contacts jobread- and 4 more in this area
Conversations10
dotdigital.conversations.createCreates a new conversationwritedotdigital.conversations.getRetrieves a conversationreaddotdigital.conversations.listRetrieves a list of conversationsreaddotdigital.conversations.updateUpdates a conversationwritedotdigital.conversations.add_participantsAdds a list of participants to a conversationwritedotdigital.conversations.deleteDeletes a conversationdestructive- and 4 more in this area
Address books8
dotdigital.address_books.createCreate listwritedotdigital.address_books.getGet listreaddotdigital.address_books.listGet listsreaddotdigital.address_books.updateUpdate listwritedotdigital.address_books.deleteDelete listdestructivedotdigital.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 contactdestructivedotdigital.insight_data_contact_records.getRetrieve Insight data record for a contactreaddotdigital.insight_data_contact_records.listRetrieve records for a contact from Insight data collectionreaddotdigital.insight_data_contact_records.list_allRetrieve data for contact-scoped Insight data collectionreaddotdigital.insight_data_contact_records.delete_manyDeletes multiple records from an contact scoped Insight Data collectiondestructivedotdigital.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 contactwritedotdigital.transactional_data.deleteDelete transactional data by keydestructivedotdigital.transactional_data.getGet transactional data by keyreaddotdigital.transactional_data.list_account_scopedGet account scoped transactional datareaddotdigital.transactional_data.delete_for_contactDelete transactional data collection for contactdestructivedotdigital.transactional_data.list_for_contactGet transactional data collection for contact by emailread- and 1 more in this area
Webhooks7
dotdigital.webhooks.createCreate webhookwritedotdigital.webhooks.getRetrieves webhook configurationreaddotdigital.webhooks.listGet webhooksreaddotdigital.webhooks.updateUpdate webhook configurationwritedotdigital.webhooks.deleteDeletes webhookdestructivedotdigital.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 teamdestructivedotdigital.chat_team_config.getRetrieves the members of a teamreaddotdigital.chat_team_config.update_app_messagingUpdate the App Messaging config for a teamwritedotdigital.chat_team_config.update_settingsUpdate general settings for a teamwritedotdigital.chat_team_config.delete_app_messagingRemoves the App Messaging config for a teamdestructivedotdigital.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 collectiondestructivedotdigital.insight_data_account_records.getRetrieve single record from an account Insight data collectionreaddotdigital.insight_data_account_records.listRetrieves records from an accounts Insight data collectionreaddotdigital.insight_data_account_records.list_collectionsList account Insight data collectionsreaddotdigital.insight_data_account_records.delete_manyDeletes multiple records from an account scoped Insight Data collectiondestructivedotdigital.insight_data_account_records.putUpsert record into an account Insight data collectionwrite
Messages6
dotdigital.messages.deleteDeletes a Messagedestructivedotdigital.messages.getRetrieves the current state of a specific messagereaddotdigital.messages.post_statusPosts a status for a messagewritedotdigital.messages.sendSend a new messagewritedotdigital.messages.redactPatches a Messagewritedotdigital.messages.send_batchSend a batch of new messageswrite
SMS campaigns6
dotdigital.sms_campaigns.createCreate SMS campaignwritedotdigital.sms_campaigns.getGet SMS campaignreaddotdigital.sms_campaigns.listGet SMS campaignsreaddotdigital.sms_campaigns.updateUpdate SMS campaignwritedotdigital.sms_campaigns.copyCopy SMS campaignwritedotdigital.sms_campaigns.deleteDelete SMS campaigndestructive
Event subscriptions5
dotdigital.event_subscriptions.createCreate subscriptionwritedotdigital.event_subscriptions.getGets subscriptionreaddotdigital.event_subscriptions.listList subscriptionsreaddotdigital.event_subscriptions.updateUpdate subscriptionwritedotdigital.event_subscriptions.deleteDeletes subscriptiondestructive
Firehose configurations5
dotdigital.firehose_configurations.createAdd configurationwritedotdigital.firehose_configurations.deleteDelete configurationdestructivedotdigital.firehose_configurations.getGet configurationreaddotdigital.firehose_configurations.updateUpdate configurationwritedotdigital.firehose_configurations.update_statusUpdate configuration statuswrite
Inbound rules5
dotdigital.inbound_rules.createCreate a message rule configurationwritedotdigital.inbound_rules.getRetrieves single message rule configurationreaddotdigital.inbound_rules.listRetrieves a message rules configuration listreaddotdigital.inbound_rules.updateUpdate single message rule configurationwritedotdigital.inbound_rules.deleteDelete single message rule configurationdestructive
Insight data collections5
dotdigital.insight_data_collections.createCreates an Insight data collectionwritedotdigital.insight_data_collections.deleteDeletes an Insight data collectiondestructivedotdigital.insight_data_collections.get_schemaGets the JSON schema for an Insight data collectionreaddotdigital.insight_data_collections.listLists all Insight data collectionsreaddotdigital.insight_data_collections.emptyEmpties an Insight data collectiondestructive
Message templates5
dotdigital.message_templates.createCreate a templatewritedotdigital.message_templates.getRetrieves a templatereaddotdigital.message_templates.listRetrieves a list of all available templatesreaddotdigital.message_templates.updateUpdates a templatewritedotdigital.message_templates.deleteDeletes a templatedestructive
Preferences5
dotdigital.preferences.createCreate preferencewritedotdigital.preferences.deleteDelete preferencedestructivedotdigital.preferences.listGet preferencesreaddotdigital.preferences.updateUpdate preferencewritedotdigital.preferences.list_modified_sinceGet modified preferences since dateread
Transactional emails5
dotdigital.transactional_emails.sendSend transactional emailwritedotdigital.transactional_emails.send_batchSend batch transactional emailwritedotdigital.transactional_emails.send_triggered_campaignSend transactional email using a triggered campaignwritedotdigital.transactional_emails.send_triggered_campaign_batchSend batch transactional email using a triggered campaignwritedotdigital.transactional_emails.get_stats_sinceGet transactional email statisticsread
Whatsapp numbers5
dotdigital.whatsapp_numbers.createCreates WhatsApp configurationwritedotdigital.whatsapp_numbers.deleteRemoves WhatsApp numberdestructivedotdigital.whatsapp_numbers.getGet WhatsApp numberreaddotdigital.whatsapp_numbers.listGet WhatsApp configuration for API Spacereaddotdigital.whatsapp_numbers.registerRegisters WhatsApp numberwrite
Chat messages4
dotdigital.chat_messages.listRetrieves a chat's messages from an point (event) in time and works backwardsreaddotdigital.chat_messages.list_eventsRetrieves a chat's eventsreaddotdigital.chat_messages.post_status_updatesPosts message updates backwritedotdigital.chat_messages.sendSends a message to chatwrite
Contact imports4
dotdigital.contact_imports.createBulk import contactswritedotdigital.contact_imports.create_from_collectionBulk import contacts collectionwritedotdigital.contact_imports.getGet contact import statusreaddotdigital.contact_imports.get_reportGet contact import reportread
Contact preferences4
dotdigital.contact_preferences.getGet preferences for contactreaddotdigital.contact_preferences.list_contacts_opted_inGet contacts opted into a preferencereaddotdigital.contact_preferences.list_opt_ins_sinceGet contacts with modified preference opt-in since datereaddotdigital.contact_preferences.setSet preferences for contactwrite
Contact scores4
dotdigital.contact_scores.getGet scoring for contactreaddotdigital.contact_scores.listGet scoring for contactsreaddotdigital.contact_scores.list_for_address_bookGet scoring for contacts in address bookreaddotdigital.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 backwardsreaddotdigital.conversation_messages.list_eventsRetrieves a conversation's eventsreaddotdigital.conversation_messages.post_status_updatesPosts message updates backwritedotdigital.conversation_messages.sendSends a message to conversationwrite
Email templates4
dotdigital.email_templates.createCreate templatewritedotdigital.email_templates.getGet template by idreaddotdigital.email_templates.listGet templatesreaddotdigital.email_templates.updateUpdate templatewrite
Forms4
dotdigital.forms.getGet form by IDreaddotdigital.forms.listGet formsreaddotdigital.forms.list_fieldsGet form fieldsreaddotdigital.forms.list_with_activity_sinceGet forms with activity since dateread
Account3
dotdigital.account.empty_recycle_binEmpty recycle bindestructivedotdigital.account.getGet account informationreaddotdigital.account.get_server_timeGet server timeread
Campaign attachments3
dotdigital.campaign_attachments.addAdd campaign attachmentwritedotdigital.campaign_attachments.listGet campaign attachmentsreaddotdigital.campaign_attachments.removeRemove campaign attachmentdestructive
Custom identifiers3
dotdigital.custom_identifiers.createCreates a custom identifierwritedotdigital.custom_identifiers.deleteDelete a custom identifier by namedestructivedotdigital.custom_identifiers.listGet all custom identifiersread
Data fields3
dotdigital.data_fields.createCreate contact data fieldwritedotdigital.data_fields.deleteDelete contact data fielddestructivedotdigital.data_fields.listGet contact data fieldsread
Image folders3
dotdigital.image_folders.createCreate image folderwritedotdigital.image_folders.getGet image folders by idreaddotdigital.image_folders.listGet image foldersread
Insight data3
dotdigital.insight_data.get_async_job_statusRetrieve the status of an asynchronous requestreaddotdigital.insight_data.get_import_statusRetrieve the status of an Insight data import requestreaddotdigital.insight_data.importBulk imports Insight datawrite
Program enrolments3
dotdigital.program_enrolments.createCreate program enrolmentwritedotdigital.program_enrolments.getGets an enrolment by IDreaddotdigital.program_enrolments.list_by_statusGets enrolments by statusread
Segments3
dotdigital.segments.get_refresh_progressGet refresh progress for segmentreaddotdigital.segments.listGet segmentsreaddotdigital.segments.refreshRefresh segmentwrite
Sessions3
dotdigital.sessions.endEnds a session, revoking access to servicesdestructivedotdigital.sessions.getRetrieves details about a sessionreaddotdigital.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 contactswritedotdigital.transactional_data_imports.getGet transactional data import statusreaddotdigital.transactional_data_imports.get_reportGet transactional data import reportread
Content2
dotdigital.content.deleteDelete a filedestructivedotdigital.content.uploadUpload a filewrite
Document folders2
dotdigital.document_folders.createCreate document folderwritedotdigital.document_folders.listGet document foldersread
Documents2
dotdigital.documents.listGet documents in folderreaddotdigital.documents.uploadUpload documentwrite
Events2
dotdigital.events.exportRetrieve eventsreaddotdigital.events.importImport a collection of eventswrite
Form responses2
dotdigital.form_responses.listGet form responsesreaddotdigital.form_responses.list_with_activity_sinceGet form responses with activity since dateread
Inbound messages2
dotdigital.inbound_messages.createPosts an inbound messagewritedotdigital.inbound_messages.post_statusPosts a status for an inboundwrite
Marketing emails2
dotdigital.marketing_emails.sendSend marketing emailwritedotdigital.marketing_emails.send_batchSend batch marketing emailswrite
Phone validation jobs2
dotdigital.phone_validation_jobs.getGet bulk job detailsreaddotdigital.phone_validation_jobs.listList bulk validation jobsread
Presence2
dotdigital.presence.list_agentsRetrieves the presence for a list of agent's profileIdsreaddotdigital.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 servicereaddotdigital.profile_opt_in_defaults.setSet default profiles opt in/out options for each channel in channel servicewrite
Programs2
dotdigital.programs.getGet program by IDreaddotdigital.programs.listGet programsread
Transactional data collections2
dotdigital.transactional_data_collections.emptyEmpty transactional data collectiondestructivedotdigital.transactional_data_collections.listGet transactional data collectionsread
Whatsapp templates2
dotdigital.whatsapp_templates.getGet WhatsApp templatereaddotdigital.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.