How to integrate Benchmark email MCP with Vercel AI SDK v6

This guide walks you through connecting Benchmark email to Vercel AI SDK v6 using the Composio tool router. By the end, you'll have a working Benchmark email agent that can list all confirmed sender email addresses, get your benchmark account plan details, fetch company profile and contact limits through natural language commands. This guide will help you understand how to give your Vercel AI SDK agent real control over a Benchmark email account through Composio's Benchmark email MCP server. Before we dive in, let's take a quick look at the key ideas and tools involved.

Benchmark email logoBenchmark email
Api Key

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.

298 Tools

Introduction

This guide walks you through connecting Benchmark email to Vercel AI SDK v6 using the Composio tool router. By the end, you'll have a working Benchmark email agent that can list all confirmed sender email addresses, get your benchmark account plan details, fetch company profile and contact limits through natural language commands.

This guide will help you understand how to give your Vercel AI SDK agent real control over a Benchmark email account through Composio's Benchmark email MCP server.

Before we dive in, let's take a quick look at the key ideas and tools involved.

Also integrate Benchmark email with

TL;DR

Here's what you'll learn:
  • How to set up and configure a Vercel AI SDK agent with Benchmark email integration
  • Using Composio's Tool Router to dynamically load and access Benchmark email tools
  • Creating an MCP client connection using HTTP transport
  • Building an interactive CLI chat interface with conversation history management
  • Handling tool calls and results within the Vercel AI SDK framework

What is Vercel AI SDK?

The Vercel AI SDK is a TypeScript library for building AI-powered applications. It provides tools for creating agents that can use external services and maintain conversation state.

Key features include:

  • streamText: Core function for streaming responses with real-time tool support
  • MCP Client: Built-in support for Model Context Protocol via @ai-sdk/mcp
  • Step Counting: Control multi-step tool execution with stopWhen: stepCountIs()
  • OpenAI Provider: Native integration with OpenAI models

What is the Benchmark email MCP server, and what's possible with it?

The Benchmark email MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Benchmark Email account. It provides structured and secure access to your email marketing data, so your agent can retrieve account info, manage contacts, handle lists, and automate campaign administration on your behalf.

  • Automated contact and list management: Effortlessly add, update, or delete contacts and lists, keeping your subscriber base organized and up to date.
  • Campaign cleanup and maintenance: Direct your agent to delete obsolete email campaigns or remove unneeded webhooks to keep your workspace tidy.
  • Account insights and configuration retrieval: Have the agent fetch client details, plan information, and account settings—perfect for reporting or reviewing your workspace setup.
  • Confirmed email address retrieval: Quickly pull all verified sender email addresses for compliance and seamless campaign sending.
  • Agency account and webhook control: Manage linked agency accounts and webhooks by deleting or updating them when no longer needed for more secure integrations.

What is the Composio tool router, and how does it fit here?

What is Composio SDK?

Composio's Composio SDK helps agents find the right tools for a task at runtime. You can plug in multiple toolkits (like Gmail, HubSpot, and GitHub), and the agent will identify the relevant app and action to complete multi-step workflows. This can reduce token usage and improve the reliability of tool calls. Read more here: Getting started with Composio SDK

The tool router generates a secure MCP URL that your agents can access to perform actions.

How the Composio SDK works

The Composio SDK follows a three-phase workflow:

  1. Discovery: Searches for tools matching your task and returns relevant toolkits with their details.
  2. Authentication: Checks for active connections. If missing, creates an auth config and returns a connection URL via Auth Link.
  3. Execution: Executes the action using the authenticated connection.

Step-by-step Guide

Step by step09 STEPS
1

Prerequisites

Before you begin, make sure you have:
  • Node.js and npm installed
  • A Composio account with API key
  • An OpenAI API key
2

Getting API Keys for OpenAI and Composio

OpenAI API Key
  • Go to the OpenAI dashboard 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.
  • Navigate to your API settings and generate a new API key.
  • Store this key securely as you'll need it for authentication.
3

Install required dependencies

bash
npm install @ai-sdk/openai @ai-sdk/mcp @composio/core ai dotenv

First, install the necessary packages for your project.

What you're installing:

  • @ai-sdk/openai: Vercel AI SDK's OpenAI provider
  • @ai-sdk/mcp: MCP client for Vercel AI SDK
  • @composio/core: Composio SDK for tool integration
  • ai: Core Vercel AI SDK
  • dotenv: Environment variable management
4

Set up environment variables

bash
OPENAI_API_KEY=your_openai_api_key_here
COMPOSIO_API_KEY=your_composio_api_key_here
COMPOSIO_USER_ID=your_user_id_here

