Loops logo
Email & Marketing
Live

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
What it does

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)
Ask your assistant

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_message
Tool catalogue

65 Loops tools

Grouped by what they touch. Every tool is individually toggleable — you expose only what you want.

Transactional

8 tools3 read-only · 5 write

Showing 8 of 8 tools

  • loops_create_transactional_email
    Write

    Create a new transactional email template.

  • loops_ensure_transactional_draft
    Write

    Ensure a draft email message exists for a transactional email, creating one if needed, so it can be edited before publishing.

  • loops_get_transactional_email
    Read-only

    Get a single transactional email template.

  • loops_list_published_transactional_emails
    Read-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_emails
    Read-only

    List transactional email templates on this team.

  • loops_publish_transactional_email
    Write
    Destructive

    Publish a transactional email's draft, making it the live version sent by loops_send_transactional_email. Cannot be undone.

  • loops_send_transactional_email
    Write

    Send a transactional email to a contact using a published transactional email template.

  • loops_update_transactional_email
    Write

    Update a transactional email template's name or group.

Workflow nodes

7 tools1 read-only · 6 write

Showing 7 of 7 tools

  • loops_add_workflow_branch
    Write

    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_node
    Write

    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_node
    Write
    Destructive

    Delete a single workflow node. Its children are reconnected to its former parent. IRREVERSIBLE.

  • loops_delete_workflow_node_recursively
    Write
    Destructive

    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_node
    Read-only

    Get a single node in a workflow's automation graph.

  • loops_reroute_workflow_node_connection
    Write

    Reroute a node's single outgoing connection to point at a different target node.

  • loops_update_workflow_node
    Write

    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 write

Showing 6 of 6 tools

  • loops_change_workflow_mailing_list
    Write

    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_workflow
    Write

    Create a new, empty marketing-automation workflow.

  • loops_delete_workflow
    Write
    Destructive

    Permanently delete a workflow and its entire node graph. IRREVERSIBLE.

  • loops_get_workflow
    Read-only

    Get a single workflow, including its current revision token (needed for any mutation) and node graph.

  • loops_list_workflows
    Read-only

    List marketing-automation workflows on this team.

  • loops_update_workflow_properties
    Write

    Update a workflow's name and/or description. Provide at least one.

Contacts

6 tools2 read-only · 4 write

Showing 6 of 6 tools

  • loops_create_contact
    Write

    Create a new contact.

  • loops_delete_contact
    Write
    Destructive

    Permanently delete a contact. IRREVERSIBLE.

  • loops_find_contact
    Read-only

    Find a contact by email or userId. Provide at least one.

  • loops_get_contact_suppression
    Read-only

    Check whether a contact is on the suppression list (e.g. from a bounce or spam complaint).

  • loops_remove_contact_suppression
    Write

    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_contact
    Write

    Update an existing contact. Identify it with email and/or userId.

Campaigns

4 tools2 read-only · 2 write

Showing 4 of 4 tools

  • loops_create_campaign
    Write

    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_campaign
    Read-only

    Get a single campaign.

  • loops_list_campaigns
    Read-only

    List campaigns on this team.

  • loops_update_campaign
    Write

    Update an existing campaign's targeting, group, or schedule.

Campaign groups

4 tools2 read-only · 2 write

Showing 4 of 4 tools

  • loops_create_campaign_group
    Write

    Create a new campaign group.

  • loops_get_campaign_group
    Read-only

    Get a single campaign group.

  • loops_list_campaign_groups
    Read-only

    List campaign groups on this team.

  • loops_update_campaign_group
    Write

    Rename a campaign group.

Components

4 tools2 read-only · 2 write

Showing 4 of 4 tools

  • loops_create_component
    Write

    Create a new reusable email component from an LMX body.

  • loops_get_component
    Read-only

    Get a single reusable component's content.

  • loops_list_components
    Read-only

    List reusable email components (content blocks) on this team.

  • loops_update_component
    Write

    Update a component's name or LMX content.

Themes

4 tools2 read-only · 2 write

Showing 4 of 4 tools

  • loops_create_theme
    Write

    Create a new email theme.

  • loops_get_theme
    Read-only

    Get a single theme's styles.

  • loops_list_themes
    Read-only

    List email themes on this team.

  • loops_update_theme
    Write

    Update a theme's name or styles.

Transactional groups

4 tools2 read-only · 2 write

Showing 4 of 4 tools

  • loops_create_transactional_group
    Write

    Create a new transactional email group.

  • loops_get_transactional_group
    Read-only

    Get a single transactional email group.

  • loops_list_transactional_groups
    Read-only

    List transactional email groups on this team.

  • loops_update_transactional_group
    Write

    Rename a transactional email group.

Email messages

4 tools2 read-only · 2 write

Showing 4 of 4 tools

  • loops_get_email_message
    Read-only

    Get a single email message's content (subject, body, LMX).

  • loops_get_email_message_guardian
    Read-only

    Run Loops' "Guardian" quality/deliverability checks (broken links, spam-trigger phrases, missing unsubscribe, etc.) on an email message.

  • loops_preview_email_message
    Write

    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_message
    Write

    Update an email message's subject, body, or theme.

Audience segments

3 tools2 read-only · 1 write

Showing 3 of 3 tools

  • loops_create_audience_segment
    Write

    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_segment
    Read-only

    Get a single audience segment and its filter definition.

  • loops_list_audience_segments
    Read-only

    List audience segments on this team.

Event patterns

3 tools3 read-only · 0 write

Showing 3 of 3 tools

  • loops_get_event_pattern
    Read-only

    Get a single event pattern by ID.

  • loops_get_event_pattern_by_name
    Read-only

    Get a single event pattern by its event name.

  • loops_list_event_patterns
    Read-only

    List event patterns (distinct event names this team has sent, with usage metadata) recognized on this team.

Uploads

2 tools0 read-only · 2 write

Showing 2 of 2 tools

  • loops_complete_upload
    Write

    Finalize an upload after the file bytes have been PUT to the presigned URL from loops_create_upload.

  • loops_create_upload
    Write

    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 write

Showing 2 of 2 tools

  • loops_create_contact_property
    Write

    Define a new custom contact property. Must exist before it can be set via loops_create_contact/loops_update_contact.

  • loops_list_contact_properties
    Read-only

    List custom contact properties defined on this team.

More tools

4 tools3 read-only · 1 write

Showing 4 of 4 tools

  • loops_list_dedicated_sending_ips
    Read-only

    List this team's dedicated sending IP addresses.

  • loops_list_mailing_lists
    Read-only

    List every mailing list on this team. Not paginated -- Loops returns the full list in one call.

  • loops_send_event
    Write

    Send a custom event for a contact. Events can trigger workflows. Provide email and/or userId to identify the contact.

  • loops_test_api_key
    Read-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

Access & safety

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.

Setup

Connect Loops in minutes

No infrastructure to run. Copy one URL and one token into your client.

  1. 1Create a free workspace and connect Loops.
  2. 2Choose which tools to expose — writes stay off until you enable them.
  3. 3Copy your MCP endpoint URL and bearer token.
  4. 4Paste them into Claude, Cursor, or any MCP client.
claude_desktop_config.json
{
  "mcpServers": {
    "serve-mcp": {
      "url": "https://servemcp.com/api/mcp/your-workspace",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer smcp_..."
      }
    }
  }
}

Put Loops in front of your assistant

Free plan, no card required. Connect in minutes.