# Loops.so

```json
{
  "name": "Loops.so",
  "slug": "loops_so",
  "url": "https://composio.dev/toolkits/loops_so",
  "markdown_url": "https://composio.dev/toolkits/loops_so.md",
  "logo_url": "https://logos.composio.dev/api/loops_so",
  "categories": [
    "productivity & project management",
    "marketing & social media"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-03-29T06:41:00.893Z"
}
```

![Loops.so logo](https://logos.composio.dev/api/loops_so)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Loops.so MCP or direct API to send emails, manage campaigns, segment contacts, and automate SaaS messaging through natural language.

## Summary

Loops.so is a modern email platform for SaaS companies to manage product, marketing, and transactional emails. It streamlines communication, so you can engage users with smarter, targeted campaigns.

## Categories

- productivity & project management
- marketing & social media

## Toolkit Details

- Tools: 12

## Images

- Logo: https://logos.composio.dev/api/loops_so

## Authentication

- **Api Key**
  - Type: `api_key`
  - Description: Api Key authentication for Loops.so.
  - Setup:
    - Configure Api Key credentials for Loops.so.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Send onboarding email to new signups
- Segment contacts by plan and engagement
- Schedule a product update campaign

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `LOOPS_SO_CREATE_CONTACT` | Create Contact | Tool to add a new contact to your Loops audience. Use when you need to create a contact with email and optional properties like name, subscription status, or custom attributes. Returns 409 if contact already exists. |
| `LOOPS_SO_CREATE_CONTACT_PROPERTY` | Create Contact Property | Tool to add a custom contact property to your Loops team. Use when you need to store additional contact data beyond default fields. Properties must have unique names in camelCase format and a specified data type (string, number, boolean, or date). |
| `LOOPS_SO_DELETE_CONTACT` | Delete Contact | Tool to delete a contact by email address or user ID. Use when you need to remove a contact from Loops. Either email or userId must be provided to identify the contact. |
| `LOOPS_SO_FIND_CONTACT` | Find Contact | Tool to search for a contact by email or userId. Use when you need to find a specific contact's details including subscription status and custom properties. Exactly one of email or userId must be provided per request. |
| `LOOPS_SO_GET_CONTACT_PROPERTIES` | Get Contact Properties | Tool to retrieve a list of your account's contact properties from Loops.so. Use when you need to view all available contact properties or filter to only custom properties created by your team. |
| `LOOPS_SO_GET_DEDICATED_SENDING_IPS` | Get Dedicated Sending IPs | Tool to retrieve a list of Loops' dedicated sending IP addresses. Use when you need to get IP addresses for whitelisting purposes. |
| `LOOPS_SO_GET_MAILING_LISTS` | Get Mailing Lists | Tool to retrieve all mailing lists associated with your Loops account. Use when you need to browse or manage mailing list information. |
| `LOOPS_SO_LIST_CUSTOM_FIELDS` | List Custom Fields | Tool to retrieve a list of custom contact properties. Use when you need to view available custom fields for contacts. Note: This endpoint is deprecated in favor of 'List contact properties'. |
| `LOOPS_SO_LIST_TRANSACTIONAL_EMAILS` | List Transactional Emails | Tool to retrieve a list of published transactional emails. Use when you need to view all available transactional email templates. Supports pagination with perPage and cursor parameters. |
| `LOOPS_SO_SEND_EVENT` | Send Event | Tool to send events to trigger emails in Loops. Use when you need to track user actions and trigger automated email workflows based on those events. |
| `LOOPS_SO_TEST_API_KEY` | Test API Key | Tool to test API key validity and retrieve team information. Use to verify API credentials are working correctly. |
| `LOOPS_SO_UPDATE_CONTACT` | Update Contact | Tool to update an existing contact by email or userId. Use when you need to modify contact properties or re-subscribe contacts. Creates a new contact if no matching record exists. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK
```python
pip install composio_openai
```

```typescript
npm install @composio/openai
```

#### Path 1, Step 2: Initialize Composio and Create Tool Router Session

Import and initialize Composio client, then create a Tool Router session
```python
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
openai = OpenAI()
session = composio.create(user_id='your-user-id')
```

```typescript
import OpenAI from 'openai';
import { Composio } from '@composio/core';
import { OpenAIResponsesProvider } from '@composio/openai';

const composio = new Composio({
  provider: new OpenAIResponsesProvider(),
});
const openai = new OpenAI({});
const session = await composio.create('your-user-id');
```

#### Path 1, Step 3: Execute Loops.so Tools via Tool Router with Your Agent

Get tools from Tool Router session and execute Loops.so actions with your Agent
```python
tools = session.tools
response = openai.responses.create(
  model='gpt-4.1',
  tools=tools,
  input=[{
    'role': 'user',
    'content': 'Send a marketing email to all users who signed up this week.'
  }]
)
result = composio.provider.handle_tool_calls(
  response=response,
  user_id='your-user-id'
)
print(result)
```

```typescript
const tools = session.tools;
const response = await openai.responses.create({
  model: 'gpt-4.1',
  tools: tools,
  input: [{
    role: 'user',
    content: 'Send a marketing email to all users who signed up this week.'
  }],
});
const result = await composio.provider.handleToolCalls(
  'your-user-id',
  response.output
);
console.log(result);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK for Python or TypeScript
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/openai @ai-sdk/mcp
```

#### Path 2, Step 2: Initialize Client and Create Tool Router Session

Import and initialize the Composio client, then create a Tool Router session for Loops.so
```python
from composio import Composio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

composio = Composio(api_key='your-composio-api-key')
session = composio.create(user_id='your-user-id')
url = session.mcp.url
```

```typescript
import { Composio } from '@composio/core';

const composio = new Composio({ apiKey: 'your-api-key' });
const session = await composio.create('your-user-id');
console.log(`Tool Router session created: ${session.mcp.url}`);
```

#### Path 2, Step 3: Connect to AI Agent

Use the MCP server with your AI agent (Anthropic Claude or Mastra)
```python
import asyncio

options = ClaudeAgentOptions(
    permission_mode='bypassPermissions',
    mcp_servers={
        'tool_router': {
            'type': 'http',
            'url': url,
            'headers': {
                'x-api-key': 'your-composio-api-key'
            }
        }
    },
    system_prompt='You are a helpful assistant with access to Loops.so tools.',
    max_turns=10
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query('Send a product update email to all paying customers.')
        async for message in client.receive_response():
            if hasattr(message, 'content'):
                for block in message.content:
                    if hasattr(block, 'text'):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { openai } from '@ai-sdk/openai';
import { experimental_createMCPClient as createMCPClient } from '@ai-sdk/mcp';
import { generateText } from 'ai';

const client = await createMCPClient({
  transport: {
    type: 'http',
    url: session.mcp.url,
    headers: {
      'x-api-key': 'your-composio-api-key',
    },
  },
});

const tools = await client.tools();
const { text } = await generateText({
  model: openai('gpt-4o'),
  tools,
  messages: [{
    role: 'user',
    content: 'Send a product update email to all paying customers.'
  }],
  maxSteps: 5,
});

console.log(`Agent: ${text}`);
```

## Why Use Composio?

### 1. AI Native Loops.so Integration

- Supports both Loops.so MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your Loops.so data

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke Loops.so access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Loops.so
- Scoped, least privilege access to Loops.so resources
- Full audit trail of agent actions to support review and compliance

## Use Loops.so with any AI Agent Framework

Choose a framework you want to connect Loops.so with:

- [OpenAI Agents SDK](https://composio.dev/toolkits/loops_so/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/loops_so/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/loops_so/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/loops_so/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/loops_so/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/loops_so/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/loops_so/framework/hermes-agent)
- [Google ADK](https://composio.dev/toolkits/loops_so/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/loops_so/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/loops_so/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/loops_so/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/loops_so/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/loops_so/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/loops_so/framework/pydantic-ai)
- [AutoGen](https://composio.dev/toolkits/loops_so/framework/autogen)

## Related Toolkits

- [Google Sheets](https://composio.dev/toolkits/googlesheets) - Google Sheets is a cloud-based spreadsheet tool for real-time collaboration and data analysis. It lets teams work together from anywhere, updating information instantly.
- [Notion](https://composio.dev/toolkits/notion) - Notion is a collaborative workspace for notes, docs, wikis, and tasks. It streamlines team knowledge, project tracking, and workflow customization in one place.
- [Airtable](https://composio.dev/toolkits/airtable) - Airtable combines the flexibility of spreadsheets with the power of a database for easy project and data management. Teams use Airtable to organize, track, and collaborate with custom views and automations.
- [Asana](https://composio.dev/toolkits/asana) - Asana is a collaborative work management platform for teams to organize and track projects. It streamlines teamwork, boosts productivity, and keeps everyone aligned on goals.
- [Google Tasks](https://composio.dev/toolkits/googletasks) - Google Tasks is a to-do list and task management tool integrated into Gmail and Google Calendar. It helps you organize, track, and complete tasks across your Google ecosystem.
- [Linear](https://composio.dev/toolkits/linear) - Linear is a modern issue tracking and project planning tool for fast-moving teams. It helps streamline workflows, organize projects, and boost productivity.
- [Jira](https://composio.dev/toolkits/jira) - Jira is Atlassian’s platform for bug tracking, issue tracking, and agile project management. It helps teams organize work, prioritize tasks, and deliver projects efficiently.
- [Clickup](https://composio.dev/toolkits/clickup) - ClickUp is an all-in-one productivity platform for managing tasks, docs, goals, and team collaboration. It streamlines project workflows so teams can work smarter and stay organized in one place.
- [Monday](https://composio.dev/toolkits/monday) - Monday.com is a customizable work management platform for project planning and collaboration. It helps teams organize tasks, automate workflows, and track progress in real time.
- [Reddit](https://composio.dev/toolkits/reddit) - Reddit is a social news platform with thriving user-driven communities (subreddits). It's the go-to place for discussion, content sharing, and viral marketing.
- [Facebook](https://composio.dev/toolkits/facebook) - Facebook is a social media and advertising platform for businesses and creators. It helps you connect, share, and manage content across your public Facebook Pages.
- [Linkedin](https://composio.dev/toolkits/linkedin) - LinkedIn is a professional networking platform for connecting, sharing content, and engaging with business opportunities. It's the go-to place for building your professional brand and unlocking new career connections.
- [Active campaign](https://composio.dev/toolkits/active_campaign) - ActiveCampaign is a marketing automation and CRM platform for managing email campaigns, sales pipelines, and customer segmentation. It helps businesses engage customers and drive growth through smart automation and targeted outreach.
- [ActiveTrail](https://composio.dev/toolkits/active_trail) - ActiveTrail is a user-friendly email marketing and automation platform. It helps you reach subscribers and automate campaigns with ease.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agiled](https://composio.dev/toolkits/agiled) - Agiled is an all-in-one business management platform for CRM, projects, and finance. It helps you streamline workflows, consolidate client data, and manage business processes in one place.
- [Ahrefs](https://composio.dev/toolkits/ahrefs) - Ahrefs is an SEO and marketing platform for site audits, keyword research, and competitor insights. It helps you improve search rankings and drive organic traffic.
- [Amcards](https://composio.dev/toolkits/amcards) - AMCards lets you create and mail personalized greeting cards online. Build stronger customer relationships with easy, automated card campaigns.
- [Ascora](https://composio.dev/toolkits/ascora) - Ascora is a cloud-based field service management platform for service businesses. It streamlines scheduling, invoicing, and customer operations in one place.
- [Basecamp](https://composio.dev/toolkits/basecamp) - Basecamp is a project management and team collaboration tool by 37signals. It helps teams organize tasks, share files, and communicate efficiently in one place.

## Frequently Asked Questions

### Do I need my own developer credentials to use Loops.so with Composio?

Yes, Loops.so requires you to configure your own API key credentials. Once set up, Composio handles secure credential storage and API request handling for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