Create a .env file in your project root.

What's needed:

  • OPENAI_API_KEY: Your OpenAI API key for GPT model access
  • COMPOSIO_API_KEY: Your Composio API key for tool access
  • COMPOSIO_USER_ID: A unique identifier for the user session
5

Import required modules and validate environment

typescript
import "dotenv/config";
import { openai } from "@ai-sdk/openai";
import { Composio } from "@composio/core";
import * as readline from "readline";
import { streamText, type ModelMessage, stepCountIs } from "ai";
import { createMCPClient } from "@ai-sdk/mcp";

const composioAPIKey = process.env.COMPOSIO_API_KEY;
const composioUserID = process.env.COMPOSIO_USER_ID;

if (!process.env.OPENAI_API_KEY) throw new Error("OPENAI_API_KEY is not set");
if (!composioAPIKey) throw new Error("COMPOSIO_API_KEY is not set");
if (!composioUserID) throw new Error("COMPOSIO_USER_ID is not set");

const composio = new Composio({
  apiKey: composioAPIKey,
});
What's happening:
  • We're importing all necessary libraries including Vercel AI SDK's OpenAI provider and Composio
  • The dotenv/config import automatically loads environment variables
  • The MCP client import enables connection to Composio's tool server
6

Create Tool Router session and initialize MCP client

typescript
async function main() {
  // Create a tool router session for the user
  const session = await composio.create(composioUserID!, {
    toolkits: ["benchmark_email"],
  });

  const mcpUrl = session.mcp.url;
What's happening:
  • We're creating a Tool Router session that gives your agent access to Benchmark email tools
  • The create method takes the user ID and specifies which toolkits should be available
  • The returned mcp object contains the URL and authentication headers needed to connect to the MCP server
  • This session provides access to all Benchmark email-related tools through the MCP protocol
7

Connect to MCP server and retrieve tools

typescript
const mcpClient = await createMCPClient({
  transport: {
    type: "http",
    url: mcpUrl,
    headers: session.mcp.headers, // Authentication headers for the Composio MCP server
  },
});

const tools = await mcpClient.tools();
What's happening:
  • We're creating an MCP client that connects to our Composio Tool Router session via HTTP
  • The mcp.url provides the endpoint, and mcp.headers contains authentication credentials
  • The type: "http" is important - Composio requires HTTP transport
  • tools() retrieves all available Benchmark email tools that the agent can use
8

Initialize conversation and CLI interface

typescript
let messages: ModelMessage[] = [];

console.log("Chat started! Type 'exit' or 'quit' to end the conversation.\n");
console.log(
  "Ask any questions related to benchmark_email, like summarize my last 5 emails, send an email, etc... :)))\n",
);

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: "> ",
});

rl.prompt();
What's happening:
  • We initialize an empty messages array to maintain conversation history
  • A readline interface is created to accept user input from the command line
  • Instructions are displayed to guide the user on how to interact with the agent
9

Handle user input and stream responses with real-time tool feedback

typescript
rl.on("line", async (userInput: string) => {
  const trimmedInput = userInput.trim();

  if (["exit", "quit", "bye"].includes(trimmedInput.toLowerCase())) {
    console.log("\nGoodbye!");
    rl.close();
    process.exit(0);
  }

  if (!trimmedInput) {
    rl.prompt();
    return;
  }

  messages.push({ role: "user", content: trimmedInput });
  console.log("\nAgent is thinking...\n");

  try {
    const stream = streamText({
      model: openai("gpt-5"),
      messages,
      tools,
      toolChoice: "auto",
      stopWhen: stepCountIs(10),
      onStepFinish: (step) => {
        for (const toolCall of step.toolCalls) {
          console.log(`[Using tool: ${toolCall.toolName}]`);
          }
          if (step.toolCalls.length > 0) {
            console.log(""); // Add space after tool calls
          }
        },
      });

      for await (const chunk of stream.textStream) {
        process.stdout.write(chunk);
      }

      console.log("\n\n---\n");

      // Get final result for message history
      const response = await stream.response;
      if (response?.messages?.length) {
        messages.push(...response.messages);
      }
    } catch (error) {
      console.error("\nAn error occurred while talking to the agent:");
      console.error(error);
      console.log(
        "\nYou can try again or restart the app if it keeps happening.\n",
      );
    } finally {
      rl.prompt();
    }
  });

  rl.on("close", async () => {
    await mcpClient.close();
    console.log("\n👋 Session ended.");
    process.exit(0);
  });
}

