# Lettr

```json
{
  "name": "Lettr",
  "slug": "lettr",
  "url": "https://composio.dev/toolkits/lettr",
  "markdown_url": "https://composio.dev/toolkits/lettr.md",
  "logo_url": "https://logos.composio.dev/api/lettr",
  "categories": [
    "advertising & marketing"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-08-20T15:32:55.233Z"
}
```

![Lettr logo](https://logos.composio.dev/api/lettr)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Lettr MCP or direct API to send transactional emails, manage templates, update audiences, and track campaigns through natural language.

## Summary

Lettr is an email and messaging platform for transactional delivery, templates, audiences, campaigns, domains, and webhooks.
Use it to send reliable product emails and manage customer messaging from one place.

## Categories

- advertising & marketing

## Toolkit Details

- Tools: 60

## Images

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

## Authentication

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

## Suggested Prompts

- Create password reset email template
- List recent campaign delivery status
- Add webhook for bounced emails

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `LETTR_ATTACH_CONTACTS_TO_LISTS` | Attach Contacts to Lists | Attach every combination of 1-1000 contacts and 1-50 audience lists, processing up to 50,000 contact-list pairs and reporting new and existing memberships. |
| `LETTR_BULK_CREATE_AUDIENCE_CONTACTS` | Bulk Create Audience Contacts | Create or recognize up to 1000 normalized, deduplicated contacts. Shared properties affect only newly created contacts; list_id applies to all contacts, including those that already exist. |
| `LETTR_CANCEL_SCHEDULED_EMAIL` | Cancel Scheduled Email | Cancel a scheduled email before its delivery time; cancellation is unavailable once processing has begun. |
| `LETTR_CREATE_AUDIENCE_CONTACT` | Create Audience Contact | Create one audience contact with optional properties and list membership. |
| `LETTR_CREATE_AUDIENCE_CONTACT_WITH_DOUBLE_OPT_IN` | Create Audience Contact With Double Opt-In | Create an unverified audience contact and irreversibly send an external confirmation email; the contact becomes subscribed only after confirming. |
| `LETTR_CREATE_AUDIENCE_LIST` | Create Audience List | Create a uniquely named audience list for grouping contacts. |
| `LETTR_CREATE_AUDIENCE_PROPERTY` | Create Audience Property | Define a custom contact property with an immutable name and value type. Changing either later requires deleting and recreating the property. |
| `LETTR_CREATE_AUDIENCE_SEGMENT` | Create Audience Segment | Create a dynamic audience segment whose condition groups are ANDed while conditions inside each group are ORed. |
| `LETTR_CREATE_AUDIENCE_TOPIC` | Create Audience Topic | Create a public or private subscription topic with an immutable opt-in or opt-out default. |
| `LETTR_CREATE_DOMAIN` | Create Domain | Register a sending domain and return the DNS configuration needed to verify it. |
| `LETTR_CREATE_TEMPLATE` | Create Template | Create and publish an email template from either custom HTML or Topol editor JSON, extracting its merge tags. |
| `LETTR_CREATE_WEBHOOK` | Create Webhook | Create an active event webhook using no authentication, HTTP Basic credentials, or OAuth 2 client credentials. |
| `LETTR_DELETE_AUDIENCE_CONTACT` | Delete Audience Contact | Permanently delete one audience contact and its associated memberships. |
| `LETTR_DELETE_AUDIENCE_LISTS` | Delete Audience Lists | Permanently delete between 1 and 50 audience lists in one request. |
| `LETTR_DELETE_AUDIENCE_PROPERTY` | Delete Audience Property | Permanently delete a custom contact-property definition. |
| `LETTR_DELETE_AUDIENCE_SEGMENT` | Delete Audience Segment | Permanently delete one dynamic audience segment. |
| `LETTR_DELETE_AUDIENCE_TOPIC` | Delete Audience Topic | Permanently delete one audience subscription topic. |
| `LETTR_DELETE_DOMAIN` | Delete Domain | Permanently remove a sending domain from Lettr and SparkPost so it can no longer send email. |
| `LETTR_DELETE_TEMPLATE` | Delete Template | Permanently delete an email template and all of its versions. |
| `LETTR_DELETE_WEBHOOK` | Delete Webhook | Permanently remove a webhook so Lettr stops delivering events to it. |
| `LETTR_DETACH_CONTACTS_FROM_LISTS` | Detach Contacts from Lists | Detach every combination of 1-1000 contacts and 1-50 audience lists, reporting removed and absent memberships. |
| `LETTR_GET_AUDIENCE_CONTACT` | Get Audience Contact | Retrieve one contact's email, status, custom properties, list memberships, and topic subscriptions by ID. |
| `LETTR_GET_AUDIENCE_LIST` | Get Audience List | Retrieve one audience list and its current contact count by ID. |
| `LETTR_GET_AUDIENCE_PROPERTY` | Get Audience Property | Retrieve one custom contact-property definition and its fallback value. |
| `LETTR_GET_AUDIENCE_SEGMENT` | Get Audience Segment | Retrieve one dynamic segment's list restriction, complete AND-of-OR condition definition, and cached contact count. |
| `LETTR_GET_AUDIENCE_TOPIC` | Get Audience Topic | Retrieve one subscription topic's defaults, visibility, and current contact count. |
| `LETTR_GET_CAMPAIGN` | Get Campaign | Retrieve one campaign's name, subject, sender and reply-to configuration, schedule, rendered HTML, lifecycle state, recipient counts, and engagement statistics. The campaign's audience definition is not returned. |
| `LETTR_GET_DOMAIN` | Get Domain | Retrieve one sending domain's send readiness, DNS records, provider detection, and verification status. |
| `LETTR_GET_EMAIL` | Get Email | Retrieve a sent email's delivery state, recipients, schedule metadata, and events by request ID. The configurable event date range defaults to the last 10 days, not the email's complete event history. |
| `LETTR_GET_SCHEDULED_EMAIL` | Get Scheduled Email | Retrieve a scheduled email's current state and events by transmission ID, including after it has been processed. |
| `LETTR_GET_TEMPLATE` | Get Template | Retrieve an email template's metadata, active HTML or editor JSON content, and version counts by slug. |
| `LETTR_GET_TEMPLATE_MERGE_TAGS` | Get Template Merge Tags | Return required and optional merge tags for a template's active or specified version before sending with substitution data. |
| `LETTR_GET_WEBHOOK` | Get Webhook | Retrieve one webhook's target, enabled state, event selection, authentication mode, and latest delivery status. |
| `LETTR_LIST_AUDIENCE_CONTACTS` | List Audience Contacts | Return one cursor-controlled page of contacts, optionally filtered by search text, status, list, or segment. |
| `LETTR_LIST_AUDIENCE_LISTS` | List Audience Lists | Return one cursor-controlled page of audience lists with each list's contact count. |
| `LETTR_LIST_AUDIENCE_PROPERTIES` | List Audience Properties | Return one cursor-controlled page of custom contact-property definitions and fallback values. |
| `LETTR_LIST_AUDIENCE_SEGMENTS` | List Audience Segments | Return one cursor-controlled page of dynamic audience segments, including their complete AND-of-OR condition definitions, optionally filtered by list. |
| `LETTR_LIST_AUDIENCE_TOPICS` | List Audience Topics | Return one cursor-controlled page of subscription topics with defaults, visibility, and contact counts. |
| `LETTR_LIST_CAMPAIGN_EVENTS` | List Campaign Events | Return one cursor-controlled page of a campaign's delivery and engagement events, with event, recipient, and time filters. An empty items page can still have a next_cursor; continue until next_cursor is null. |
| `LETTR_LIST_CAMPAIGNS` | List Campaigns | Return one cursor-controlled page of campaigns with complete delivery and engagement statistics, optionally filtered by lifecycle status. |
| `LETTR_LIST_DOMAINS` | List Domains | Return all sending domains with approval, DNS verification, and send-readiness status. |
| `LETTR_LIST_EMAIL_EVENTS` | List Email Events | Return one cursor-controlled page of delivery and engagement events across sent emails, with event, recipient, transmission, bounce, and date filters. |
| `LETTR_LIST_EMAILS` | List Sent Emails | Return one cursor-controlled page of sent emails, optionally filtered by recipient and date range. |
| `LETTR_LIST_PROJECTS` | List Projects | Return one cursor-controlled page of Lettr projects and their IDs for use with template operations. |
| `LETTR_LIST_TEMPLATES` | List Templates | Return one cursor-controlled page of email templates for a project or the team's default project. |
| `LETTR_LIST_WEBHOOKS` | List Webhooks | Return all event webhooks with target, enabled state, event selection, authentication mode, and latest delivery status. |
| `LETTR_PUBLISH_TEMPLATE_VERSION` | Publish Template Version | Create and activate a new version of an existing email template from exactly one of HTML or Topol editor JSON, optionally renaming the template atomically. |
| `LETTR_SCHEDULE_CAMPAIGN` | Schedule Campaign | Schedule a campaign for future delivery or reschedule it. The campaign dispatches automatically at that time unless it is unscheduled first. |
| `LETTR_SCHEDULE_EMAIL` | Schedule Email | Create a transactional email scheduled 5 minutes to 3 days in the future; it remains cancellable until processed. |
| `LETTR_SEND_CAMPAIGN` | Send Campaign | Immediately and irreversibly start sending a sendable draft campaign to its resolved audience. Only call after confirming the campaign's audience, subject, sender email, and content. A successful 202 response transitions the campaign asynchronously to preparing and the external send cannot be undone. |
| `LETTR_SEND_EMAIL` | Send Email | Immediately queue a transactional email to up to 50 recipients using inline content or a Lettr template. This is an irreversible external send. |
| `LETTR_UNSCHEDULE_CAMPAIGN` | Unschedule Campaign | Cancel a scheduled campaign send and return the campaign to draft. The campaign must still be scheduled; this cannot stop one already preparing or sending. |
| `LETTR_UPDATE_AUDIENCE_CONTACT` | Update Audience Contact | Change a contact's email, subscribed or unsubscribed status, or selected custom property values. Provide at least one of email, status, or properties; a null value inside properties removes that property. |
| `LETTR_UPDATE_AUDIENCE_LIST` | Update Audience List | Rename an audience list while preserving its contacts. |
| `LETTR_UPDATE_AUDIENCE_PROPERTY` | Update Audience Property | Set or clear a custom contact property's fallback value. Its name and data type cannot be changed. |
| `LETTR_UPDATE_AUDIENCE_SEGMENT` | Update Audience Segment | Change a dynamic segment's name, optional audience-list restriction, or complete AND-of-OR condition definition. Provide at least one of these mutable fields; setting list_id to null removes the list restriction. |
| `LETTR_UPDATE_AUDIENCE_TOPIC` | Update Audience Topic | Change a subscription topic's name, description, or public/private visibility. Provide at least one of these mutable fields; setting description to null clears it. Its default subscription behavior cannot be changed. |
| `LETTR_UPDATE_TEMPLATE` | Update Template | Rename an email template's metadata without publishing a new version. |
| `LETTR_UPDATE_WEBHOOK` | Update Webhook | Partially update a webhook's name, callback URL, authentication, selected events, or active state. Provide at least one field to update. |
| `LETTR_VERIFY_DOMAIN` | Verify Domain | Run Lettr's DNS verification for a registered domain and return DKIM, CNAME, DMARC, SPF, and ownership results. |

## 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 Lettr Tools via Tool Router with Your Agent

Get tools from Tool Router session and execute Lettr actions with your Agent
```python
tools = session.tools
response = openai.responses.create(
  model='gpt-4.1',
  tools=tools,
  input=[{
    'role': 'user',
    'content': 'Create a Lettr transactional email template for a password reset message'
  }]
)
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: 'Create a Lettr transactional email template for a password reset message'
  }],
});
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 Lettr
```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 Lettr tools.',
    max_turns=10
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query('List recent Lettr campaigns and summarize delivery status')
        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: 'List recent Lettr campaigns and summarize delivery status'
  }],
  maxSteps: 5,
});

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

