Connect RocketReach to ChatGPT: Search and Enrich Professional Profiles
Learn how to connect RocketReach to ChatGPT using an auto-generated MCP server to automate B2B lead enrichment, company research, and email verification.
If you want to connect RocketReach to ChatGPT to automate B2B lead generation, enrich professional profiles, and execute highly targeted account research, you need a Model Context Protocol (MCP) server. If your team uses Claude, check out our guide on connecting RocketReach to Claude or explore our broader architectural overview on connecting RocketReach to AI Agents.
Giving a Large Language Model (LLM) autonomous access to a massive, paid data provider like RocketReach presents an immediate engineering challenge. You must translate the LLM's natural language requests into complex JSON query filters, manage pagination limits, and critically, prevent the model from burning through thousands of dollars in API credits due to hallucinated loops. You can either build and maintain this custom infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL.
This guide breaks down exactly how to use Truto to generate a secure MCP server for RocketReach, connect it natively to ChatGPT, and execute complex prospecting workflows using natural language.
The Engineering Reality of the RocketReach API
A custom MCP server is essentially a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, implementing it against the RocketReach API reveals several specific architectural quirks.
If you decide to build a custom MCP server for RocketReach, you own the entire API lifecycle. Here are the specific integration challenges you will face:
The Complex Credit Economy
Unlike standard B2B SaaS platforms that bill based on API requests, RocketReach operates on a highly specific credit economy. They divide their endpoints into distinct usage tiers: Export Credits, Universal Credits, and Verification Credits. For example, standard people searches are free to query, but looking up the actual contact information costs an export credit. If you have a Universal Credit plan, you must hit entirely different API endpoints (e.g., /v2/api/universalSearch/people instead of /v1/api/search). An LLM does not inherently understand this economy. If you expose all endpoints without filtering, ChatGPT might default to a Universal endpoint your plan doesn't support, resulting in immediate HTTP 403 Forbidden errors.
The 10,000 Record Pagination Cap
RocketReach searches span over 700 million profiles, but the API explicitly caps query results at 10,000 records. If you attempt to paginate past an offset (or start parameter) of 10,000, the API will throw an error. When an LLM executes a broad query like "Find all software engineers in California," the total results will easily exceed this limit. Your MCP server must inject context to instruct the LLM to progressively narrow its filters (adding seniority, specific cities, or exact company names) rather than blindly paginating into the hard limit.
Asynchronous Bulk Endpoints
For large-scale enrichment, RocketReach relies on asynchronous bulk lookup endpoints. When you submit an array of 100 profile IDs to the bulk endpoint, the API immediately returns a 202 Accepted status with no response body. The actual enriched data is delivered asynchronously to a registered webhook. Standard LLM tool calling is inherently synchronous - the model expects the data back in the tool response. Bridging this gap requires either building a polling loop on the check_status endpoint or maintaining an external state store that the LLM can query once the webhook fires.
Handling Upstream Rate Limits
When an AI agent runs an aggressive automation loop against RocketReach, you will eventually hit concurrency or rate limits. Truto does not retry, throttle, or apply backoff on rate limit errors. When the RocketReach API returns an HTTP 429 Too Many Requests, Truto transparently passes that exact error back to the caller. Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification. The caller (your agent framework or the end client) is entirely responsible for detecting the 429 and executing the appropriate exponential backoff strategy.
Creating and Connecting the RocketReach MCP Server
To bridge ChatGPT and RocketReach, we will generate an MCP server via Truto. This server acts as the translation layer, exposing the RocketReach API methods as JSON-RPC 2.0 tools. Truto derives these tools dynamically from the integration's underlying OpenAPI specification, mapping query parameters and body payloads into precise JSON Schemas.
Each MCP server is scoped to a single integrated account and is accessed via a unique, cryptographically hashed token URL. There are two ways to generate this server.
Method 1: Via the Truto UI
- Log into your Truto dashboard and navigate to Integrated Accounts.
- Click New Integrated Account, select RocketReach, and input your API key.
- Once connected, open the integrated account detail page and click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration. You can filter by methods (e.g., read-only) or specific tags to limit the LLM's blast radius.
- Click save and copy the generated MCP server URL (it will look like
https://api.truto.one/mcp/a1b2c3d4e5f6...).
Method 2: Via the Truto API
For platform builders provisioning MCP servers programmatically, you can POST to the Truto API. This requires your Truto API token and the integrated_account_id of the connected RocketReach account.
curl -X POST https://api.truto.one/integrated-account/YOUR_INTEGRATED_ACCOUNT_ID/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "RocketReach ChatGPT Server",
"config": {
"methods": ["read", "write", "custom"],
"tags": ["people", "companies"]
}
}'The API returns a JSON payload containing the url field. Treat this URL as a secure credential - it contains the token required to authenticate and execute requests against that specific RocketReach account.
Connecting the MCP Server to ChatGPT
With your MCP server URL in hand, you can now connect it to ChatGPT. There are two primary deployment patterns: using the ChatGPT UI directly, or configuring a local MCP client via a config file.
Option A: Via the ChatGPT UI (Custom Connectors)
If you are on a ChatGPT Pro, Plus, Business, Enterprise, or Education plan, you can add the server directly through the application interface.
- Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
- Toggle Developer mode on (this enables MCP support).
- Under the custom connectors section, click Add new server.
- Give the connector a name (e.g., "RocketReach by Truto").
- Paste your Truto MCP server URL into the Server URL field and click Save.
ChatGPT will immediately ping the endpoint, execute the tools/list handshake, and register the available RocketReach tools.
Option B: Via Manual Config File (Local Desktop)
If you are running a custom desktop agent, an open-source MCP client, or Claude Desktop, you map the remote Truto server using Server-Sent Events (SSE).
Add the following block to your mcp_config.json (or claude_desktop_config.json):
{
"mcpServers": {
"rocketreach_truto": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"--url",
"https://api.truto.one/mcp/YOUR_SECURE_TOKEN"
]
}
}
}Restart your client, and the tools will be instantly available in the prompt context window.
RocketReach Hero Tools for AI Agents
When Truto generates the MCP server, it parses the RocketReach integration and exposes operations as snake_case tools. To prevent overwhelming the model, we strongly recommend filtering your MCP server to expose only the highest-leverage endpoints. Here are the core hero tools to enable for B2B prospecting.
list_all_rocket_reach_search_people
This tool allows the LLM to search RocketReach's massive database of 700 million professional profiles. It accepts a complex query object allowing filtering by name, current_title, employer, location, and industry. The results return matching profiles with teasers of contact data, but the emails are masked. You must use rocket_reach_people_lookup to spend a credit and unlock the full record. Remember the 10,000 record cap - instruct the LLM to use precise filters.
"Find 10 software engineering managers currently working at Stripe in San Francisco. Return their profile IDs and current titles. If the search returns more than 10,000 total hits, narrow the search by adding 'senior' to the title query."
rocket_reach_people_lookup
This is the core enrichment tool. It consumes an export credit to reveal the fully verified contact information for a specific person. You can pass a RocketReach id obtained from the search tool, or supply a linkedin_url, email, or name combined with current_employer.
"Take the profile ID you just found for the Senior Engineering Manager at Stripe and run a lookup to extract their recommended professional email address. Check the 'status' field to ensure the lookup is complete."
list_all_rocket_reach_search_companies
Allows the LLM to query company records by name, domain, industry, geographic location, employee count, or revenue tier. This is critical for Account-Based Marketing (ABM) workflows, allowing the model to build target account lists before searching for specific personnel.
"Search for B2B SaaS companies based in Austin, Texas with an employee count between 50 and 200. Give me the top 5 results sorted by relevance, including their domains and industry strings."
rocket_reach_companies_lookup
Enriches a single company record to retrieve comprehensive firmographic data, including tech stack details, departmental breakdowns, and growth signals. It requires at least one identifier, with the company domain being the preferred parameter.
"Run a company lookup on 'vercel.com'. Extract their reported revenue tier, total employee count, and list out any frontend frameworks identified in their tech stack array."
create_a_rocket_reach_email_verification
This tool allows the LLM to verify if a specific email address is active and capable of receiving mail. It charges one verification credit, which RocketReach refunds if the result is unknown or the email formatting is invalid. It returns the MX record status and SMTP check results.
"Verify the email address 'j.doe@example.com'. Return the status and let me know if the SMTP check passed. Also confirm how many verification credits were charged for this call."
rocket_reach_accounts_get_current
An administrative tool that costs zero credits to call. It allows the LLM to check the authenticated account's current credit usage, plan limits, and daily API call limits. This is crucial for agents operating autonomously to ensure they don't exhaust their monthly quota.
"Check our current RocketReach account status. Tell me our daily API limit, how many API calls we've made today, and our current export credit usage."
For the complete tool inventory, including bulk lookup schemas and Universal Credit endpoints, visit the RocketReach integration page.
Workflows in Action
Connecting RocketReach to ChatGPT unlocks agentic workflows that traditionally required dedicated engineering teams to wire up ETL pipelines or reverse-ETL syncing. Here is how an LLM handles multi-step prospecting.
Workflow 1: Targeted Lead Generation & Enrichment
Persona: Sales Development Representative (SDR) building an outreach list.
"Find the VP of Engineering at Vercel. Once you have their profile, unlock their verified professional email. After getting the email, check our remaining export credit balance to ensure we have capacity for more lookups today."
Step-by-step Execution:
list_all_rocket_reach_search_companies: The model first queries the company "Vercel" to confirm the exact domain and company ID to ensure accurate filtering.list_all_rocket_reach_search_people: The model constructs a query object withcurrent_title: "VP Engineering"andemployer: "Vercel". It retrieves a list of matches and identifies the correct profile ID.rocket_reach_people_lookup: The model calls the lookup tool, passing the profile ID. This spends the export credit and returns the full profile payload, including therecommended_professional_email.rocket_reach_accounts_get_current: Finally, the model queries the account endpoint and reports the remainingcredit_usageback to the user.
sequenceDiagram
participant User as User Prompt
participant LLM as ChatGPT
participant MCP as Truto MCP Server
participant Upstream as RocketReach API
User->>LLM: "Find VP Engineering at Vercel..."
LLM->>MCP: Call list_all_rocket_reach_search_companies<br>{"name": "Vercel"}
MCP->>Upstream: GET /v1/api/search/company
Upstream-->>MCP: Company Data (domain: vercel.com)
MCP-->>LLM: Return Company Schema
LLM->>MCP: Call list_all_rocket_reach_search_people<br>{"query": {"employer": ["vercel.com"], "current_title": ["VP Engineering"]}}
MCP->>Upstream: POST /v1/api/search
Upstream-->>MCP: Unverified Profile Array (IDs)
MCP-->>LLM: Return Profile IDs
LLM->>MCP: Call rocket_reach_people_lookup<br>{"id": 123456}
MCP->>Upstream: GET /v1/api/lookupProfile
Upstream-->>MCP: Enriched Profile (with emails)
MCP-->>LLM: Return Verified Email
LLM-->>User: Outputs verified email and credit balance.Workflow 2: Account-Based Intelligence Gathering
Persona: RevOps Analyst building account profiles for the enterprise sales team.
"I have a target account: 'linear.app'. Run a company lookup to extract their industry and tech stack. Then, search for anyone with 'Director of Product' in their title at this company. Give me a markdown table of the names and IDs, but do not spend credits looking up their emails yet."
Step-by-step Execution:
rocket_reach_companies_lookup: The model passesdomain: "linear.app"to the company lookup tool. It extracts the firmographic data and the technology arrays.list_all_rocket_reach_search_people: The model searches for people using the employer domain and the specific title filter. Because it was explicitly instructed not to spend credits, it skips therocket_reach_people_lookupstep.- Formatting: The model parses the JSON response from the search tool and formats the unverified teaser data into the requested Markdown table, handing the target list back to the analyst for manual review.
Security and Access Control
Exposing an expensive data enrichment API to an autonomous agent requires strict governance. Truto provides several mechanisms to lock down your MCP server when creating it via the API:
- Method Filtering: Use the
config.methodsarray to restrict the server toreadoperations only. This allows the LLM to search profiles without ever having the ability to callrocket_reach_people_lookupand accidentally burn export credits. - Tag Filtering: Use the
config.tagsarray to limit the tools entirely. If you only want the model doing firmographic research, restrict the server to["companies"]to completely hide the people search endpoints. - API Token Authentication: By default, possession of the MCP URL grants access. For production environments, enable
config.require_api_token_auth. The client must then pass a valid Truto API token in the Authorization header, preventing unauthorized internal usage if the URL leaks in logs. - Expiration: Set an
expires_atISO datetime when generating the server. Truto will automatically destroy the token and flush the credentials from its KV store when the time elapses, perfect for granting temporary sandbox access to contractors testing prompt chains.
Closing Thoughts on Data Enrichment via MCP
Connecting RocketReach to ChatGPT shifts the paradigm of B2B prospecting. Instead of manually clicking through a web interface or writing brittle Python scripts to chain API calls together, you can orchestrate complex enrichment loops using natural language.
The difficulty isn't in parsing the JSON - it's in handling the architectural reality of pagination limits, credit tracking, and upstream rate limits. By relying on a dynamically generated MCP server, your engineering team can completely offload the burden of maintaining endpoint mappings and focus strictly on agent logic and prompt engineering.
Stop fighting API schemas. Configure your MCP server, set your tag filters to protect your credit balance, and let your agents handle the heavy lifting of data discovery.
FAQ
- How does Truto handle RocketReach rate limits when connected to ChatGPT?
- Truto does not retry, throttle, or absorb rate limits. When RocketReach returns an HTTP 429 Too Many Requests, Truto passes that error to the caller, along with standardized IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The calling agent must implement its own backoff logic.
- Can I prevent ChatGPT from using all of my RocketReach export credits?
- Yes. When generating the MCP server in Truto, you can use method filtering or tag filtering to omit the `rocket_reach_people_lookup` tool, restricting the LLM to free search queries only.
- How does the MCP server handle the RocketReach 10,000 record pagination cap?
- The API limitation remains in place. You must prompt your LLM to narrow its query filters (e.g., adding seniority or exact locations) if a search hits the 10,000 record ceiling, rather than instructing it to paginate indefinitely.
- Can ChatGPT handle RocketReach bulk asynchronous lookups?
- RocketReach bulk endpoints return a 202 Accepted and deliver data to a webhook. Because standard MCP tool calling is synchronous, the LLM will only receive the confirmation of the job starting, not the data itself. You must build an external state store or poll the check_status endpoint.