main().catch((err) => {
  console.error("Fatal error:", err);
  process.exit(1);
});
What's happening:
  • We use streamText instead of generateText to stream responses in real-time
  • toolChoice: "auto" allows the model to decide when to use Benchmark email tools
  • stopWhen: stepCountIs(10) allows up to 10 steps for complex multi-tool operations
  • onStepFinish callback displays which tools are being used in real-time
  • We iterate through the text stream to create a typewriter effect as the agent responds
  • The complete response is added to conversation history to maintain context
  • Errors are caught and displayed with helpful retry suggestions

Complete Code

Here's the complete code to get you started with Benchmark email and Vercel AI SDK:

typescript
import "dotenv/config";
import { openai } from "@ai-sdk/openai";
import { Composio } from "@composio/core";
import * as readline from "readline";
import { streamText, type ModelMessage, stepCountIs } from "ai";
import { createMCPClient } from "@ai-sdk/mcp";

const composioAPIKey = process.env.COMPOSIO_API_KEY;
const composioUserID = process.env.COMPOSIO_USER_ID;

if (!process.env.OPENAI_API_KEY) throw new Error("OPENAI_API_KEY is not set");
if (!composioAPIKey) throw new Error("COMPOSIO_API_KEY is not set");
if (!composioUserID) throw new Error("COMPOSIO_USER_ID is not set");

const composio = new Composio({
  apiKey: composioAPIKey,
});

async function main() {
  // Create a tool router session for the user
  const session = await composio.create(composioUserID!, {
    toolkits: ["benchmark_email"],
  });

  const mcpUrl = session.mcp.url;

  const mcpClient = await createMCPClient({
    transport: {
      type: "http",
      url: mcpUrl,
      headers: session.mcp.headers, // Authentication headers for the Composio MCP server
    },
  });

  const tools = await mcpClient.tools();

  let messages: ModelMessage[] = [];

  console.log("Chat started! Type 'exit' or 'quit' to end the conversation.\n");
  console.log(
    "Ask any questions related to benchmark_email, like summarize my last 5 emails, send an email, etc... :)))\n",
  );

  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: "> ",
  });

  rl.prompt();

  rl.on("line", async (userInput: string) => {
    const trimmedInput = userInput.trim();

    if (["exit", "quit", "bye"].includes(trimmedInput.toLowerCase())) {
      console.log("\nGoodbye!");
      rl.close();
      process.exit(0);
    }

    if (!trimmedInput) {
      rl.prompt();
      return;
    }

    messages.push({ role: "user", content: trimmedInput });
    console.log("\nAgent is thinking...\n");

    try {
      const stream = streamText({
        model: openai("gpt-5"),
        messages,
        tools,
        toolChoice: "auto",
        stopWhen: stepCountIs(10),
        onStepFinish: (step) => {
          for (const toolCall of step.toolCalls) {
            console.log(`[Using tool: ${toolCall.toolName}]`);
          }
          if (step.toolCalls.length > 0) {
            console.log(""); // Add space after tool calls
          }
        },
      });

      for await (const chunk of stream.textStream) {
        process.stdout.write(chunk);
      }

      console.log("\n\n---\n");

      // Get final result for message history
      const response = await stream.response;
      if (response?.messages?.length) {
        messages.push(...response.messages);
      }
    } catch (error) {
      console.error("\nAn error occurred while talking to the agent:");
      console.error(error);
      console.log(
        "\nYou can try again or restart the app if it keeps happening.\n",
      );
    } finally {
      rl.prompt();
    }
  });

  rl.on("close", async () => {
    await mcpClient.close();
    console.log("\n👋 Session ended.");
    process.exit(0);
  });
}

main().catch((err) => {
  console.error("Fatal error:", err);
  process.exit(1);
});

Conclusion

You've successfully built a Benchmark email agent using the Vercel AI SDK with streaming capabilities! This implementation provides a powerful foundation for building AI applications with natural language interfaces and real-time feedback.

Key features of this implementation:

  • Real-time streaming responses for a better user experience with typewriter effect
  • Live tool execution feedback showing which tools are being used as the agent works
  • Dynamic tool loading through Composio's Tool Router with secure authentication
  • Multi-step tool execution with configurable step limits (up to 10 steps)
  • Comprehensive error handling for robust agent execution
  • Conversation history maintenance for context-aware responses

You can extend this further by adding custom error handling, implementing specific business logic, or integrating additional Composio toolkits to create multi-app workflows.
TOOLS

Supported Tools

Every Benchmark email action and event your agent gets out of the box.

Add Email in Automation

Tool to add an email to an automation workflow.

Add Email to Archive

Tool to add an email to the archive page.