## Why Use Composio?

### 1. AI Native Lettr Integration

- Supports both Lettr MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable email, template, audience, campaign, domain, and webhook actions
- Rich coverage for reading, writing, and querying your Lettr messaging data

### 2. Managed Auth

- Secure API key handling without hard-coding Lettr credentials in agent code
- Central place to manage, scope, and revoke Lettr access
- Per user and per environment credentials so staging and production stay cleanly separated

### 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
- Clear schemas help agents choose the right Lettr action instead of guessing

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Lettr
- Scoped, least privilege access to Lettr resources like campaigns, templates, audiences, domains, and webhooks
- Full audit trail of agent actions to support review and compliance

## Use Lettr with any AI Agent Framework

Choose a framework you want to connect Lettr with:

None listed.

## Related Toolkits

- [Metaads](https://composio.dev/toolkits/metaads) - Metaads is Meta's official Ads API that lets you manage, analyze, and optimize your Facebook and Instagram ad campaigns. Streamline ad operations and gain deeper insights with robust automation.
- [Adrapid](https://composio.dev/toolkits/adrapid) - Adrapid is a platform for rapid creation of digital marketing visuals using templates. It streamlines design workflows for banners, images, and HTML5 content with automation.
- [Adtraction](https://composio.dev/toolkits/adtraction) - Adtraction is an affiliate marketing platform for partner programs, tracking links, transactions, commissions, statistics, and payments. It helps advertisers and publishers manage performance marketing with clear reporting and payout workflows.
- [Adyntel](https://composio.dev/toolkits/adyntel) - Adyntel is an API that retrieves LinkedIn ads for any company using a domain or LinkedIn Page ID. Easily access competitive ad intelligence to power your marketing workflows.
- [Beaconstac](https://composio.dev/toolkits/beaconstac) - Beaconstac is a platform for creating and managing QR codes and proximity beacons. It helps businesses engage customers and track marketing performance with powerful analytics.
- [Bouncify](https://composio.dev/toolkits/bouncify) - Bouncify is an email verification service for single addresses and bulk lists. Use it to reduce bounces, protect sender reputation, and track verification credits.
- [Bulk Email Checker](https://composio.dev/toolkits/bulk_email_checker) - Bulk Email Checker is an email verification service for checking address validity, mailbox status, domains, and mail-server signals. It helps reduce bounces, spot risky emails, and keep outreach lists cleaner before you send.
- [Campaign cleaner](https://composio.dev/toolkits/campaign_cleaner) - Campaign cleaner is an email campaign optimization tool that boosts compatibility and deliverability across email clients. It helps marketers get better results by cleaning, enhancing, and ensuring high performance for every campaign.
- [Deadline funnel](https://composio.dev/toolkits/deadline_funnel) - Deadline Funnel lets you create personalized deadlines and timers for your marketing campaigns. It helps marketers boost conversions by adding authentic urgency to offers.
- [DeBounce](https://composio.dev/toolkits/debounce) - DeBounce is an email verification service for checking address validity, deliverability, and risk. It helps keep contact lists clean so your campaigns reach real inboxes.
- [Easy Email Verification](https://composio.dev/toolkits/easy_email_verification) - Easy Email Verification is an email validation service for checking single addresses and bulk lists. Use it to reduce bounces, clean contact data, and protect sender reputation.
- [Fairing](https://composio.dev/toolkits/fairing) - Fairing is a post-purchase survey and attribution platform for ecommerce brands. It helps teams measure which marketing channels, campaigns, and customer touchpoints drive purchases.
- [GoDaddy MCP](https://composio.dev/toolkits/godaddy_mcp) - GoDaddy MCP is a domain discovery toolkit for checking availability and generating AI-powered name ideas. Use it to move from rough business keywords to practical domain options fast.
- [Google Ads](https://composio.dev/toolkits/googleads) - Google Ads is Google's online advertising platform for creating, managing, and optimizing digital campaigns. It helps businesses reach targeted customers and maximize return on ad spend.
- [Handwrite.io](https://composio.dev/toolkits/handwrite) - Handwrite.io is a direct mail service for creating physical handwritten card orders. It helps teams send personal cards with selectable handwriting, stationery, and tracking.
- [Inblog](https://composio.dev/toolkits/inblog) - Inblog is an AI-powered blogging platform for posts, authors, tags, redirects, design settings, analytics, and lead forms. Use it to manage SEO-focused content, measure performance, and capture blog leads in one place.
- [Instantly](https://composio.dev/toolkits/instantly) - Instantly is a platform for automating cold email outreach, managing leads, and optimizing deliverability. Get better results from email campaigns with minimal manual effort.
- [Invalid Bounce](https://composio.dev/toolkits/invalid_bounce) - Invalid Bounce is an email verification service with a bulk verification API. Use it to clean email lists, reduce bounces, and protect sender reputation.
- [Keyword](https://composio.dev/toolkits/keyword) - Keyword.com is a digital marketing platform for search rank tracking and SEO analytics. Use it to monitor keyword performance, spot ranking changes, and measure SEO visibility.
- [lc.cx](https://composio.dev/toolkits/lc_cx) - lc.cx is a URL shortening service for branded links, workspaces, tags, QR codes, and click stats. Use it to share cleaner links, track performance, and manage branded campaigns from one API.

## Frequently Asked Questions

### Do I need my own developer credentials to use Lettr with Composio?

Yes, Lettr requires you to configure your own API key. 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)
