Connect Interseller to ChatGPT: Manage Campaigns and Track Results
Learn how to connect Interseller to ChatGPT using a managed MCP server. Automate outreach workflows, verify prospect emails, and manage campaigns without writing custom integration code.
You want to connect Interseller to ChatGPT so your AI agents can autonomously manage outreach campaigns, verify prospect emails, and compile deliverability reports. If your team uses Claude, check out our guide on connecting Interseller to Claude or explore our broader architectural overview on connecting Interseller to AI Agents.
Sales development and outreach execution represent some of the highest-leverage workflows for an AI agent. Giving a Large Language Model (LLM) read and write access to your Interseller instance allows it to bridge the gap between intent and execution. However, integrating a custom SaaS tool natively into ChatGPT is an engineering challenge. You either spend weeks building, hosting, and maintaining a custom Model Context Protocol (MCP) server, or you use a managed infrastructure layer that handles the boilerplate for you.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Interseller, connect it natively to ChatGPT, and execute complex outreach workflows using natural language.
The Engineering Reality of the Interseller API
A custom MCP server is a self-hosted integration layer that translates an LLM's JSON-RPC tool calls into REST API requests. While Anthropic's open standard provides a predictable way for models to discover tools, implementing it against vendor APIs like Interseller brings unique operational hurdles.
If you decide to build a custom MCP server for Interseller, you are responsible for the entire API lifecycle. Here are the specific integration challenges that break standard CRUD assumptions when working with Interseller:
Destructive Blacklist Updates
Interseller's domain and email blacklist system does not support additive operations. The endpoint to update the blacklist requires you to pass the entire list of domains and emails. It wipes the existing configuration and substitutes it with the provided array. If an LLM attempts to "add a domain to the blacklist" by merely sending the new domain to this endpoint, it will inadvertently delete your company's entire historical suppression list. Your MCP server must explicitly force the LLM to call the GET endpoint first, append the new domain to the array locally, and then execute the PUT operation with the complete dataset.
Step-Level Statistical Isolation
Campaign reporting in Interseller is highly granular, but it does not aggregate exactly how an LLM expects. Step-level statistics (e.g., total, sent, viewed, replied) apply strictly per-step. If a prospect replies to the second step of a sequence, that reply does not retroactively count against the first step. If an LLM is asked to "summarize the total replies for the campaign," and it iterates through step statistics without understanding this isolation, it may present disjointed or seemingly conflicting conversion rates.
Real-Time MX Validation Latency
Interseller provides endpoints to validate email addresses in real-time by performing MX lookups and SMTP handshakes. This is a powerful feature, but network-level validation introduces variable latency. If an LLM attempts to validate a large batch of emails sequentially in a single session, the cumulative latency will exceed the LLM framework's timeout window, resulting in a dropped connection and a hallucinated response.
Rate Limits and 429 Handling
Interseller enforces strict rate limits to prevent abuse of their verification and outreach infrastructure. Truto does not retry, throttle, or apply backoff on rate limit errors. When the upstream Interseller API returns an HTTP 429, Truto passes that error straight to the caller. Truto normalizes the upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. Your AI agent is entirely responsible for implementing its own exponential backoff logic when iterating over large contact lists.
Generating the Interseller MCP Server
Rather than hand-coding tool definitions for every Interseller endpoint, Truto generates them dynamically based on the integration's documented API resources. A tool only appears in the MCP server if it has a corresponding documentation entry, ensuring the LLM only accesses curated, AI-ready operations.
Each MCP server is scoped to a single integrated account. The generated URL contains a cryptographic token that handles routing and authentication natively.
Method 1: Via the Truto UI
For teams managing integrations manually, you can generate a server directly from the dashboard.
- Navigate to the Integrated Accounts page in your Truto dashboard and select your connected Interseller instance.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select the desired configuration (name, allowed methods, tags, and optional expiry).
- Copy the generated MCP server URL (e.g.,
https://api.truto.one/mcp/a1b2c3d4e5f6...).
Method 2: Via the API
For platform engineers building multi-tenant AI products, you can provision servers programmatically.
Make a POST request to /integrated-account/:id/mcp. The API validates the configuration, hashes the token via HMAC for secure KV storage, and returns a ready-to-use URL.
curl -X POST https://api.truto.one/integrated-account/acct_abc123/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Interseller Outreach Agent",
"config": {
"methods": ["read", "write"],
"tags": ["campaigns", "contacts"]
}
}'{
"id": "mcp_xyz789",
"name": "Interseller Outreach Agent",
"config": { "methods": ["read", "write"] },
"expires_at": null,
"url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}Connecting Interseller to ChatGPT
Once you have your Truto MCP URL, you can connect it to your LLM client. Since the URL encapsulates the integrated account context, no additional authentication configuration is required on the client side (unless you explicitly enforce it).
Method A: Via the ChatGPT UI
If you are using ChatGPT Pro, Enterprise, or Education, you can add the server natively.
- In ChatGPT, navigate to Settings → Apps → Advanced settings.
- Enable Developer mode.
- Under MCP servers / Custom connectors, click add a new server.
- Set the Name to "Interseller".
- Paste your Truto MCP URL into the Server URL field.
- Click Save.
ChatGPT will immediately run the initialize and tools/list JSON-RPC handshake to discover the available Interseller tools.
Method B: Via Manual Config File
If you are deploying ChatGPT locally via a desktop client or integrating into a framework like Cursor or Claude Desktop, you must configure the MCP server using Server-Sent Events (SSE).
Update your MCP configuration file (typically mcp.json or claude_desktop_config.json depending on the client) with the following block:
{
"mcpServers": {
"interseller-truto": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"--url",
"https://api.truto.one/mcp/a1b2c3d4e5f6..."
]
}
}
}Hero Tools for Interseller
Truto automatically maps Interseller's API into a flat JSON-RPC namespace. Query parameters and body parameters are intelligently routed by the Truto Proxy API Handler based on the schema definition. Here are the 6 most powerful hero tools for automating Interseller workflows.
1. list_all_interseller_campaigns
Retrieves a list of all Interseller campaigns. This is the foundational tool for auditing active sequences, retrieving campaign IDs for deeper analysis, and checking high-level status.
Usage note: The LLM will automatically receive pagination cursors (next_cursor). The generated tool description explicitly instructs the model to pass this cursor back unchanged to traverse large campaign lists.
"List all active Interseller campaigns and give me a summary table of their titles and creation dates."
2. get_single_interseller_campaign_step_stat_by_id
Retrieves detailed, step-level conversion metrics for a specific campaign. Returns an object keyed by step index containing sent, viewed, visited, and replied counts.
Usage note: This is critical for A/B testing analysis. Because statistics are isolated per-step, the LLM must use this tool to determine where prospect drop-off is occurring within a multi-touch sequence.
"Fetch the step statistics for campaign ID 'cmp_987' and tell me which step has the highest reply rate."
3. create_a_interseller_email_personal_query
Executes a deep lookup to discover personal email addresses for a prospect based on fragmented identity data (e.g., name, company, LinkedIn URL, or GitHub URL).
Usage note: This tool requires at minimum one strong identifier. It returns an array of discovered email addresses. It is incredibly useful for enriching stale CRM leads before routing them to an active sequence.
"Find the personal email addresses for the prospect with the LinkedIn URL 'linkedin.com/in/johndoe'."
4. create_a_interseller_email
Performs real-time validation on an email address. This tool executes MX testing, checks for disposable domains, and verifies SMTP reachability.
Usage note: The verdict returned will explicitly state if the email is safe to send to. Because this relies on external network operations, the LLM should be instructed to handle this tool sequentially rather than attempting massive concurrent batches to avoid timeouts.
"Validate the email 'steve@interseller.io'. Check if the MX records are reachable and if it's a disposable address."
5. update_a_interseller_team_blacklist_by_id
Replaces the entire team blacklist with a new array of domains and email addresses.
Usage note: As warned in the engineering reality section, this is a destructive replacement. A robust agent prompt must instruct the model to always execute get_single_interseller_team_blacklist_by_id first to maintain historical data.
"Get the current Interseller blacklist, add 'competitor.com' to the array, and update the blacklist with the combined list."
6. list_all_interseller_contact_activities
Fetches the complete historical timeline of a contact's interactions, including messages sent, opens, replies, and meetings booked.
Usage note: This is the primary tool for generating context before an SDR takes over a manual reply. It provides the exact chronological sequence of events for a given contact_id.
"Pull the activity history for contact ID 'cnt_456' and summarize their interactions over the last two weeks."
To view the complete inventory of available Interseller tools, including payload schemas and custom field handlers, visit the Interseller integration page.
Workflows in Action
When you combine these isolated tools into a multi-step execution plan, your AI agent transforms from a simple data fetcher into an autonomous sales operations engine. Here are two real-world workflows.
Workflow 1: Prospect Enrichment and Deliverability Validation
SDRs waste hours manually guessing email permutations and running them through third-party validators. You can offload this entirely to ChatGPT.
"I have a target prospect: Sarah Jenkins at Acme Corp (linkedin.com/in/sarahjenkins). Find her professional email, validate it to ensure it won't bounce, and tell me if she is safe to contact."
Execution Steps:
- The agent calls
list_all_interseller_emails, passingname: "Sarah Jenkins"andurl: "acme.com". - The agent parses the returned array of email permutations and selects the highest-ranked result based on the pattern match.
- The agent calls
create_a_interseller_emailpassing the selected email to run a real-time MX and SMTP handshake. - The agent analyzes the
verdictandvalid_mx_recordsboolean in the response. - The user receives a finalized, verified email address with confirmation that the SMTP server is actively accepting mail.
sequenceDiagram
participant User
participant Agent as ChatGPT Agent
participant MCP as Truto MCP Server
participant Interseller as Interseller API
User->>Agent: "Find and validate Sarah's email"
Agent->>MCP: tools/call (list_all_interseller_emails)
MCP->>Interseller: GET /emails/search
Interseller-->>MCP: ["s.jenkins@acme.com"]
MCP-->>Agent: JSON Result
Agent->>MCP: tools/call (create_a_interseller_email)
MCP->>Interseller: POST /emails (MX Check)
Interseller-->>MCP: { verdict: "safe" }
MCP-->>Agent: JSON Result
Agent-->>User: "Email found and validated as safe."Workflow 2: Automated Campaign Triage
Sales managers need to quickly identify underperforming campaigns to prevent burning through leads with bad copy.
"Review all active Interseller campaigns. Find the one with the lowest reply rate on step 1, list its title, and fetch the activity history of the most recently contacted lead in that campaign to see what went wrong."
Execution Steps:
- The agent calls
list_all_interseller_campaignspassing theactive: truequery parameter. - For each campaign ID returned, the agent calls
get_single_interseller_campaign_step_stat_by_id. - The agent calculates the reply rate mathematically for
step_index: "0"across all campaigns and identifies the worst performer. - The agent extracts a recent
contact_idassociated with that specific campaign (using internal logic or a subsequent contact list call). - The agent calls
list_all_interseller_contact_activitiesto read the exact timeline of events for that user. - The user receives a diagnostic report pinpointing the failing campaign and a timeline showing that leads are opening the email but ignoring the call-to-action.
Security and Access Control
Exposing an outreach engine to an autonomous LLM requires strict boundaries. Truto provides four layers of security to lock down your Interseller MCP server at the infrastructure level.
- Method Filtering (
config.methods): You can restrict an MCP server to specific operations. Setting the filter to["read"]ensures the LLM can query campaign stats and validate emails, but physically cannot update campaigns or modify the blacklist. - Tag Filtering (
config.tags): You can scope tools by functional domain. If you only want the LLM to handle contact enrichment, you can filter by specific integration resource tags, completely hiding campaign-mutation endpoints from the model's context. - Require API Token Auth (
require_api_token_auth): By default, possessing the MCP URL grants access. Enabling this flag forces the client to pass a valid Truto API token in theAuthorizationheader, validating identity before the KV token is even checked. - Time-to-Live (
expires_at): You can generate ephemeral MCP servers for temporary workflows. The system schedules a Cloudflare Durable Object alarm to automatically purge the database record and KV storage at the exact expiration time, leaving zero stale credentials.
Stop Building Boilerplate
Writing JSON-RPC 2.0 handlers, managing OAuth state, parsing paginated REST responses, and mapping complex nested schemas is not a strategic use of your engineering team's time. Interseller's API is powerful, but its nuances require dedicated infrastructure to interface safely with AI agents.
Truto’s dynamically generated MCP servers give your LLMs raw, structured access to Interseller's entire operational surface area in seconds. You dictate the access rules; we handle the protocol, the proxying, and the infrastructure.
FAQ
- Does Truto automatically handle Interseller rate limits for my AI agent?
- No. Truto passes HTTP 429 rate limit errors directly to the caller and normalizes the rate limit information into standard `ratelimit-*` headers. Your AI agent or application must implement its own retry and exponential backoff logic.
- Can I prevent ChatGPT from modifying my active Interseller campaigns?
- Yes. When generating the MCP server in Truto, you can use the `methods` configuration filter and set it to `["read"]`. This ensures the AI agent can only view data and cannot execute POST, PUT, or DELETE requests.
- How do I safely update the Interseller blacklist using an AI agent?
- The Interseller blacklist update endpoint is a destructive replacement, not an append operation. You must explicitly prompt your LLM to fetch the existing blacklist using `get_single_interseller_team_blacklist_by_id`, append the new domain locally, and then send the complete array to the update tool.
- Do I need to authenticate the MCP server on the client side?
- By default, the Truto MCP URL contains a cryptographic token that handles routing and authentication natively. However, you can enforce double-authentication by enabling the `require_api_token_auth` flag, which requires the client to also send a valid Truto API token.