Add Email to Community

Tool to add an email campaign to the public community with category and keywords.

Add/Remove Inbox Tests from Sub-Account

Tool to add or remove inbox tests from a sub-account.

Check if responsive

Tool to check if the client is responsive.

Clean Contact List

Tool to clean a contact list by removing invalid or bounced email addresses.

Compare Contacts

Tool to compare contacts across multiple contact lists.

Connect Third-Party Service

Tool to get the OAuth authorization URL for connecting a third-party e-commerce or CRM service.

Copy Bulk Contacts

Tool to copy multiple contacts in bulk to target lists.

Copy Contacts

Tool to copy a contact to a specific list.

Copy Email in Automation

Tool to create a copy of an automation email.

Copy Existing Email

Tool to copy an existing email.

Copy Image to Sub-Account

Tool to copy an image to one or more sub-accounts.

Copy Signup Form

Tool to copy an existing signup form.

Create Automation Copy

Tool to create a copy of an existing automation.

Create Inbox

Tool to create a new inbox for email testing.

Create Segment from Contact IDs

Tool to create a segment from a list of contact IDs.

Create Signup Form

Tool to create a new signup form for collecting email subscribers.

Delete ABSplit Campaign

Tool to delete an ABSplit campaign configuration from an email.

Delete AB Test Email

Tool to move an AB test email to trash.

Delete A Poll

Tool to delete a poll by its ID.

Delete A Survey

Tool to delete a survey by its ID.

Delete Automation

Tool to delete an automation by its ID.

Delete Automation Email

Tool to delete an automation email from an automation workflow.

Delete Contact From All Lists By ID

Tool to delete a specific contact from all lists by list ID and contact ID.

Delete Contact From List

Tool to delete a contact from a specific list by ContactID.

Delete Contact From Search

Tool to delete a contact from the search contact page.

Delete Contact List

Tool to delete a contact list.

Delete Contacts From All Lists

Tool to delete selected contacts from all lists.

Delete Contacts From Current Lists

Tool to delete selected contacts from current lists.

Delete Email Campaign

Tool to delete an email campaign.

Delete Email from Archive

Tool to delete an email from the archive.

Permanently Delete Email from Trash

Tool to permanently delete an email from trash.

Delete Image

Tool to delete an image by its ID.

Delete Inbox

Tool to delete an inbox by its ID.

Delete Linked Agency Account

Tool to delete a linked agency account.

Delete List

Tool to delete one or more contact lists by their IDs.

Delete Product Association

Tool to delete a Shopify product association from Benchmark Email.

Delete Segment

Tool to delete a contact segment by its ID.

Delete Segment Criteria

Tool to delete criteria from a segment.

Delete Trash List

Tool to delete all trash contacts from a list.

Delete Video

Tool to delete one or more videos by their IDs.

Delete Webhook

Tool to delete a webhook from a contact list by its ID.

Disconnect eBay Integration

Tool to disconnect the eBay integration from the authenticated account.

Disconnect Etsy Integration

Tool to disconnect Etsy integration from the Benchmark Email account.

Disconnect Eventbrite Integration

Tool to disconnect the Eventbrite integration from Benchmark Email account.

Disconnect Facebook Integration

Tool to disconnect Facebook integration from Benchmark Email account.

Disconnect Facebook Events

Tool to disconnect the Facebook Events integration from Benchmark Email.

Disconnect Instagram Integration

Tool to disconnect the Instagram integration from Benchmark Email account.

Disconnect LinkedIn Integration

Tool to disconnect the LinkedIn integration from the Benchmark Email account.

Disconnect Pinterest Connection

Tool to disconnect the Pinterest integration from the Benchmark Email account.

Disconnect Salesforce Integration

Tool to disconnect the Salesforce integration from Benchmark Email account.

Disconnect Shopify

Tool to disconnect Shopify integration from Benchmark Email.

Disconnect Twitter Integration

Tool to disconnect Twitter integration from Benchmark Email account.

Download Contact Report

Tool to download contact list report.

Generate Support Ticket

Tool to generate a support ticket.

Get AB Split Details

Tool to get details for an AB split test by email ID.

Get AB Split Results

Tool to get the results for an AB split test.

Get AB Test Report

Tool to retrieve AB split test reports with pagination.

Get Abuse Campaign Report By Email ID

Tool to get abuse campaign report for an email by ID.

Get Abuse Report

Tool to get abuse report containing statistics about email abuse complaints.

Get Campaign Engagement List

Tool to retrieve campaign engagement statistics.

Get account summary

Tool to get account summary including plan type and image storage limit.

