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.
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
Your user grants Loops access once (OAuth) — the token lands in the vault.
- 2
Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.
- 3
Every routed call appends a hash-chained audit record — nothing leaves your infra.
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
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.