Custom Integration
Technical reference for engineering teams building MCP-compatible AI tools that connect to ZoomInfo.
Overview
ZoomInfo MCP is an open MCP server. Any client that can authenticate and speak the MCP protocol can connect to it. This guide covers what engineering teams need to integrate ZoomInfo into a custom-built AI tool or agent workflow.
Server Details
| Property | Value |
|---|---|
| MCP Server URL | https://mcp.zoominfo.com/mcp |
| Protocol | Model Context Protocol (MCP) |
| Architecture | Stateless |
| Rate limit | 25 requests per second |
Authentication
ZoomInfo MCP uses OAuth-based authentication. Each user must authenticate with their own ZoomInfo credentials. Shared or service account authentication is not recommended as it loses user-level context for personalized tools like Account Research.
To obtain credentials programmatically, use the ZoomInfo Developer Portal. Enable the data scopes your application requires (note: MCP does not have its own permission scope; select the underlying data sets your tool needs access to).
Connecting to the Server
In your MCP client configuration, point to the ZoomInfo server URL and handle the OAuth flow:
{
"mcpServers": {
"zoominfo": {
"url": "https://mcp.zoominfo.com/mcp"
}
}
}On first connection, the client will call tools/list to retrieve the full set of available tools and their descriptions. This happens automatically at the start of each session, so your client always receives the latest tool definitions without any versioning overhead.
Tool Discovery
After connecting, call tools/list to enumerate available tools. Each tool definition includes:
- Name: the tool identifier used in
tools/call - Description: optimized for LLM routing; describes when to use the tool and what inputs are required
- Input schema: JSON Schema defining required and optional parameters
// Example: tools/list response (abbreviated)
{
"tools": [
{
"name": "lookup",
"description": "Reference data for valid search filter values...",
"inputSchema": {
"type": "object",
"properties": {
"fieldName": {
"type": "string",
"description": "Field to lookup (e.g., management-levels, industries)"
}
},
"required": ["fieldName"]
}
}
]
}Calling a Tool
Use tools/call with the tool name and parameters:
{
"method": "tools/call",
"params": {
"name": "search_companies",
"arguments": {
"industryId": "6374",
"employeeCount": { "min": 100, "max": 1000 },
"location": "United States"
}
}
}Batch Sizes and Rate Limits
| Tool | Max records per call |
|---|---|
| Enrich Companies | 25 |
| Enrich Contacts | 25 |
| Find Similar Companies | 25 |
| Find Similar Contacts | 25 |
| Find Recommended Contacts | 25 |
| Account Research | 1 |
| Contact Research | 1 |
The API rate limit is 25 requests per second. Build retry logic with exponential backoff for production workloads.
Error Handling
ZoomInfo returns standard HTTP error codes. Common errors:
| Code | Cause | Resolution |
|---|---|---|
401 | Invalid or expired credentials | Re-authenticate the user |
403 | Insufficient entitlements | Check user's package and bulk credit availability |
429 | Rate limit exceeded | Back off and retry |
For the full error reference, see the ZoomInfo API documentation↗.
Context Management
For direct tools (Search, Enrich), payloads scale with result set size. Cap batch sizes appropriately for your context window limits.
API Reference
For the full ZoomInfo API and data schema reference, see docs.zoominfo.com/docs↗.