Get Active Contact Count

Tool to get the total count of all active contacts/emails in the account.

Get a List of AB Tests

Tool to retrieve a list of AB tests with optional filtering and pagination.

Get a list of images

Tool to retrieve a list of images.

Get All Confirmed Emails

Tool to retrieve all confirmed email addresses for the client account.

Get Archive Domain Name

Tool to get the archive domain name for the client.

Get Archive Email Details

Tool to get details of an archived email by its ArchiveID.

Get Archive Emails

Tool to retrieve a list of emails from the archive.

Get Archive Home Data

Tool to get archive home data for a specific domain and type.

Get Archive Home Page

Tool to get the archive home page containing archive entries.

Get Archive Pages

Tool to retrieve list of archive pages.

Get automation details

Tool to get details of an automation by its ID.

Get Automation Email Details

Tool to get details for an automation email.

Get automation summary report

Tool to get summary report of an automation by ID.

Get Badges List

Tool to retrieve all available email badges.

Get Bounces Report By Email ID

Tool to get bounces report for an email campaign by ID.

Get Campaign History By Email ID

Tool to get campaign history for an email by ID.

Get Click Contact Count

Tool to get click contact count for email campaigns.

Get Click HeatMap By Email ID

Tool to get click heatmap report for an email by ID.

Get Click Performance By Email ID

Tool to get click performance report for an email by ID.

Get Click Performance Details By Email

Tool to get click performance details for an email campaign by ID.

Get Clicks Report By Email ID

Tool to get clicks report for an email by ID.

Get Click URL Contact Count

Tool to get click URL contact count of engagement metrics.

Get Client Account Settings

Tool to get client account settings such as company, language, timezone, and sender info.

Get client details

Tool to get client details including profile data, contact count, and plan information.

Get client filter domain

Tool to get client filter domains.

Get Client Plan Information

Tool to get client's plan information including addons, email plan, and total contacts.

Get client profile details

Tool to get client's profile details like business city, country, phone, and company.

Get clients rating range

Tool to get clients rating range including min, max, and current rating values.

Get Commission List

Tool to get the partner commission list.

Get Community Category

Tool to retrieve a list of available community categories.

Get community domain

Tool to get the community domain name for the client.

Get Community Email By ID

Tool to get details of a community email by ID.

Get Contact Audit History

Tool to retrieve audit history for contacts in a specific list.

Get Contact Audit History Detail

Tool to get detailed audit history for a specific batch and group of contact changes.

Get Contact Details

Tool to retrieve detailed information for a specific contact including custom field values and rating.

Get Contact Import Status

Tool to get the status of contact import operations.

Get Contact List Deep View

Tool to fetch deep view of contact list(s) including all fields and field types.

Get Contact List Details

Tool to fetch detailed information for a contact list.

Get Contact List Field Names

Tool to retrieve field names and attributes for a contact list.

Get Contact Lists

Tool to retrieve all contact lists.

Get Contact Lists for Shopify

Tool to get Shopify integration contact lists and configuration.

Get contact list summary

Tool to get summary details and performance metrics of a contact list.

Get Contact Merge List

Tool to retrieve a list of contact lists that can be merged with a specified list.

Get Contact Report History

Tool to get engagement history for a specific contact by email address.

Get Contacts Count

Tool to get the count of contacts in specified lists and segments.

Get Filtered Contacts in List

Tool to fetch filtered and paginated contacts from a list by ListID.

Get Current Email at Time of Reset

Tool to get the current email address at the time of a reset request.

Get Delete List Check

Tool to check if contact lists can be deleted.

Get Details About Archive Page

Tool to get details about the archive page including URLs, share settings, and domain.

Get Details Of Poll

Tool to retrieve details of a specific poll by ID.

Get Digioh Username

Tool to get Digioh username for the authenticated account.

Get DMARC List

Tool to retrieve DMARC (Domain-based Message Authentication, Reporting & Conformance) list for the client account.

Get Download Report

Tool to get download report for a contact list.

Get download segment data

Tool to retrieve segment data for download.

Get eBay Seller ID

Tool to get the eBay Seller ID for the authenticated account.

Get eBay Site List

Tool to retrieve a list of available eBay sites for integration.

Get Integration Connection List

Tool to retrieve the list of editor integration connections.

Get email campaign details

Tool to get details for a specific email campaign by ID.

Get Email Opens by Country and Region

Tool to get a list of contacts who opened an email from a specific country and region.

Get Email Preview

Tool to get the preview of an email campaign.

Get Email Recipient Count

Tool to get the recipient count for an email campaign.

Get Email Report

