Loops MCP server
Loops' whole API as named, individually toggleable tools -- not one generic execute().
- Tools
- 65
- Read-only
- 29
- Write
- 36
- Off by default
- Destructive
- 5
- Flagged distinctly
Loops through an assistant
Contacts, mailing lists, events, transactional emails, audience segments, campaigns, themes, reusable components and the workflow automation graph, each exposed as its own tool with its own schema. That means an assistant can read a workflow node by node and explain what it does, rather than guessing at an opaque call. Every write is opt-in, and workflow edits carry Loops' own revision token so a stale change is rejected rather than silently overwriting someone else's.
- Contacts, contact properties, suppression status, mailing lists and audience segments
- Campaigns and the email messages inside them, including Guardian checks
- Transactional emails, groups, drafts and publishing
- Workflow automation graphs, readable node by node
- Themes, reusable components and image uploads
- Create and update contacts, campaigns, emails and workflows (opt-in)
What people actually ask
Real questions, answered from live Loops data.
“Which contacts are suppressed, and can you check this address?”
loops_get_contact_suppressionloops_find_contact“What does this onboarding workflow actually do, step by step?”
loops_get_workflowloops_get_workflow_node“How is the launch campaign configured, and what does its email say?”
loops_get_campaignloops_get_email_message65 Loops tools
Grouped by what they touch. Every tool is individually toggleable — you expose only what you want.
Transactional
8 tools3 read-only · 5 writeShowing 8 of 8 tools
- loops_create_transactional_emailWrite
Create a new transactional email template.
- loops_ensure_transactional_draftWrite
Ensure a draft email message exists for a transactional email, creating one if needed, so it can be edited before publishing.
- loops_get_transactional_emailRead-only
Get a single transactional email template.
- loops_list_published_transactional_emailsRead-only
List published transactional emails via Loops' legacy, unpaginated endpoint. Prefer loops_list_transactional_emails for new integrations -- kept for parity with an older API path Loops still publishes.
- loops_list_transactional_emailsRead-only
List transactional email templates on this team.
- loops_publish_transactional_emailWriteDestructive
Publish a transactional email's draft, making it the live version sent by loops_send_transactional_email. Cannot be undone.
- loops_send_transactional_emailWrite
Send a transactional email to a contact using a published transactional email template.
- loops_update_transactional_emailWrite
Update a transactional email template's name or group.
Workflow nodes
7 tools1 read-only · 6 writeShowing 7 of 7 tools
- loops_add_workflow_branchWrite
Add a sibling branch to a branch node (e.g. another variant to an ExperimentBranchNode, or another condition path to a BranchNode).
- loops_create_workflow_nodeWrite
Insert a new node into a workflow's graph, either between two existing nodes, before one, or after one. To configure the node further after creation, use loops_update_workflow_node.
- loops_delete_workflow_nodeWriteDestructive
Delete a single workflow node. Its children are reconnected to its former parent. IRREVERSIBLE.
- loops_delete_workflow_node_recursivelyWriteDestructive
Delete a workflow node AND every node beneath it in the graph. IRREVERSIBLE and affects more than a single-node delete -- use with care.
- loops_get_workflow_nodeRead-only
Get a single node in a workflow's automation graph.
- loops_reroute_workflow_node_connectionWrite
Reroute a node's single outgoing connection to point at a different target node.
- loops_update_workflow_nodeWrite
Update a workflow node's type-specific configuration (e.g. a SendEmailAction's email message, a TimerAction's delay, an AudienceFilter's conditions).
Workflows
6 tools2 read-only · 4 writeShowing 6 of 6 tools
- loops_change_workflow_mailing_listWrite
Change (or clear, with mailingListId: null) the mailing list a workflow sends to. If contacts are queued that the new list would exclude, Loops returns queuedContactsFound instead of applying the change -- retry with queuedContactPolicy: "discard" to proceed and discard them.
- loops_create_workflowWrite
Create a new, empty marketing-automation workflow.
- loops_delete_workflowWriteDestructive
Permanently delete a workflow and its entire node graph. IRREVERSIBLE.
- loops_get_workflowRead-only
Get a single workflow, including its current revision token (needed for any mutation) and node graph.
- loops_list_workflowsRead-only
List marketing-automation workflows on this team.
- loops_update_workflow_propertiesWrite
Update a workflow's name and/or description. Provide at least one.
Contacts
6 tools2 read-only · 4 writeShowing 6 of 6 tools
- loops_create_contactWrite
Create a new contact.
- loops_delete_contactWriteDestructive
Permanently delete a contact. IRREVERSIBLE.
- loops_find_contactRead-only
Find a contact by email or userId. Provide at least one.
- loops_get_contact_suppressionRead-only
Check whether a contact is on the suppression list (e.g. from a bounce or spam complaint).
- loops_remove_contact_suppressionWrite
Remove a contact from the suppression list so they can receive email again. Rate-quota-gated by Loops: a limited number of removals are allowed per rolling 30-day period -- the response includes the remaining quota.
- loops_update_contactWrite
Update an existing contact. Identify it with email and/or userId.
Campaigns
4 tools2 read-only · 2 writeShowing 4 of 4 tools
- loops_create_campaignWrite
Create a new campaign. Defaults to the team's default campaign group if campaignGroupId is omitted. Does not send it -- Loops has no API send trigger.
- loops_get_campaignRead-only
Get a single campaign.
- loops_list_campaignsRead-only
List campaigns on this team.
- loops_update_campaignWrite
Update an existing campaign's targeting, group, or schedule.
Campaign groups
4 tools2 read-only · 2 writeShowing 4 of 4 tools
- loops_create_campaign_groupWrite
Create a new campaign group.
- loops_get_campaign_groupRead-only
Get a single campaign group.
- loops_list_campaign_groupsRead-only
List campaign groups on this team.
- loops_update_campaign_groupWrite
Rename a campaign group.
Components
4 tools2 read-only · 2 writeShowing 4 of 4 tools
- loops_create_componentWrite
Create a new reusable email component from an LMX body.
- loops_get_componentRead-only
Get a single reusable component's content.
- loops_list_componentsRead-only
List reusable email components (content blocks) on this team.
- loops_update_componentWrite
Update a component's name or LMX content.
Themes
4 tools2 read-only · 2 writeShowing 4 of 4 tools
- loops_create_themeWrite
Create a new email theme.
- loops_get_themeRead-only
Get a single theme's styles.
- loops_list_themesRead-only
List email themes on this team.
- loops_update_themeWrite
Update a theme's name or styles.
Transactional groups
4 tools2 read-only · 2 writeShowing 4 of 4 tools
- loops_create_transactional_groupWrite
Create a new transactional email group.
- loops_get_transactional_groupRead-only
Get a single transactional email group.
- loops_list_transactional_groupsRead-only
List transactional email groups on this team.
- loops_update_transactional_groupWrite
Rename a transactional email group.
Email messages
4 tools2 read-only · 2 writeShowing 4 of 4 tools
- loops_get_email_messageRead-only
Get a single email message's content (subject, body, LMX).
- loops_get_email_message_guardianRead-only
Run Loops' "Guardian" quality/deliverability checks (broken links, spam-trigger phrases, missing unsubscribe, etc.) on an email message.
- loops_preview_email_messageWrite
Send a preview/test send of an email message to check rendering. Sends a real email, but only a test preview, not to real recipients.
- loops_update_email_messageWrite
Update an email message's subject, body, or theme.
Audience segments
3 tools2 read-only · 1 writeShowing 3 of 3 tools
- loops_create_audience_segmentWrite
Create a new audience segment from a filter definition. The exact filter schema is Loops-specific (contact property/event conditions) -- pass it through as-is from Loops' own segment-builder export or documentation.
- loops_get_audience_segmentRead-only
Get a single audience segment and its filter definition.
- loops_list_audience_segmentsRead-only
List audience segments on this team.
Event patterns
3 tools3 read-only · 0 writeShowing 3 of 3 tools
- loops_get_event_patternRead-only
Get a single event pattern by ID.
- loops_get_event_pattern_by_nameRead-only
Get a single event pattern by its event name.
- loops_list_event_patternsRead-only
List event patterns (distinct event names this team has sent, with usage metadata) recognized on this team.
Uploads
2 tools0 read-only · 2 writeShowing 2 of 2 tools
- loops_complete_uploadWrite
Finalize an upload after the file bytes have been PUT to the presigned URL from loops_create_upload.
- loops_create_uploadWrite
Start an image upload. Returns an emailAssetId and a presigned URL -- PUT the raw file bytes to that URL yourself (matching contentType/contentLength), then call loops_complete_upload.
Contact properties
2 tools1 read-only · 1 writeShowing 2 of 2 tools
- loops_create_contact_propertyWrite
Define a new custom contact property. Must exist before it can be set via loops_create_contact/loops_update_contact.
- loops_list_contact_propertiesRead-only
List custom contact properties defined on this team.
More tools
4 tools3 read-only · 1 writeShowing 4 of 4 tools
- loops_list_dedicated_sending_ipsRead-only
List this team's dedicated sending IP addresses.
- loops_list_mailing_listsRead-only
List every mailing list on this team. Not paginated -- Loops returns the full list in one call.
- loops_send_eventWrite
Send a custom event for a contact. Events can trigger workflows. Provide email and/or userId to identify the contact.
- loops_test_api_keyRead-only
Check whether this connection's API key is valid, and which Loops team it's scoped to.
Every tool name and description, machine-readable: /llms-full.txt
You decide what it can touch
The same model applies to every connector, and it defaults closed.
Your own credential
You supply your own Loops key, scoped however you like on their side. It is encrypted with AES-256-GCM and never returned by any API response or tool call.
Writes off by default
A new connection switches on a read-oriented default set only. Every write tool must be enabled deliberately before any client can call it.
Roles enforced server-side
READ, WRITE and ADMIN gate tool invocation on the server, not just in the UI. A READ member's token is refused any write tool.
Connect Loops in minutes
No infrastructure to run. Copy one URL and one token into your client.
- 1Create a free workspace and connect Loops.
- 2Choose which tools to expose — writes stay off until you enable them.
- 3Copy your MCP endpoint URL and bearer token.
- 4Paste them into Claude, Cursor, or any MCP client.
{
"mcpServers": {
"serve-mcp": {
"url": "https://servemcp.com/api/mcp/your-workspace",
"transport": "http",
"headers": {
"Authorization": "Bearer smcp_..."
}
}
}
}More in Email & Marketing
Put Loops in front of your assistant
Free plan, no card required. Connect in minutes.