# How to integrate Constant Contact MCP with Autogen

```json
{
  "title": "How to integrate Constant Contact MCP with Autogen",
  "toolkit": "Constant Contact",
  "toolkit_slug": "constant_contact",
  "framework": "AutoGen",
  "framework_slug": "autogen",
  "url": "https://composio.dev/toolkits/constant_contact/framework/autogen",
  "markdown_url": "https://composio.dev/toolkits/constant_contact/framework/autogen.md",
  "updated_at": "2026-06-18T09:20:37.533Z"
}
```

## Introduction

This guide walks you through connecting Constant Contact to AutoGen using the Composio tool router. By the end, you'll have a working Constant Contact agent that can create newsletter draft for new subscribers, list contacts added this week, segment inactive constant contact subscribers through natural language commands.
This guide will help you understand how to give your AutoGen agent real control over a Constant Contact account through Composio's Constant Contact MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Constant Contact with

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

## TL;DR

Here's what you'll learn:
- Get and set up your OpenAI and Composio API keys
- Install the required dependencies for Autogen and Composio
- Initialize Composio and create a Tool Router session for Constant Contact
- Wire that MCP URL into Autogen using McpWorkbench and StreamableHttpServerParams
- Configure an Autogen AssistantAgent that can call Constant Contact tools
- Run a live chat loop where you ask the agent to perform Constant Contact operations

## What is AutoGen?

Autogen is a framework for building multi-agent conversational AI systems from Microsoft. It enables you to create agents that can collaborate, use tools, and maintain complex workflows.
Key features include:
- Multi-Agent Systems: Build collaborative agent workflows
- MCP Workbench: Native support for Model Context Protocol tools
- Streaming HTTP: Connect to external services through streamable HTTP
- AssistantAgent: Pre-built agent class for tool-using assistants

## What is the Constant Contact MCP server, and what's possible with it?