Tool to get email reports with pagination and filtering options.

Get Email Report Forwards

Tool to get forwards report for an email campaign.

Get Email Spam Check

Tool to check spam score for an email campaign by ID.

Get Etsy Store Name

Tool to get the connected Etsy store name.

Get Eventbrite Username

Tool to get the Eventbrite username associated with the Benchmark Email account.

Get Facebook Account Holder

Tool to get Facebook account holder information.

Get Facebook Account Name

Tool to get the Facebook account name from Facebook Events integration.

Get Filtered Contacts with Extra Fields

Tool to fetch filtered and paginated contacts with custom/extra fields from a list by ListID.

Get Forwards Report By Email ID

Tool to get forwards report for an email campaign by ID.

Get Full Report of Survey

Tool to retrieve the full report of a survey including all responses and answers.

Get HTML for Archive Newsletter

Tool to get HTML content for an archive newsletter by domain and URL.

Get HTML for Button

Tool to get HTML content for a button URL from the archive.

Get HTML Signup Form

Tool to retrieve HTML and JavaScript embed code for a Tumbler signup form.

Get image details

Tool to get details of a specific image by its ID.

Get Image for Button

Tool to get HTML code for an 'Image' style archive button.

Get Inbox Detail Result

Tool to get inbox detail test statistics including total purchases, tests used, and remaining balance.

Get Inbox List

Tool to retrieve inbox list with optional filtering and pagination.

Get inbox master result

Tool to get Inbox Master Result by ID.

Get Individual Question Result Detail in Survey

Tool to get individual question result details for a specific respondent in a survey by email address.

Get Integration Authorization URL

Tool to get the OAuth authorization URL for integrating with third-party platforms.

Get layout list

Tool to retrieve a list of email layouts.

Get Linked Agency Account Details

Tool to get details of a linked agency account.

Get Link Detail By Email ID

Tool to get link detail report for an email campaign by ID.

Get LinkedIn Token

Tool to get LinkedIn integration token information.

Get Linked Agency Accounts

Tool to get list of linked agency accounts.

Get list mapping

Tool to get the field mapping of an uploaded contact list file.

Get List of Confirmed Emails

Tool to retrieve a list of confirmed email addresses for the client account.

Get List of Emails

Tool to retrieve all email campaigns with optional filters and pagination.

Get list of Giphy images

Tool to retrieve a list of Giphy images.

Get List of Help Topics

Tool to retrieve help topics from Benchmark Email.

Get List of Polls

Tool to retrieve a list of polls.

Get List of Shopify Products

Tool to get a list of Shopify products in HTML format.

Get List Upload Terms

Tool to get list upload terms from Benchmark Email.

Get Magento HTML dropdown

Tool to get Magento signup form dropdown HTML.

Get Magento HTML Selected

Tool to retrieve Magento HTML code for a selected signup form.

Get Non Contact Count

Tool to get the count of non-contacts based on email IDs and filter criteria.

Get notification

Tool to get client notifications from Benchmark Email.

Get Open Contact Count

Tool to get the count of contacts who opened specified email campaigns.

Get Opens Hourly Report By Email

Tool to get hourly opens report for an email campaign by ID.

Get Opens Location Report

Tool to get a list of contacts by location for an email campaign's opens.

Get Opens Location Report By Email

Tool to get a list of contacts who opened an email from a specific country.

Get Opens Report

Tool to get opens report for an email campaign by ID.

Get Partner Profile Details

Tool to get partner profile details including company information and payment settings.

Get PayPal Integration Link

Tool to retrieve the PayPal integration callback URL for a specific contact list.

Get PayPal Contact Lists

Tool to get contact lists formatted for PayPal integration.

Get Pinterest Username

Tool to retrieve the Pinterest username associated with the Benchmark Email account.

Get Poll Response Report

Tool to retrieve the response report of a poll by ID.

Get Preview of a Poll

Tool to get a preview/render of a poll by its ID.

Get referrals level 1 list

Tool to get level 1 referrals list for a specific month and year.

Get Referrals List

Tool to retrieve the list of partner referrals.

Get Report Answer Comment in Survey

Tool to retrieve comment answers from a survey report for a specific question.

Get Report Answer Other in Survey

Tool to retrieve 'other' text answers from survey questions that have an 'other' option.

Get Report Answer Text in Survey

Tool to retrieve text answers from survey questions.

Get Report Details By AB Test

Tool to get report details for a specific AB split test by ID and ABID.

Get Report Details By Email ID

Tool to get detailed report summary for an email campaign by ID.

Get Report Download

Tool to download email campaign report by type.

Get Report List of Survey

