Connect Outreach to ChatGPT: Manage Prospects and Sales Sequences
Learn how to connect Outreach to ChatGPT using a managed MCP server. Automate prospect management, sequences, and sales tasks with AI.
If you need to connect Outreach to ChatGPT to automate sales workflows, manage prospects, or orchestrate sequences, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between ChatGPT's natural language tool calls and Outreach's REST API. You can either spend weeks building and maintaining this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL.
If your team uses Claude instead, check out our guide on connecting Outreach to Claude or explore our broader architectural overview on connecting Outreach to AI Agents.
Giving a Large Language Model (LLM) read and write access to a complex sales engagement platform like Outreach is a massive engineering challenge. You have to handle deeply nested JSON:API payloads, map dynamic custom fields to MCP tool definitions, and deal with strict rate limits. Every time Outreach updates their API schema or your sales ops team adds a new custom field, your custom server code must be updated, redeployed, and tested.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Outreach, connect it natively to ChatGPT, and execute complex sales workflows using natural language.
Stop writing boilerplate API integration code. Let Truto generate secure, managed MCP servers for your AI agents in seconds. :::
The Engineering Reality of the Outreach API
A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, implementing it against Outreach's specific vendor API is exceptionally painful.
If you decide to build a custom MCP server for Outreach, you own the entire API lifecycle. Here are the specific integration challenges that break standard CRUD assumptions when working with Outreach:
The JSON:API Specification Overhead
Outreach strictly follows the JSON:API specification. This means you cannot simply send a flat JSON object like { "email": "test@example.com" } to create a prospect. Your MCP server must format the payload with exact data, type, attributes, and relationships wrappers. For example, creating a sequence state requires nesting the prospect ID, sequence ID, and mailbox ID inside specific relationship objects. If your custom MCP server doesn't enforce these complex schemas, the LLM will hallucinate flat JSON bodies, and every API call will fail with a 400 Bad Request.
Transparent Rate Limit Handling
Outreach enforces strict rate limits (typically 10,000 requests per hour per user, with bursts capped heavily). If your AI agent gets stuck in a loop or tries to enrich 500 prospects at once, the upstream API will reject the requests.
It is critical to note how Truto handles this: Truto does not retry, throttle, or apply backoff on rate limit errors. When the Outreach API returns an HTTP 429 Too Many Requests error, Truto passes that error directly back to the caller. However, Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification. The caller (your AI agent framework or client) is completely responsible for interpreting these headers and executing its own exponential retry or backoff logic. Do not build an integration expecting the gateway to absorb these errors invisibly.
Pagination and Cursors
When an LLM requests a list of prospects or tasks, it cannot ingest 10,000 records at once without blowing out its context window. You have to write logic to handle pagination cursors. The LLM must be explicitly instructed to pass cursor values back unchanged to fetch the next set of records.
How to Generate the Outreach MCP Server
Instead of forcing your engineering team to build a custom Node.js or Python server to parse JSON:API payloads and OAuth token refreshes, Truto generates this infrastructure dynamically.
Truto creates MCP tools dynamically from the underlying Outreach API documentation and resource configurations. Tools are never cached or pre-built. When an LLM connects to the MCP server URL, Truto serves the exact query schemas and body schemas required to execute the tools successfully.
You can generate an MCP server for Outreach using either the Truto UI or the Truto REST API.
Method 1: Via the Truto UI
If you prefer a visual interface, you can generate the MCP server directly from your Truto dashboard:
- Navigate to the Integrated Accounts page for your connected Outreach instance.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration. You can name the server, filter which methods the LLM is allowed to use (e.g., read-only vs write access), and set an optional expiration date.
- Click Create, and copy the generated MCP server URL (e.g.,
https://api.truto.one/mcp/a1b2c3d4...).
Method 2: Via the Truto API
For teams building programmatic integrations, you can generate the MCP server dynamically by making an authenticated POST request to the Truto API.
Endpoint: POST /integrated-account/:id/mcp
// Example using fetch to generate an Outreach MCP server
const response = await fetch('https://api.truto.one/integrated-account/<OUTREACH_ACCOUNT_ID>/mcp', {
method: 'POST',
headers: {
'Authorization': 'Bearer <YOUR_TRUTO_API_TOKEN>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: "Outreach AI Assistant",
config: {
methods: ["read", "write"],
tags: ["crm", "sales"],
require_api_token_auth: false
},
expires_at: "2026-12-31T23:59:59Z"
})
});
const mcpServer = await response.json();
console.log(mcpServer.url); // https://api.truto.one/mcp/<token>The API will validate the configuration, verify that tools are available for the requested filters, and return a secure JSON-RPC 2.0 endpoint URL.
How to Connect the MCP Server to ChatGPT
Once you have your Truto MCP server URL, you can connect it to your LLM client. We will cover the UI approach for standard chat clients and the manual configuration approach for developer setups.
Method A: Connecting via the ChatGPT UI
If you are using the ChatGPT desktop application (available for Pro, Plus, Business, and Enterprise users with Developer Mode enabled):
- Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
- Toggle Developer mode to ON.
- Under the MCP servers or Custom connectors section, click to add a new server.
- Name: Enter a recognizable name (e.g., "Outreach by Truto").
- Server URL: Paste the URL generated in the previous step.
- Click Save. ChatGPT will immediately connect to the server, run the initialization handshake, and discover the available Outreach tools.
(Note: If you are using Claude Desktop instead, the process is similar: Settings -> Connectors -> Add custom connector -> Paste the URL -> Add.)
Method B: Connecting via Manual Configuration File
If you are running headless AI agents, frameworks like LangChain, or using desktop clients that rely on a JSON configuration file (like Cursor or custom Claude setups), you can route the HTTP SSE endpoint via the standard MCP server transport utility.
Add the following block to your client's MCP configuration file (usually mcp.json or claude_desktop_config.json):
{
"mcpServers": {
"outreach_truto": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"https://api.truto.one/mcp/<YOUR_GENERATED_TOKEN>"
]
}
}
}When the client starts, it will use the server-sse transport proxy to translate standard I/O into HTTP requests against your Truto MCP endpoint.
Security and Access Control
Giving an AI agent access to your sales database requires strict boundaries. Truto MCP servers are fully self-contained and offer several layers of security to prevent destructive actions or unauthorized access.
- Method Filtering: You can restrict an MCP server to only execute specific HTTP methods. By passing
methods: ["read"]during creation, the server will drop all tools related tocreate,update, ordelete. The LLM physically cannot modify data. - Tag Filtering: You can scope the server to specific functional areas. For example, passing
tags: ["reporting"]will only expose endpoints related to analytics, hiding core prospect deletion tools. - API Token Authentication: By default, possessing the MCP URL is enough to call tools. For higher security, you can set
require_api_token_auth: true. The client must then pass a valid Truto API token in theAuthorizationheader when connecting to the MCP endpoint. - Automatic Expiration: Using the
expires_atproperty, you can generate temporary servers. Once the timestamp passes, the endpoint automatically invalidates, cutting off the agent's access.
Hero Tools for Outreach
Truto automatically generates highly descriptive snake_case tool names and injects JSON schema definitions so the LLM knows exactly how to format its arguments. Here are the highest-leverage tools available for your ChatGPT agent.
1. list_all_outreach_prospects
This tool allows the agent to search for and retrieve prospect records. Truto automatically injects limit and next_cursor fields into the schema so the LLM can paginate through large territories.
"Find all prospects currently working at 'Acme Corp' and return their email addresses and current pipeline stage."
2. create_a_outreach_prospect
This tool handles the complex JSON:API payload required to generate a new prospect. The LLM understands it must supply the data.type and data.attributes (like first name, last name, and email) without you having to write a custom schema parser.
"Create a new prospect for Jane Doe (jane.doe@example.com) who is the VP of Sales at Initech. Do not assign an owner yet."
3. create_a_outreach_sequence_state
Enrolling a prospect into a sequence requires mapping multiple relationships (the prospect, the sequence, and the mailbox). This tool abstracts the endpoint so the agent can execute sales plays directly.
"Enroll the prospect with ID 10452 into the 'Q3 Inbound Follow-up' sequence using my default mailbox."
4. list_all_outreach_tasks
Sales reps live in their task queues. This tool allows the agent to pull pending tasks, filter by due dates, and review the required actions (calls, emails, LinkedIn steps).
"Get a list of all my overdue call tasks for today and summarize who I need to contact first based on their priority."
5. outreach_tasks_mark_complete
Once an agent (or a human rep interacting with the agent) finishes an action, this tool marks the task as complete and advances the sequence state automatically.
"Mark task ID 99281 as complete and attach a note saying 'Left a voicemail, will try again tomorrow'."
6. create_a_outreach_call
Logging external calls accurately is critical for sales metrics. This tool logs a call with specific outcomes (e.g., completed, no_answer) and links it to the relevant prospect.
"Log an outbound call to John Smith. The outcome was 'no_answer'. Keep the notes brief."
To view the full list of available tools, endpoints, and schemas, visit the Outreach integration page.
Workflows in Action
With the MCP server connected, ChatGPT can sequence multiple tools together to execute complex workflows that previously required manual clicks or fragile Zapier setups.
Scenario 1: Automated Prospect Enrollment
A sales rep asks ChatGPT to add a new contact they met at a conference into a specific nurture sequence. The agent must check if the prospect exists, create them if they do not, and then enroll them.
"Check if Alice Wong from TechFlow is in our system. If not, add her (alice@techflow.io) and immediately drop her into the 'Conference Lead Nurture' sequence."
flowchart TD
A["User Prompt:<br>Add prospect to sequence"] --> B["Agent Calls:<br>list_all_outreach_prospects"]
B --> C{"Prospect exists?"}
C -->|"Yes"| D["Extract ID"]
C -->|"No"| E["Agent Calls:<br>create_a_outreach_prospect"]
E --> D
D --> F["Agent Calls:<br>create_a_outreach_sequence_state"]
F --> G["Return success"]What happens:
- ChatGPT calls
list_all_outreach_prospectsfiltering by the email address. - If the array is empty, it calls
create_a_outreach_prospectsupplying the nested JSON:API attributes. - Extracting the new (or existing) ID, it calls
create_a_outreach_sequence_stateto link the prospect to the sequence ID. - The user gets a confirmation message that Alice has been enrolled.
Scenario 2: Sales Rep Daily Prep & Task Execution
A rep sits down in the morning and asks their AI assistant to summarize their pending tasks and provide context for the first call.
"What are my most important overdue tasks today? Pull the context for the first prospect on the list so I know what we talked about last."
sequenceDiagram
participant User as Sales Rep
participant Agent as ChatGPT
participant Truto as Truto MCP Server
User->>Agent: What are my tasks today?
Agent->>Truto: tools/call (list_all_outreach_tasks)
Truto-->>Agent: Returns overdue/pending tasks
Agent->>Truto: tools/call (get_single_outreach_prospect_by_id)
Truto-->>Agent: Returns prospect context
Agent-->>User: Summarizes tasks and prospect info
User->>Agent: Log the call as no answer
Agent->>Truto: tools/call (create_a_outreach_call)
Truto-->>Agent: Call logged
Agent->>Truto: tools/call (outreach_tasks_mark_complete)
Truto-->>Agent: Task closed
Agent-->>User: Task completed and loggedWhat happens:
- ChatGPT calls
list_all_outreach_tasksto retrieve the user's task queue. - It extracts the prospect ID from the top task and calls
get_single_outreach_prospect_by_idto read their metadata and recent activity. - It formats a briefing for the rep.
- Once the rep confirms the action, ChatGPT calls
create_a_outreach_callto log the disposition, followed byoutreach_tasks_mark_completeto clear the queue.
Moving Faster with Managed Infrastructure
Building AI agents that interact with B2B SaaS platforms requires treating integrations as a critical infrastructure layer. Writing custom code to manage Outreach's JSON:API quirks, pagination cursors, and rate limit architectures slows down your core product development.
By leveraging Truto's dynamically generated MCP servers, you can connect ChatGPT to Outreach instantly. The platform handles the underlying schema generation and proxy routing, allowing your AI agents to execute complex sales workflows safely and securely on day one.
FAQ
- How do Truto MCP servers handle Outreach API rate limits?
- Truto does not absorb, retry, or throttle rate limit errors. If the Outreach API returns a 429 error, Truto passes it directly to the caller, normalizing the headers into standard IETF formats (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The caller is responsible for retry logic.
- Do I have to build my own JSON:API schemas for Outreach?
- No. Truto dynamically generates MCP tools based on the Outreach API documentation, meaning all the nested JSON:API requirements (data, type, attributes) are handled for the LLM automatically.
- Can I prevent ChatGPT from deleting prospects in Outreach?
- Yes. When generating the MCP server, you can apply method filtering (e.g., methods: ["read", "update"]) to explicitly exclude destructive actions like delete.
- Does Truto cache the Outreach data?
- No. Tool generation is dynamic, and Truto acts as a proxy API layer. Tools operate on the integration's native resources directly without intermediate storage.