The Constant Contact MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Constant Contact account. It provides structured and secure access so your agent can perform Constant Contact operations on your behalf.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `CONSTANT_CONTACT_ADD_ACCOUNT_EMAIL_ADDRESS` | Add Account Email Address | Add a new email address to a Constant Contact account. Use this action when you need to associate an additional email address with a Constant Contact account. After adding an email address, Constant Contact sends a confirmation email to the new address. You can only use email addresses with CONFIRMED status to create email campaigns. Requires the 'account_update' OAuth scope. |
| `CONSTANT_CONTACT_ADD_CONTACT_TAGGINGS` | Add Contact Taggings | Add Tags to Contacts. Use this action when you need to asynchronously add one or more tags to contacts that meet your specified contact filtering criteria. The action creates an asynchronous activity that processes the tag addition. The activity returns an activity_id that can be used to track the status of the operation. |
| `CONSTANT_CONTACT_ADD_LIST_MEMBERSHIPS` | Add list memberships | Add Contacts to Lists creates an activity to add contacts to one or more contact lists. Use this action when you need to bulk-add contacts to Constant Contact lists. The action supports adding contacts by individual contact IDs, all active contacts, contacts from existing lists, segments, engagement levels, or tags. Up to 50 lists and 500 contacts can be specified per request. This is an asynchronous operation that returns an activity ID for tracking progress. |
| `CONSTANT_CONTACT_COPY_EVENT` | Copy Event | POST (copy) an existing event in Constant Contact. Use this action when you need to duplicate an existing event to create a new event with similar configuration. The copied event will have a new event_id but will retain all settings, campaigns, and configurations from the source event. You must provide a unique name for the new event. Optionally, you can specify which campaign activities to copy (if not specified, all activities are copied). This action is useful for recurring events or when creating event series with similar configurations. Note: The new event name must be unique within the account. |
| `CONSTANT_CONTACT_COUNT_CONTACT_CONSENTS` | Count Contact Consents | GET contact consent counts for a Constant Contact account. Use this action when you need to retrieve aggregate counts of contacts by consent status, including explicitly confirmed, implicitly confirmed, pending, unsubscribed, and total contacts. Optionally include counts of newly subscribed contacts from the last 30 days by specifying the include parameter with 'new_subscriber'. This is a read-only operation that returns summary statistics about contact consent states. |
| `CONSTANT_CONTACT_CREATE_CONTACT` | Create Contact | Create a new contact in Constant Contact. Use this action when you need to add a new contact to your Constant Contact account. The contact's email address must be unique within the account. You can optionally include the contact's name, phone numbers, addresses, and assign them to lists or tags. This action requires the 'contact_update' OAuth scope. |
| `CONSTANT_CONTACT_CREATE_CONTACT_FROM_SIGN_UP_FORM` | Create contact from sign-up form | Create or Update a Contact via sign-up form. Use this action when you need to add a new contact to Constant Contact through a sign-up form submission. The action identifies contacts by email address - if the email already exists, the contact will be updated; if new, a contact will be created. At least one list_id must be provided in list_memberships to assign the contact to a list. If using SMS channel, the sms_channel object with country_code, dial_code, sms_address, and sms_channel_consents is required instead of email_address and list_memberships. |
| `CONSTANT_CONTACT_CREATE_CONTACT_LIST` | Create Contact List | Create a new contact list in Constant Contact. Use this action when you need to create a new contact list to organize and manage your contacts. The list name must be unique within your account. You can optionally provide a description and mark the list as a favorite. Once created, contacts can be added to the list using the appropriate action. |
| `CONSTANT_CONTACT_CREATE_CONTACT_TAG` | Create contact tag | POST (Create) a Tag. Use this action when you need to create a new contact tag in Constant Contact. Tag names must be unique within the account. Attempting to create a tag with a duplicate name will result in an error. |
| `CONSTANT_CONTACT_CREATE_CUSTOM_FIELD` | Create Custom Field | Create a new custom field for contacts in Constant Contact. Use when you need to add a custom data field to store additional information about contacts, such as preferences, custom attributes, or extended contact details. The custom field can store different types of data including strings, numbers, dates, currency values, and select options. Required fields are 'label' (the display name) and 'type' (the data type to store). |
| `CONSTANT_CONTACT_CREATE_EMAIL_CAMPAIGN` | Create Email Campaign | Create a new email campaign in Constant Contact. Use this action when you need to create a new email marketing campaign. The campaign will be created in DRAFT status by default. You must include a unique name for the campaign and at least one email campaign activity containing the email content (from_email, from_name, reply_to_email, subject, and html_content). After creation, the campaign can be scheduled or sent using appropriate actions. This action is suitable for creating marketing campaigns, newsletters, or promotional emails. Note: You must validate your sending email address in Constant Contact before you can use it in a campaign. Include [[trackingImage]] in your HTML content for open tracking. |
| `CONSTANT_CONTACT_CREATE_EVENT` | Create Event | Create a new event with default settings in Constant Contact. Use this action when you need to create a new event in Constant Contact. The event is created with default settings including a registration form and landing page. The event will be created in DRAFT status and can be updated later before publishing. This action requires the 'event_update' OAuth scope. |
| `CONSTANT_CONTACT_CREATE_RESEND_TO_NON_OPENERS` | Create Resend to Non-openers | Create a resend to non-openers campaign activity for an email campaign. Use this action when you need to resend an email campaign to contacts who did not open the original email. You can schedule the resend using delay_days or delay_minutes, and optionally provide a different subject line for the resend. This action is useful for re-engaging contacts who missed your initial campaign. Requires the 'campaign_data' OAuth scope. |
| `CONSTANT_CONTACT_CREATE_SOCIAL_POST` | Create Social Post | Create a new social media post campaign. Use this action when you need to create a new social media post campaign in Constant Contact. This action allows you to create posts with content for multiple social profiles. Set the status to 'DRAFT' to save without publishing, or 'SCHEDULED' to schedule for publication at a specific time. This action requires the 'campaign_data' OAuth scope. |
| `CONSTANT_CONTACT_DELETE_CONTACT` | Delete contact | DELETE a specific contact from your Constant Contact account. Use this action when you need to permanently remove a contact from your account. This action is irreversible — once deleted, the contact cannot be recovered. |
| `CONSTANT_CONTACT_DELETE_CONTACT_LIST` | Delete Contact List | Permanently deletes a contact list from Constant Contact by its ID. This action is irreversible — once a contact list is deleted, it cannot be recovered. Use this action when you need to remove outdated or unwanted contact lists. Note that deleting a list does not delete the contacts that were members of the list. The API returns 204 No Content on successful deletion with an empty response body. |
| `CONSTANT_CONTACT_DELETE_CONTACTS_ACTIVITY` | Create contact delete activity | Delete multiple contacts in bulk by submitting a contact_delete activity. Use this action when you need to delete multiple contacts at once by specifying contact IDs (up to 500) or list IDs (up to 50). The contacts are processed asynchronously and the response returns an activity_id to track the deletion progress. This action is irreversible — deleted contacts cannot be recovered once removed. |
| `CONSTANT_CONTACT_DELETE_CONTACT_TAG` | Delete contact tag | Delete a specific contact tag from your Constant Contact account. Use this action when you need to remove an existing tag from your account. This action is irreversible — once deleted, the tag cannot be recovered. |
| `CONSTANT_CONTACT_DELETE_CONTACT_TAGS` | Delete contact tags | Delete one or more tags from contacts in Constant Contact. Use this action when you need to remove tags from contacts in bulk. The operation creates an asynchronous activity that processes the tag deletions. The activity_id returned can be used to track the status of the deletion operation. Note: This is an irreversible operation — once tags are deleted from contacts, they cannot be easily recovered. |
| `CONSTANT_CONTACT_DELETE_CUSTOM_FIELD` | Delete custom field | DELETE a specific contact custom field from your Constant Contact account. Use this action when you need to permanently remove a custom field that is no longer needed. This action is irreversible — the custom field cannot be recovered once deleted. |
| `CONSTANT_CONTACT_DELETE_CUSTOM_FIELDS` | Delete custom fields | Delete one or more custom fields from a Constant Contact account. Use when you need to remove outdated or unnecessary custom fields from your contact data. The deletion is processed asynchronously as an activity, so check the activity status to verify completion. This action is irreversible once the activity is processed. |
| `CONSTANT_CONTACT_DELETE_EMAIL_CAMPAIGN` | Delete Email Campaign | DELETE an Email Campaign from your Constant Contact account. Use this action when you need to permanently remove an email campaign that is no longer needed or was created in error. This action is irreversible — the email campaign cannot be recovered once deleted. The API returns 204 No Content on successful deletion with an empty response body. |
| `CONSTANT_CONTACT_DELETE_LIST_ACTIVITY` | Delete contact list activity | Delete one or more contact lists from your Constant Contact account by submitting a list delete activity. Use this action when you need to permanently remove contact lists that are no longer needed. This action is irreversible — once deleted, contact lists cannot be recovered. The deletion is processed as an async activity, and you can track the status using the activity_id returned. |
| `CONSTANT_CONTACT_DELETE_SEGMENT` | Delete Segment | Permanently deletes a segment from Constant Contact by its ID. Use this action when you need to remove outdated or unwanted segments from your Constant Contact account. This action is irreversible — once a segment is deleted, it cannot be recovered. Note that deleting a segment does not delete the contacts that were members of the segment. The API returns 204 No Content on successful deletion with an empty response body. |
| `CONSTANT_CONTACT_EXPORT_CONTACTS` | Export Contacts | Create a bulk activity that exports contacts to a CSV file. Use this action when you need to export contacts from your Constant Contact account to a CSV file for backup, migration, or analysis purposes. You can export all contacts or filter by specific contact lists, segments, or status. The exported file will be available for download once the activity status changes to COMPLETE. |
| `CONSTANT_CONTACT_GET_ACCOUNT_PHYSICAL_ADDRESS` | Get account physical address | GET the Physical Address for the Account. Use this action when you need to retrieve the physical mailing address associated with the Constant Contact account, such as for compliance verification or contact information display. |
| `CONSTANT_CONTACT_GET_ACCOUNT_SUMMARY` | Get account summary | GET a summary of account details for a Constant Contact account. Use when you need to retrieve account information including company name, contact email, phone number, website, and optionally physical address or company logo. |
| `CONSTANT_CONTACT_GET_ACTIVITY_STATUS` | Get activity status | GET the status of a specific bulk activity. Use this action when you need to check the processing status of a bulk activity such as contact imports, file exports, or list membership changes in Constant Contact. |
| `CONSTANT_CONTACT_GET_CONTACT` | Get contact | GET a contact by their unique ID. Use this action when you need to retrieve detailed information about a specific contact in your Constant Contact account, such as their email, name, company, phone numbers, addresses, custom fields, tags, or list memberships. Optionally include additional properties in the response using the include parameter. |
| `CONSTANT_CONTACT_GET_CONTACT_ACTIVITY_SUMMARY_REPORT` | Get contact activity summary report | GET contact tracking activity summary for a specific contact. Use this action when you need to retrieve email engagement metrics (sends, opens, clicks, bounces, forwards, unsubscribes) for a specific contact across a date range. This is useful for analyzing individual contact engagement patterns and campaign performance at the contact level. This is a read-only operation. Requires the contact_data OAuth scope. |
| `CONSTANT_CONTACT_GET_CONTACT_LIST` | Get Contact List | GET details for a specific contact list by its ID. Use this action when you need to retrieve information about a specific contact list in your Constant Contact account, such as its name, description, status, and membership counts. |
| `CONSTANT_CONTACT_GET_CONTACT_OPEN_AND_CLICK_RATES_REPORT` | Get Contact Open and Click Rates Report | GET average open and click rates for a contact. Use this action when you need to retrieve the average open rate, click rate, and activity count for a specific contact over a given time period. This is useful for analyzing individual contact engagement with your email campaigns. The response includes the average click rate, average open rate, contact ID, and the number of email activities included in the calculation. |
| `CONSTANT_CONTACT_GET_CONTACTS_EXPORT_FILE` | Get Contacts Export File | Retrieve the exported contacts file from a completed export contacts activity. Use when you need to download the CSV file containing the contacts that were exported using the export contacts feature. The file_export_id is obtained from the results section of the export contacts activity response. |
| `CONSTANT_CONTACT_GET_CONTACT_SMS_ENGAGEMENT_HISTORY` | Get Contact SMS Engagement History | GET SMS Engagement History for a Contact. Use this action when you need to retrieve the SMS engagement history for a specific contact in Constant Contact. This returns details about SMS consent actions (opt-in, opt-out) and the methods used to add or update SMS contact details. The response contains an array of SMS channel history records with details about consent actions, timestamps, and source information depending on the type of SMS consent granted. |
| `CONSTANT_CONTACT_GET_CONTACT_TAG` | Get contact tag details | GET Tag Details - Retrieves detailed information about a specific contact tag. Use this action when you need to fetch the name, source, creation/update timestamps, and optionally the count of contacts associated with a specific tag in Constant Contact. |
| `CONSTANT_CONTACT_GET_CUSTOM_FIELD` | Get custom field | GET a custom field by its unique ID. Use this action when you need to retrieve details of a specific custom field from your Constant Contact account, such as its label, type, choices, or metadata configuration. |
| `CONSTANT_CONTACT_GET_EMAIL_CAMPAIGN` | Get email campaign details | GET details for a single email campaign using its campaign ID. Use this action when you need to retrieve detailed information about a specific email campaign, including its name, subject line, status, content, sender information, and scheduling details. This action is read-only and does not modify any campaign data. |
| `CONSTANT_CONTACT_GET_EMAIL_CAMPAIGN_ACTIVITY` | Get Email Campaign Activity | GET details for a specific email campaign activity by its ID. Use this action when you need to retrieve information about a specific email campaign activity in your Constant Contact account, such as its current status, content, or configuration details. |
| `CONSTANT_CONTACT_GET_EMAIL_CAMPAIGN_ACTIVITY_PREVIEW` | Get email campaign activity preview | GET the HTML Preview of an Email Campaign Activity. Use this action when you need to retrieve the HTML and plain text preview of an email campaign activity, including subject line, from address, preheader text, and content. This is useful for reviewing how an email will appear before sending it. |
| `CONSTANT_CONTACT_GET_EMAIL_CAMPAIGN_ACTIVITY_SCHEDULE` | Get Email Campaign Activity Schedule | GET an email campaign activity schedule. Use this action when you need to retrieve the scheduled date(s) for a specific email campaign activity in Constant Contact. This returns all scheduled send times for the campaign, which can be used to verify when emails will be sent to contacts. This action is read-only and does not modify any campaign data. |
| `CONSTANT_CONTACT_GET_EMAIL_CAMPAIGN_ACTIVITY_SEND_HISTORY` | Get email campaign activity send history | GET the send history of an email campaign activity. Use this action when you need to retrieve the send history records for an email campaign activity in Constant Contact. This returns details about each time the email was sent, including the send date, contact count, recipient lists/segments, and send status. This is a read-only operation suitable for auditing email sends, tracking delivery status, or analyzing campaign performance over multiple sends. |
| `CONSTANT_CONTACT_GET_EMAIL_CAMPAIGN_ID_XREFS` | Get email campaign ID cross-references | GET a collection of V2 and V3 API Email Campaign ID cross-references. Use this action when you need to map V2 API campaignId values to V3 API campaign_id and campaign_activity_id values for email campaigns. The endpoint accepts up to 50 V2 campaignId values in each request. |
| `CONSTANT_CONTACT_GET_EMAIL_CAMPAIGNS_STATS_REPORT` | Get Email Campaign Statistics Report | GET statistics for one or more email campaigns. Use this action when you need to retrieve performance statistics for email campaigns, including open rates, click rates, bounce rates, unsubscribe rates, and delivery counts. You can request statistics for multiple campaigns by providing comma-separated campaign IDs. This is a read-only operation that returns aggregated email campaign performance metrics. The response includes both percentage-based and count-based statistics for each campaign. |
| `CONSTANT_CONTACT_GET_EVENT` | Get Event | GET details for a single event by its unique ID. Use this action when you need to retrieve detailed information about a specific event in your Constant Contact account, such as its name, description, timing, location, organizer, ticket types, registration settings, or other configuration. This is a read-only operation that does not modify any data. |
| `CONSTANT_CONTACT_GET_LIST_ID_XREFS` | Get list ID cross-references | GET a collection of V2 and V3 API List IDs cross-references. Use this action when you need to map V2 API sequence_ids to V3 API list_ids for contact lists. The endpoint accepts up to 500 sequence_ids at a time and returns the corresponding V3 list_id values for each V2 sequence_id. |
| `CONSTANT_CONTACT_GET_PARTNER_WEBHOOK_SUBSCRIPTION` | Get Partner Webhook Subscription | GET details for a specific Partner Webhook Topic Subscription by its ID. Use this action when you need to retrieve information about a specific webhook topic subscription in your Constant Contact account, such as the webhook callback URI, topic name, description, and topic type. |
| `CONSTANT_CONTACT_GET_RESEND_TO_NON_OPENERS` | Get resend to non-openers | GET Details for a Resend to Non-openers Campaign Activity. Use this action when you need to retrieve details about a resend to non-openers campaign activity. This includes information about the resend schedule, timing, status, and subject line used for the campaign. This action requires the campaign_activity_id which can be obtained from the campaign activities endpoint or campaign details endpoint. |
| `CONSTANT_CONTACT_GET_SEGMENT` | Get Segment | GET details for a specific segment by its unique ID. Use this action when you need to retrieve detailed information about a specific segment in your Constant Contact account, such as its name, segment criteria, and creation/update timestamps. This is a read-only operation that does not modify any data. |
| `CONSTANT_CONTACT_IMPORT_CONTACTS_FROM_FILE` | Import contacts from CSV file | Import contacts into Constant Contact from a CSV file. Use this action when you need to bulk import contacts from a CSV file into Constant Contact contact lists. The CSV file must include either an 'email' or 'sms_number' column. Supports custom fields with 'cf:' prefix. The activity is processed asynchronously - poll the activity status endpoint to check completion. Note: The base_url should not include /v3 as it's appended in the endpoint path_template. |
| `CONSTANT_CONTACT_IMPORT_CONTACTS_FROM_JSON` | Import contacts from JSON | Bulk import contacts into Constant Contact using JSON format. Use this action when you need to add multiple contacts at once by providing contact data in JSON format. Each contact must have either an email_address or phone_number. Optionally, you can specify list_ids to add contacts to specific contact lists during import. The contacts are processed asynchronously and the response returns an activity_id to track the import progress. |
| `CONSTANT_CONTACT_LIST_ACCOUNT_EMAIL_ADDRESSES` | List account email addresses | GET a Collection of Account Email Addresses. Use this action when you need to retrieve all email addresses associated with a Constant Contact account. Supports filtering by confirmation status (CONFIRMED/UNCONFIRMED), role code (CONTACT/BILLING/REPLY_TO/JOURNALING/OTHER), or a specific email address. This is a read-only operation that requires the 'account_read' OAuth scope. |
| `CONSTANT_CONTACT_LIST_ACCOUNT_USER_PRIVILEGES` | List account user privileges | Get the user privileges associated with your access token. Use this action when you need to determine what permissions the authenticated user has within the Constant Contact API. This is a read-only operation that retrieves privileges without requiring any parameters. |
| `CONSTANT_CONTACT_LIST_ACTIVITY_STATUSES` | List activity statuses | GET a collection of bulk activities. Use this action when you need to retrieve all bulk activities or filter by status (processing, completed, cancelled, failed, or timed_out). This is useful for monitoring batch operations like contact imports, file exports, or list membership changes. |
| `CONSTANT_CONTACT_LIST_CONTACT_LISTS` | List Contact Lists | GET all contact lists for the Constant Contact account. Use this action when you need to retrieve all contact lists from a Constant Contact account. You can filter by name or status, and optionally include membership counts for each list. Results are paginated and can be limited using the limit parameter. This is a read-only operation that returns metadata about contact lists such as names, statuses, and membership information. |
| `CONSTANT_CONTACT_LIST_CONTACTS` | List contacts | GET Contacts Collection to retrieve a list of contacts from Constant Contact. Use this action when you need to fetch contacts from your Constant Contact account, with optional filtering by status, email, lists, segments, tags, or update date. Returns up to 500 contacts at a time with pagination support. This is a read-only operation suitable for retrieving contact collections for analysis, synchronization, or display purposes. |
| `CONSTANT_CONTACT_LIST_CONTACT_TAGS` | List contact tags | GET Details for All Tags - Retrieves all contact tags for the account. Use this action when you need to fetch a list of all tags available in your Constant Contact account. You can optionally include the count of contacts associated with each tag by setting include_count to true. This is a read-only operation that returns tag metadata such as names, sources, and timestamps. |
| `CONSTANT_CONTACT_LIST_CUSTOM_FIELDS` | List contact custom fields | GET custom_fields Collection to retrieve all contact custom field definitions. Use this action when you need to fetch the available custom field definitions that can be used for contacts in Constant Contact. This is a read-only operation that returns metadata about custom fields such as labels, types, and available choices. |
| `CONSTANT_CONTACT_LIST_EMAIL_CAMPAIGNS` | List Email Campaigns | GET a collection of email campaigns from Constant Contact. Use this action when you need to retrieve email campaigns from your Constant Contact account. You can filter results by creation date using before_date and after_date parameters, and control the number of results using the limit parameter. Results are paginated with optional cursor-based pagination via the next link. This is a read-only operation that returns campaign metadata including names, statuses, creation dates, and activity information. Note: The limit parameter defaults to 25 and must be between 1 and 500. |
| `CONSTANT_CONTACT_LIST_EMAIL_CAMPAIGN_SUMMARIES_REPORT` | List Email Campaign Summaries Report | GET an Email Campaigns Summary Report from Constant Contact. Use this action when you need to retrieve an aggregated summary report of all bulk email campaigns, including unique counts for bounces, clicks, opens, sent, unsubscribes, and forwards, as well as aggregated percentage rates for the campaigns on the current page. This is a read-only operation useful for analyzing overall email campaign performance and generating executive-level reports. Note: The limit parameter defaults to 25 and must be between 1 and 500. Pagination is supported via the next link in the response. |
| `CONSTANT_CONTACT_LIST_EMAIL_DID_NOT_OPENS_REPORT` | List Email Did Not Opens Report | GET an Email Did Not Opens Report to retrieve a list of contacts who did not open a specific email campaign. Use this action when you need to analyze email engagement by identifying contacts that received but did not open a specific email campaign activity. This is useful for re-engagement campaigns, follow-up emails, or engagement analysis. This is a read-only operation that retrieves tracking data without modifying any data. |
| `CONSTANT_CONTACT_LIST_EMAIL_FORWARDS_REPORT` | List email forwards report | GET an Email Forwards Report for a specific email campaign activity. Use this action when you need to retrieve tracking data about email forwards for a specific email campaign activity in Constant Contact. This returns a list of contacts who forwarded the email, including their contact details and the timestamp of the forward. This is a read-only operation suitable for analyzing email campaign engagement through forwards. |
| `CONSTANT_CONTACT_LIST_EMAIL_OPTOUTS_REPORT` | List email opt-outs report | GET an Email Opt-outs Report for a specific email campaign activity. Use this action when you need to retrieve a list of contacts who have opted out of a specific email campaign. This provides detailed tracking information including contact identifiers, email addresses, opt-out timestamps, and reason for opting out. This is a read-only operation suitable for generating reports, analyzing campaign performance, or syncing opt-out data with external systems. Note: The campaign_activity_id should be the UUID of an email campaign activity, not the campaign itself. |
| `CONSTANT_CONTACT_LIST_EMAIL_UNIQUE_OPENS_REPORT` | List Email Unique Opens Report | GET an email unique opens report for a campaign activity. Use this action when you need to retrieve a list of contacts who uniquely opened a specific email campaign activity. This is useful for analyzing email engagement, understanding which contacts opened your emails, and tracking campaign performance. The report includes contact details such as email address, name, device type, and the timestamp of each unique open event. Note: This is a read-only operation that retrieves tracking data. |
| `CONSTANT_CONTACT_LIST_EVENTS` | List Events | GET a collection of events from Constant Contact. Use this action when you need to retrieve events from your Constant Contact account, with optional filtering by status. Results are paginated using cursor-based pagination. This is a read-only operation suitable for retrieving event collections for management, synchronization, or display purposes. |
| `CONSTANT_CONTACT_LIST_EVENT_TRACK_REGISTRATIONS` | List event track registrations | GET registrations for an event track to retrieve a list of registrations. Use this action when you need to fetch registrations for a specific event track in your Constant Contact account, with optional filtering by registration status, payment status, or search text. Supports pagination using cursors and allows sorting by various fields. This is a read-only operation suitable for retrieving registration collections for reporting, analytics, or event management purposes. |
| `CONSTANT_CONTACT_LIST_LANDING_PAGE_CONTACT_OPENS_REPORT` | List Landing Page Contact Opens Report | GET a Contacts Opens Landing Page Report. Use this action when you need to retrieve a list of contacts who opened a specific landing page campaign. This is useful for analyzing engagement with your landing pages and understanding which contacts have shown interest by opening your content. The response includes tracking activities with contact details, device type, timestamps, and optional SMS channel information. Results can be filtered by contact attributes and paginated using the limit parameter. |
| `CONSTANT_CONTACT_LIST_LANDING_PAGE_UNIQUE_CONTACT_ADDS_REPORT` | List Landing Page Unique Contact Adds Report | GET a Unique Contacts Adds Landing Page Report for a specific landing page campaign activity. Use this action when you need to retrieve a list of contacts that were added through a landing page campaign. This report shows which contacts signed up via the landing page and includes their contact details along with timing information. This is useful for analyzing landing page conversion performance and contact acquisition. The results are paginated with a default limit of 50 items per page (maximum 500). Use the contacts_filter parameter to search for specific contacts by name or email. |
| `CONSTANT_CONTACT_LIST_LANDING_PAGE_UNIQUE_CONTACT_CLICKS_REPORT` | List Landing Page Unique Contact Clicks Report | GET unique contact clicks data for a landing page campaign. Use this action when you need to retrieve detailed click tracking data for contacts who clicked on links in a landing page campaign. This includes contact information (name, email), click timestamps, device type, and the specific URLs clicked. The results are paginated and can be filtered by contact name or email. |
| `CONSTANT_CONTACT_LIST_LANDING_PAGE_UNIQUE_CONTACT_OPENS_REPORT` | List Landing Page Unique Contact Opens Report | GET a Unique Contacts Opens Landing Page Report to retrieve a list of contacts who uniquely opened a specific landing page campaign. Use this action when you need to analyze landing page engagement by identifying contacts that opened a specific landing page campaign activity. This is useful for engagement analysis, follow-up actions, or campaign performance evaluation. This is a read-only operation that retrieves tracking data without modifying any data. |
| `CONSTANT_CONTACT_LIST_LANDING_PAGE_UNIQUE_CONTACT_UPDATES_REPORT` | List landing page unique contact updates report | GET a Unique Contacts Updates Landing Page Report for a specific landing page campaign activity. Use this action when you need to retrieve tracking data about contacts who made profile updates after visiting a landing page. This returns a list of contacts who updated their information, including their contact details and the timestamp of the update. This is a read-only operation suitable for analyzing landing page engagement and contact data quality. Note: The campaign_activity_id should be the UUID of a landing page campaign activity. |
| `CONSTANT_CONTACT_LIST_SEGMENTS` | List Segments | GET all segments for the Constant Contact account. Use this action when you need to retrieve all segments from a Constant Contact account. Segments are used to target a subset of contacts based on criteria such as demographics, behavior, or custom conditions. Results are paginated and can be sorted by date, name, or segment ID. This is a read-only operation that returns metadata about segments such as names, statuses, and timestamps for creation and updates. |
| `CONSTANT_CONTACT_LIST_SMS_CAMPAIGN_SUMMARIES_REPORT` | List SMS Campaign Summaries Report | GET an SMS Campaigns Summary Report. Use this action when you need to retrieve summary statistics and performance metrics for SMS campaigns. This is useful for analyzing overall SMS campaign performance, including delivery rates, click rates, bounce rates, and unsubscribe rates across multiple campaigns within a specified date range. Note: This is a read-only operation that retrieves aggregated campaign data. |
| `CONSTANT_CONTACT_LIST_SOCIAL_CONNECTIONS` | List Social Connections | GET social network connections for a Constant Contact account. Use this action when you need to retrieve all social network accounts (such as Facebook, Instagram, LinkedIn, or TikTok) that are connected to the Constant Contact account. This is a read-only operation that returns information about each connection including account details and connection status. The response includes a list of connections, each containing account information (display name, username, profile URL) and connection status (active, disconnected, error, rate_limited). |
| `CONSTANT_CONTACT_LIST_SOCIAL_HASHTAG_GROUPS` | List Social Hashtag Groups | GET hashtag groups - Retrieves a paginated list of social hashtag groups. Use this action when you need to fetch all hashtag groups available in your Constant Contact account. Hashtag groups are named collections of hashtags that can be reused when creating social posts. Results are paginated with a maximum page size of 5 groups per request. This is a read-only operation that returns hashtag group metadata such as names, IDs, and the list of hashtags contained in each group. |
| `CONSTANT_CONTACT_LIST_SOCIAL_PROFILES` | List Social Profiles | GET social media profiles from Constant Contact. Use this action when you need to retrieve all social media profiles (such as Facebook Business Pages, Instagram profiles, Twitter accounts, LinkedIn pages, or TikTok accounts) connected to a Constant Contact account. This is a read-only operation that returns profile information including connection status, handles, URLs, and optional accessibility status. Note: Due to performance and/or rate-limit issues, some properties may be cached. Where possible, caching will be limited to 15 minutes. |
| `CONSTANT_CONTACT_REMOVE_CONTACT_TAGGING` | Remove Contact Tagging | Remove tagging from contacts in Constant Contact. Use this action when you need to asynchronously remove tagging from contacts identified by specific contact IDs, list IDs, tag IDs, all active contacts, or new subscribers. The removal is processed as an asynchronous activity - check the activity status to monitor progress. |
| `CONSTANT_CONTACT_REMOVE_CONTACT_TAGGINGS` | Remove Tags from Contacts | Remove tags from contacts in Constant Contact. Use this action when you need to asynchronously remove one or more tags from contacts identified by specific contact IDs, list IDs, all active contacts, or new subscribers. The removal is processed as an asynchronous activity - check the activity status to monitor progress. |
| `CONSTANT_CONTACT_REMOVE_LIST_MEMBERSHIPS` | Remove contacts from lists | Create a Remove Contacts from Lists activity to remove contacts from one or more lists. Use this action when you need to bulk-remove contacts from Constant Contact lists. The activity is queued for asynchronous processing and returns an activity_id that can be used to track the status of the operation. |
| `CONSTANT_CONTACT_RENAME_EMAIL_CAMPAIGN` | Rename Email Campaign | PATCH (Update) the name of an existing email campaign in Constant Contact. Use this action when you need to rename an existing email campaign. You must provide the campaign ID of the email campaign you want to rename and the new name for the campaign. The campaign name must be unique within your account. Note: This action only updates the campaign name. Other campaign properties remain unchanged. Attempting to use a duplicate name will result in a 409 Conflict error. |
| `CONSTANT_CONTACT_RENAME_SEGMENT` | Rename Segment | PATCH (rename) an existing segment in Constant Contact. Use this action when you need to rename an existing segment. You must provide the segment ID of the segment you want to rename and the new name for the segment. The segment name must be unique within your account. Note: This action only updates the segment name. Other segment properties (such as segment_criteria) remain unchanged. Attempting to use a duplicate name will result in a 409 Conflict error. |
| `CONSTANT_CONTACT_RESUBSCRIBE_CONTACT` | Resubscribe Contact | Resubscribe an unsubscribed contact to one or more contact lists. Use this action when you need to reactivate a contact that was previously unsubscribed and add them back to specific contact lists. The contact's status will be changed from 'unsubscribed' to 'active', and they will be added to the specified lists. This action is useful for managing contact re-engagement campaigns or when a contact requests to be resubscribed after previously opting out. |
| `CONSTANT_CONTACT_UNDO_CHECK_IN_EVENT_TICKETS` | Undo Event Ticket Check-In | Undo check-in for event tickets. Use this action when you need to mark previously checked-in event tickets as not checked in. This reverses the check-in operation for the specified order ticket keys. Note: The API returns 204 No Content on success with an empty response body. |
| `CONSTANT_CONTACT_UPDATE_ACCOUNT_DETAILS` | Update Account Details | PUT (update) Account Details for the authenticated user. Use this action when you need to update the account details such as the account owner's contact information, organization name, or address. This action allows modification of all editable account properties. Changes to read-only fields are ignored by the API. |
| `CONSTANT_CONTACT_UPDATE_ACCOUNT_PHYSICAL_ADDRESS` | Update Account Physical Address | PUT (update) the Physical Address for an Account. Use this action when you need to update or set the physical address information for a Constant Contact account. This action sends a PUT request to update the account's physical address with the provided address details. Required fields: address_line1, city, and country_code. For US or CA addresses, include state_code and postal_code. For other countries, use state_name instead of state_code. |
| `CONSTANT_CONTACT_UPDATE_CONTACT` | Update Contact | PUT (update) an existing contact in Constant Contact. Use this action when you need to update an existing contact's information such as name, email address, phone numbers, addresses, or list/tag assignments. The contact ID is required to identify which contact to update. All provided fields will be updated; omitted fields will remain unchanged. This action requires the 'contact_update' OAuth scope. |
| `CONSTANT_CONTACT_UPDATE_CONTACT_LIST` | Update Contact List | PUT (update) an existing contact list in Constant Contact. Use this action when you need to update the name, description, or favorite status of an existing contact list. The list ID is required to identify which list to update. Note: The contact list name must be unique within your account. Attempting to use a duplicate name will result in a 409 Conflict error. |
| `CONSTANT_CONTACT_UPDATE_CONTACT_TAG` | Update Contact Tag | PUT (Update) a Tag. Use this action when you need to rename an existing contact tag in Constant Contact. The tag name must be unique within your account. |
| `CONSTANT_CONTACT_UPDATE_CUSTOM_FIELD` | Update Custom Field | Update an existing contact custom field in Constant Contact. Use this action when you need to modify the label, type, or choices of an existing custom field. Properties omitted in the PUT request are overwritten with null values. This action is idempotent - updating a field with the same data produces the same result. |
| `CONSTANT_CONTACT_UPDATE_EMAIL_CAMPAIGN_ACTIVITY` | Update Email Campaign Activity | PUT (Update) an Email Campaign Activity in Constant Contact. Use this action when you need to modify an existing email campaign activity such as updating the email content, subject line, sender information, recipient lists, or schedule. The campaign activity ID is required to identify which activity to update. Note: Only format_type 1 and 5 support custom html_content. Format types 2-4 use the editor-based content and ignore html_content. The physical_address_in_footer is required for CAN-SPAM compliance. |
| `CONSTANT_CONTACT_UPDATE_EVENT` | Update Event | PATCH (update) an existing event in Constant Contact. Use this action when you need to modify event details such as name, title, description, dates, location, or status. Only include fields that you want to update - other fields remain unchanged. This action returns 204 No Content on success with an empty response body. This action requires the 'campaign_data' OAuth scope. |
| `CONSTANT_CONTACT_UPDATE_EVENT_TRACK_REGISTRATION_PAYMENT_STATUS` | Update Event Track Registration Payment Status | Update the payment status for event track registrations in Constant Contact. Use this action when you need to update the payment status for one or more registrations of an event track. This is commonly used to mark registrations as paid, pending, refunded, or failed after processing payments. The action requires the event ID, track ID, the new payment status, and a list of registration IDs to update. Note: Some registrations may fail to update while others succeed (207 Multi-Status). Check the response results for details on each registration update outcome. |
| `CONSTANT_CONTACT_UPDATE_EVENT_TRACK_REGISTRATIONS` | Update Event Track Registrations | PUT (update) registration status for event track registrations. Use this action when you need to update the registration status (APPROVED, CANCELED, or DECLINED) for one or more registrations within an event track in Constant Contact. This action supports batch updates - you can update multiple registrations at once by providing a list of registration IDs. The action also supports optional inventory management via the return_items_to_inventory parameter. This action requires the 'campaign_data' OAuth scope. |
| `CONSTANT_CONTACT_UPDATE_SEGMENT` | Update Segment | PUT (update) an existing segment in Constant Contact. Use this action when you need to update an existing segment's name or contact selection criteria. The segment ID is required to identify which segment to update. Both name and segment_criteria are required in the request body. Note: The segment_criteria must be formatted as single-string escaped JSON, and the top-level group type must be 'and'. Attempting to use duplicate names will result in a 409 Conflict error. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Constant Contact MCP server is an implementation of the Model Context Protocol that connects your AI agents and assistants directly to Constant Contact. Instead of manually wiring Constant Contact APIs, OAuth, and scopes yourself, you get a structured, tool-based interface that an LLM can call safely.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