Tool to retrieve a paginated list of survey reports.

Get Report of Survey Individual Result

Tool to retrieve paginated individual survey results showing who responded and when.

Get Reports for Autoresponders

Tool to get reports for autoresponders with pagination and filtering options.

Resend Confirm Email

Tool to resend confirmation email to a specific email address.

Get RSS History By Email ID

Tool to get RSS history for an email campaign by ID.

Get Salesforce Integration Status

Tool to get Salesforce integration status and details from Benchmark Email account.

Get save as list

Tool to retrieve save-as-list data with optional filters.

Get Scheme

Tool to retrieve color schemes with optional filtering.

Get Segment Auto Generate Name

Tool to get an auto-generated segment name for a list.

Get Segment by ID

Tool to retrieve details of a specific contact segment by its ID.

Get Segment Details

Tool to retrieve contact details from a specific segment with optional filtering, pagination, and sorting.

Get Segment List

Tool to retrieve segment lists for a specific contact list by ListID.

Get Segments

Tool to retrieve a paginated list of contact segments.

Get Shopify Product List Tabular

Tool to get Shopify product list in tabular (HTML) format.

Get Signup Form Button Code

Tool to get the code for the signup form button.

Get Signup Form Contact Fields

Tool to get the contact fields of a signup form by ID.

Get Signup Form Details

Tool to get details for a specific signup form by ID.

Get SignupForm for Magento

Tool to get SignupForm data for Magento integration.

Get SignupForm For Unbounce

Tool to retrieve signup form integration data for Unbounce.

Get Signup Form Link

Tool to get the link URL for a specific signup form.

Get Signup Form List

Tool to retrieve all signup forms (listbuilder forms).

Get Signup Forms for Contact List

Tool to get a list of signup forms associated with a specific contact list.

Get SignupForm Tumbler

Tool to get third-party SignupForm Tumbler query string parameters.

Get Social Performance Report

Tool to get social performance report for an email campaign by ID.

Get sub-account balance

Tool to get the balance (plan limit) for a specific sub-account by ID.

Get sub-account details

Tool to get details for a specific sub-account by ID.

Get Sub-Account History

Tool to get sub-account history.

Get sub-account history details

Tool to get detailed history information for a specific sub-account billing cycle.

Get Sub-Accounts

Tool to retrieve all sub-accounts for the client.

Get Sub-Accounts Plan List

Tool to retrieve available plans for a sub-account.

Get Survey Details

Tool to retrieve details of a specific survey by ID.

Get survey report detail

Tool to get detailed report of a survey including questions, responses, and response counts.

Get template by template ID

Tool to get details for a specific email template by ID.

Get template category by ID

Tool to get details for a specific email template category by ID.

Get Template Category List

Tool to retrieve template category list with optional filters.

Get Template List of Survey

Tool to retrieve the list of survey templates.

Get Email Templates

Tool to retrieve email templates from Benchmark Email.

Get Templates for Signup Form Classic

Tool to retrieve templates for Signup Forms (Classic Only).

Get the clean count

Tool to get the clean count for a contact list.

Get Trash Count

Tool to get the count of contacts in the trash.

Get Tumbler Lists

Tool to get Tumbler signup form lists in HTML format.

Get Twitter Login Status

Tool to get Twitter login/integration status for the authenticated Benchmark Email account.

Get Unbounce Link

Tool to get the Unbounce integration URL for a specific contact list.

Get Unbounce Lists

Tool to get Unbounce contact lists in HTML format.

Get unique contact count

Tool to get the total count of unique contacts in the account.

Get Unopens Report By Email ID

Tool to get unopens report for an email campaign by ID.

Get Unsubscribe Report By Email ID

Tool to get unsubscribe report for an email campaign by ID.

Get URL List By Email ID

Tool to get URL list for a specific email campaign by ID.

Get URL Engagement List

Tool to retrieve URL engagement statistics for email campaigns.

Get Video Details

Tool to get details for a specific video by its ID.

Get Webhooks

Tool to retrieve all webhooks for a contact list.

Get web page ads detail

Tool to get web page ads detail from the Partner API.

Initiate Email Screen Capture

Tool to initiate the screen capture process for an email campaign.

Link Agency Account

Tool to link an agency account to your Benchmark Email account.

Log Out Twitter Tweets

Tool to log out of Twitter Tweets integration from Benchmark Email account.

Merge Contacts Into Existing List

Tool to merge contacts from source list(s) into an existing target list.

Merge Contacts Into New List

Tool to merge contacts from multiple lists into a new list.

Move Bulk Contacts

