Loops integrationLoops logo

Loops integration for AI agents.

Loops integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves Loops tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.

What your agents can do

Real Loops actions, managed and audited.

Your user connects Loops once; your agent can then manage Loops contacts, contact properties, mailing lists, campaigns, workflows, events, transactional emails, uploads, themes, components, and audience segments — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.

  1. 1

    Your user grants Loops access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

Supported Loops tools.

51 tools are generated from the published Loops catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.

Showing 51 tools. All published catalog entries are included in this page's server-rendered HTML.

Remove a contact from suppression list
Remove a suppressed contact from the suppression list by `email` or `userId`. Include only one query parameter.
Contacts
Test your API key
Test your API key
API key
List audience segments
Retrieve a paginated list of audience segments, most recently created first.
Audience segments
Get an audience segment
Retrieve a single audience segment by ID.
Audience segments
List campaign groups
Retrieve a paginated list of campaign groups, most recently created first.
Campaign groups
Get a campaign group
Retrieve a single campaign group by ID.
Campaign groups
List campaigns
Retrieve a paginated list of campaigns.
Campaigns
Get a campaign
Retrieve a single campaign by ID.
Campaigns
List components
Retrieve a paginated list of email components.
Components
Get a component
Retrieve a single component by ID.
Components
Find a contact
Search for a contact by `email` or `userId`. Only one parameter is allowed.
Contacts
Get a list of contact properties
Retrieve a list of your account's contact properties.<br>Use the `list` parameter to query "all" or "custom" properties.
Contact properties
Get suppression status for a contact
Retrieve suppression status and removal quota for a contact by `email` or `userId`. Include only one query parameter.
Contacts
Get dedicated sending IP addresses
Retrieve a list of Loops' dedicated sending IP addresses.
Dedicated sending IPs
Get an email message
Retrieve an email message, including its compiled LMX content.
Email messages
Run Guardian checks on an email message
Validate an email message's content against Guardian rules and return any errors and warnings. Errors must be resolved before the email can be published, warnings are advisory.
Email messages
Get a list of mailing lists
Retrieve a list of your account's mailing lists.
Mailing lists
List themes
Retrieve a paginated list of email themes, most recently created first.
Themes
Get a theme
Retrieve a single theme by ID.
Themes
List transactional emails
Get a list of published transactional emails.
Transactional emails
List transactional emails
Retrieve a paginated list of transactional emails, most recently created first.
Transactional emails
Get a transactional email
Retrieve a single transactional email by ID.
Transactional emails
List transactional groups
Retrieve a paginated list of transactional groups, most recently created first.
Transactional groups
Get a transactional group
Retrieve a single transactional group by ID.
Transactional groups
Get a simplified workflow
Retrieve a workflow graph with node type names, connections, and selected display fields.
Workflows
Get workflow node details
Retrieve detailed data for a single workflow node.
Workflows
List workflows
Retrieve a paginated list of workflows.
Workflows
Create a campaign group
Create a new campaign group.
Campaign groups
Update a campaign group
Update a campaign group's name or description. At least one field must be provided. The reserved "Unsorted" group cannot be edited.
Campaign groups
Create a campaign
Create a new draft campaign. An empty email message is created automatically and its `emailMessageId` is returned. Use the `/email-messages/{emailMessageId}` endpoint to set subject, sender, preview text, and LMX content. The audience (mailing list, segment, or filter), group, and scheduling can be set on create or later via update.
Campaigns
Update a campaign
Update a draft campaign's name, group, audience (mailing list, segment, or filter), or scheduling. At least one field must be provided. Campaigns can only be updated while in draft status.
Campaigns
Create a component
Create a new email component from an LMX body.
Components
Update a component
Update a component's name and/or body. When the `lmx` body changes, the update cascades to every email using this component, and `affectedEmailCount` reports how many were affected. A change that would introduce a dynamic variable an email using the component cannot use is rejected.
Components
Create a contact
Add a contact to your audience.
Contacts
Delete a contact
Delete a contact by `email` or `userId`.
Contacts
Create a contact property
Add a contact property to your team.
Contact properties
Update an email message
Update fields on an email message (subject, preview text, sender, LMX content). The campaign must be in draft status. Supply `expectedRevisionId` matching the current `contentRevisionId` — the server rejects mismatched revisions with 409.
Email messages
Send a preview of an email message
Send a test preview of an email message to one or more addresses. The accepted variable fields depend on the parent's type - campaign previews accept `contactProperties`, workflow previews accept `contactProperties` and `eventProperties`, and transactional previews accept `dataVariables`. Supplying a field the parent cannot reference is rejected with 400.
Email messages
Send an event
Send events to trigger emails in Loops.
Events
Create a theme
Create a new email theme.
Themes
Update a theme
Update a theme's name and/or styles. When `styles` change, the update cascades to every email using this theme, and `affectedEmailCount` in the response reports how many emails were affected. Manual style edits made on individual emails are preserved: the cascade only changes properties an email has not overridden. A per-email override is removed only when it becomes identical to the theme's new value, after which that email follows the theme for that property.
Themes
Send a transactional email
Send a transactional email to a contact.<br>Please [email us](mailto:help@loops.so) to enable attachments on your account before using them with the API.
Transactional emails
Create a transactional email
Create a new transactional email. An empty draft email message is created automatically and its `draftEmailMessageId` is returned. Use the `/api/v1/email-messages/{emailMessageId}` endpoint to set subject, sender, preview text, and LMX content, then call `/api/v1/transactional-emails/{transactionalId}/publish` to publish.
Transactional emails
Update a transactional email
Update a transactional email by ID.
Transactional emails
Ensure a draft email message
Ensure the transactional email has a draft email message. If a draft already exists it is returned unchanged; otherwise a new empty draft is created (seeded from the most recent published version when present). Use `/v1/email-messages/{emailMessageId}` to edit the draft's content.
Transactional emails
Publish a transactional email draft
Publish the transactional email's current draft email message. The draft becomes the published version and the draft is cleared.
Transactional emails
Create a transactional group
Create a new transactional group.
Transactional groups
Update a transactional group
Update a transactional group's name or description. At least one field must be provided. The reserved "Unsorted" group cannot be edited.
Transactional groups
Create an upload
Request a pre-signed URL to upload an image asset. Upload the file with an HTTP `PUT` to the returned `presignedUrl` (sending the same `Content-Type` and `Content-Length`), then call `/uploads/{id}/complete` to finalize the asset.
Uploads
Complete an upload
Finalize an asset after the file has been uploaded to the pre-signed URL. Returns the public URL of the uploaded asset.
Uploads
Update a contact
Update a contact by `email` or `userId`. You must provide one of these parameters.<br>If you want to update a contact’s email address, the contact will first need a `userId` value. You can then make a request containing the userId field along with an updated email address.
Contacts
FAQ

Loops integration, answered

How do AI agents use Loops through Open Connector?
Your user connects Loops once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes Loops tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
Is this a Loops MCP server?
Yes. Open Connector can serve Loops as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call Loops actions with credentials injected server-side.
Where do Loops credentials live?
In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.

Give your agents Loops — keep the keys.

Open source, self-hostable, with Loops credentials that never leave your infrastructure. Run it from source today.