You will need:
- A Composio API key
- An OpenAI API key (used by Autogen's OpenAIChatCompletionClient)
- A Constant Contact account you can connect to Composio
- Some basic familiarity with Autogen and Python async

### 1. Getting API Keys for OpenAI and Composio

OpenAI API Key
- Go to the [OpenAI dashboard](https://platform.openai.com/settings/organization/api-keys) and create an API key. You'll need credits to use the models, or you can connect to another model provider.
- Keep the API key safe.
Composio API Key
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Navigate to your API settings and generate a new API key.
- Store this key securely as you'll need it for authentication.

### 2. Install dependencies

Install Composio, Autogen extensions, and dotenv.
What's happening:
- composio connects your agent to Constant Contact via MCP
- autogen-agentchat provides the AssistantAgent class
- autogen-ext-openai provides the OpenAI model client
- autogen-ext-tools provides MCP workbench support
```bash
pip install composio python-dotenv
pip install autogen-agentchat autogen-ext-openai autogen-ext-tools
```

### 3. Set up environment variables

Create a .env file in your project folder.
What's happening:
- COMPOSIO_API_KEY is required to talk to Composio
- OPENAI_API_KEY is used by Autogen's OpenAI client
- USER_ID is how Composio identifies which user's Constant Contact connections to use
```bash
COMPOSIO_API_KEY=your-composio-api-key
OPENAI_API_KEY=your-openai-api-key
USER_ID=your-user-identifier@example.com
```

### 4. Import dependencies and create Tool Router session

What's happening:
- load_dotenv() reads your .env file
- Composio(api_key=...) initializes the SDK
- create(...) creates a Tool Router session that exposes Constant Contact tools
- session.mcp.url is the MCP endpoint that Autogen will connect to
```python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams

load_dotenv()

async def main():
    # Initialize Composio and create a Constant Contact session
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    session = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["constant_contact"]
    )
    url = session.mcp.url
```

### 5. Configure MCP parameters for Autogen

Autogen expects parameters describing how to talk to the MCP server. That is what StreamableHttpServerParams is for.
What's happening:
- url points to the Tool Router MCP endpoint from Composio
- timeout is the HTTP timeout for requests
- sse_read_timeout controls how long to wait when streaming responses
- terminate_on_close=True cleans up the MCP server process when the workbench is closed
```python
# Configure MCP server parameters for Streamable HTTP
server_params = StreamableHttpServerParams(
    url=url,
    timeout=30.0,
    sse_read_timeout=300.0,
    terminate_on_close=True,
    headers={"x-api-key": os.getenv("COMPOSIO_API_KEY")}
)
```

### 6. Create the model client and agent

What's happening:
- OpenAIChatCompletionClient wraps the OpenAI model for Autogen
- McpWorkbench connects the agent to the MCP tools
- AssistantAgent is configured with the Constant Contact tools from the workbench
```python
# Create model client
model_client = OpenAIChatCompletionClient(
    model="gpt-5",
    api_key=os.getenv("OPENAI_API_KEY")
)

# Use McpWorkbench as context manager
async with McpWorkbench(server_params) as workbench:
    # Create Constant Contact assistant agent with MCP tools
    agent = AssistantAgent(
        name="constant_contact_assistant",
        description="An AI assistant that helps with Constant Contact operations.",
        model_client=model_client,
        workbench=workbench,
        model_client_stream=True,
        max_tool_iterations=10
    )
```

### 7. Run the interactive chat loop

What's happening:
- The script prompts you in a loop with You:
- Autogen passes your input to the model, which decides which Constant Contact tools to call via MCP
- agent.run_stream(...) yields streaming messages as the agent thinks and calls tools
- Typing exit, quit, or bye ends the loop
```python
print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
print("Ask any Constant Contact related question or task to the agent.\n")

# Conversation loop
while True:
    user_input = input("You: ").strip()

    if user_input.lower() in ["exit", "quit", "bye"]:
        print("\nGoodbye!")
        break

    if not user_input:
        continue

    print("\nAgent is thinking...\n")

    # Run the agent with streaming
    try:
        response_text = ""
        async for message in agent.run_stream(task=user_input):
            if hasattr(message, "content") and message.content:
                response_text = message.content

        # Print the final response
        if response_text:
            print(f"Agent: {response_text}\n")
        else:
            print("Agent: I encountered an issue processing your request.\n")

    except Exception as e:
        print(f"Agent: Sorry, I encountered an error: {str(e)}\n")
```

## Complete Code

```python
import asyncio
import os
from dotenv import load_dotenv
from composio import Composio

from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams

load_dotenv()

async def main():
    # Initialize Composio and create a Constant Contact session
    composio = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
    session = composio.create(
        user_id=os.getenv("USER_ID"),
        toolkits=["constant_contact"]
    )
    url = session.mcp.url

    # Configure MCP server parameters for Streamable HTTP
    server_params = StreamableHttpServerParams(
        url=url,
        timeout=30.0,
        sse_read_timeout=300.0,
        terminate_on_close=True,
        headers={"x-api-key": os.getenv("COMPOSIO_API_KEY")}
    )

    # Create model client
    model_client = OpenAIChatCompletionClient(
        model="gpt-5",
        api_key=os.getenv("OPENAI_API_KEY")
    )

    # Use McpWorkbench as context manager
    async with McpWorkbench(server_params) as workbench:
        # Create Constant Contact assistant agent with MCP tools
        agent = AssistantAgent(
            name="constant_contact_assistant",
            description="An AI assistant that helps with Constant Contact operations.",
            model_client=model_client,
            workbench=workbench,
            model_client_stream=True,
            max_tool_iterations=10
        )

        print("Chat started! Type 'exit' or 'quit' to end the conversation.\n")
        print("Ask any Constant Contact related question or task to the agent.\n")

        # Conversation loop
        while True:
            user_input = input("You: ").strip()

            if user_input.lower() in ['exit', 'quit', 'bye']:
                print("\nGoodbye!")
                break

            if not user_input:
                continue

            print("\nAgent is thinking...\n")

            # Run the agent with streaming
            try:
                response_text = ""
                async for message in agent.run_stream(task=user_input):
                    if hasattr(message, 'content') and message.content:
                        response_text = message.content

                # Print the final response
                if response_text:
                    print(f"Agent: {response_text}\n")
                else:
                    print("Agent: I encountered an issue processing your request.\n")

            except Exception as e:
                print(f"Agent: Sorry, I encountered an error: {str(e)}\n")

if __name__ == "__main__":
    asyncio.run(main())
```

## Conclusion

You now have an Autogen assistant wired into Constant Contact through Composio's Tool Router and MCP. From here you can:
- Add more toolkits to the toolkits list, for example notion or hubspot
- Refine the agent description to point it at specific workflows
- Wrap this script behind a UI, Slack bot, or internal tool
Once the pattern is clear for Constant Contact, you can reuse the same structure for other MCP-enabled apps with minimal code changes.

## How to build Constant Contact MCP Agent with another framework

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

## Related Toolkits

- [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.
- [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.
- [Beamer](https://composio.dev/toolkits/beamer) - Beamer is a news and changelog platform for in-app announcements and feature updates. It helps companies boost user engagement by sharing news where users are most active.
- [Benchmark email](https://composio.dev/toolkits/benchmark_email) - Benchmark Email is a platform for creating, sending, and tracking email campaigns. It's built to help you engage audiences and analyze results—all in one place.
- [Bigmailer](https://composio.dev/toolkits/bigmailer) - BigMailer is an email marketing platform for managing multiple brands with white-labeling and automation. It helps teams streamline campaigns and simplify integration with Amazon SES.
- [Brandfetch](https://composio.dev/toolkits/brandfetch) - Brandfetch is an API that delivers company logos, colors, and visual branding assets. It helps marketers and developers keep brand visuals consistent everywhere.
- [Brevo](https://composio.dev/toolkits/brevo) - Brevo is an all-in-one email and SMS marketing platform for transactional messaging, automation, and CRM. It helps businesses engage customers and streamline communications through powerful campaign tools.
- [Campayn](https://composio.dev/toolkits/campayn) - Campayn is an email marketing platform for creating, sending, and managing campaigns. It helps businesses engage contacts and grow audiences with easy-to-use tools.
- [Cardly](https://composio.dev/toolkits/cardly) - Cardly is a platform for creating and sending personalized direct mail to customers. It helps businesses break through the digital clutter by getting real engagement via physical mailboxes.
- [ClickSend](https://composio.dev/toolkits/clicksend) - ClickSend is a cloud-based SMS and email marketing platform for businesses. It streamlines communication by enabling quick message delivery and contact management.
- [Crustdata](https://composio.dev/toolkits/crustdata) - CrustData is an AI-powered data intelligence platform for real-time company and people data. It helps B2B sales teams, AI SDRs, and investors react to live business signals.
- [Curated](https://composio.dev/toolkits/curated) - Curated is a platform for collecting, curating, and publishing newsletters. It streamlines content aggregation and distribution for creators and teams.
- [Customerio](https://composio.dev/toolkits/customerio) - Customer.io is a customer engagement platform for targeted messaging across email, SMS, and push. Easily automate, segment, and track communications with your audience.
- [Cutt ly](https://composio.dev/toolkits/cutt_ly) - Cutt.ly is a URL shortening service for managing and analyzing links. Streamline your workflows with quick, trackable, and branded short URLs.
- [Demio](https://composio.dev/toolkits/demio) - Demio is webinar software built for marketers, offering both live and automated sessions with interactive features. It helps teams engage audiences and optimize lead generation through detailed analytics.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Constant Contact MCP?

With a standalone Constant Contact MCP server, the agents and LLMs can only access a fixed set of Constant Contact tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Constant Contact and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with Autogen?

Yes, you can. Autogen fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Constant Contact tools.

### Can I manage the permissions and scopes for Constant Contact while using Tool Router?

Yes, absolutely. You can configure which Constant Contact scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Constant Contact data and credentials are handled as safely as possible.

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