Tool to move contacts in bulk from a source list to one or more target lists.

Move Contacts

Tool to move contacts from one list to another.

Move Contact to Do Not Contact List

Tool to move a contact to the Do Not Contact (Master Unsubscribe) list.

Add / Update Scheme

Tool to add or update a color scheme.

Change Password

Tool to change the password for the client account.

Save Security PIN

Tool to save a new security PIN for the client account.

Send Reset Email

Tool to send a reset email link to change the primary email address.

Patch Update Client Settings

Tool to update client account settings.

Update Contact List

Tool to update an existing contact list.

Update/Edit Profile

Tool to update or edit profile information such as first name, last name, and phone number.

Update Webhook

Tool to update a webhook for a contact list by webhook ID.

Add Contact to List

Tool to add a new contact to a specific list.

Assign Product to List

Tool to assign a Shopify product to a list where purchasers are added.

Change Security PIN

Tool to change security PIN for the client account.

Copy Poll

Tool to copy an existing poll.

Create Contact List

Tool to create a new contact list.

Create Poll

Tool to create a new poll in Benchmark Email.

Create Segment Criteria

Tool to create criteria for a segment.

Create Webhook

Tool to create a new webhook for a contact list.

Disable Security PIN

Tool to disable security PIN for the client account.

Login Redirect Using Token

Tool to acquire a temporary token to an account.

Save Website Domain

Tool to save a website domain for your Benchmark Email account.

Send Confirm Email Verification

Tool to send confirm email verification.

Send PIN via Email

Tool to send PIN via email.

Configure Shopify Purchase List

Tool to configure Shopify purchase list integration.

Resend Emails to Contacts

Tool to resend confirmation emails to contacts in a specific list.

Restore Email From Trash

Tool to restore an email from trash.

Restore Trash List

Tool to restore deleted contact lists from trash.

Save Email Address

Tool to save email address(es) to a contact list in CSV format.

Save Verified Email Addresses

Tool to save email addresses which have verified URLs to a contact list.

Schedule Email Campaign

Tool to schedule an email campaign for sending at a specific date and time.

Search Contact Details by Email

Tool to search for contact details by email address and show lists they belong to and status.

Send Support Feedback

Tool to send support feedback or inquiry to Benchmark Email support team.

Send Test Email for Signup Form

Tool to send a test email for a signup form.

Set Responsive

Tool to set the client's responsive status.

Share Lists with SubAccounts

Tool to share contact lists with sub-accounts.

Share Template to Sub-Accounts

Tool to share an email template with sub-accounts.

Share Video

Tool to share/copy a video to other client accounts.

Test eBay Integration

Tool to test eBay integration and verify connection status.

Test Etsy Integration

Tool to test the Etsy integration connection with Benchmark Email.

Test Eventbrite Integration

Tool to test the Eventbrite integration connection with Benchmark Email.

Test Facebook Events Integration

Tool to test Facebook Events integration in Benchmark Email.

Test Facebook Integration

Tool to test Facebook integration status for the Benchmark Email account.

Test LinkedIn Connection

Tool to test the LinkedIn integration connection status.

Test Pinterest Integration

Tool to test the Pinterest integration connection for the Benchmark Email account.

Test Salesforce Integration

Tool to test the Salesforce integration connection.

Test Twitter Integration

Tool to test the Twitter/X integration connection.

Test Twitter Tweets

Tool to test Twitter tweets integration and retrieve follower information.

Update Archive Home Page

Tool to add an email to the archive home page with a specific view order.

Update Archive Home Page Data

Tool to update archive home page data like page title, logo, header, and footer.

Update Contact Details

Tool to update contact details in a specific list.

Update Email Campaign

Tool to update an existing email campaign.

Update Email Content for Automation

Tool to update email content for an automation workflow.

Update Linked Agency Account

Tool to update a linked agency account.

Update List Compilation Details

Tool to update the compilation details for a contact list file upload.

Update Partner Profile

Tool to update partner profile details including company name, email, phone, and PayPal email.

Update Poll

Tool to update an existing poll in Benchmark Email.

Update/Reset Email

Tool to reset the primary email address using a GUID from the reset email link.

Update Segment

Tool to update an existing contact segment.

Update Survey Status

Tool to update the status of a survey.

Upload Video

Tool to upload a video via URL.

FAQ

Frequently asked questions

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

Yes, you can. Vercel AI SDK v6 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 Benchmark email tools.

Yes, absolutely. You can configure which Benchmark email 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.

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 Benchmark email data and credentials are handled as safely as possible.

Start with Benchmark email.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Benchmark email tool your agent needs.Free to start.

Start building