Skip to content

Connect LeadIQ to Claude: Find Decision Makers and Identify Companies

Learn how to connect LeadIQ to Claude using a managed MCP server. Discover how to configure the integration, generate API tools, and automate B2B prospecting.

Riya Sethi Riya Sethi · · 10 min read
Connect LeadIQ to Claude: Find Decision Makers and Identify Companies

If you need to connect LeadIQ to Claude to automate B2B prospecting, find technical decision makers, and enrich target account lists, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's natural language tool calls and LeadIQ's structured REST APIs. You can either build and maintain this integration infrastructure in-house, or use a managed platform like Truto to dynamically generate a secure, authenticated MCP server URL.

If your team uses ChatGPT, check out our guide on connecting LeadIQ to ChatGPT or explore our broader architectural overview on connecting LeadIQ to AI Agents.

Giving a Large Language Model (LLM) read and write access to a specialized sales intelligence platform like LeadIQ is an engineering challenge. You have to map highly nested JSON schemas to MCP tool definitions, handle LeadIQ's specific credit-deduction parameters, and safely expose rate-limited endpoints to autonomous agents. Every time LeadIQ updates an endpoint or deprecates a search parameter, you have to update your server code, redeploy, and test the integration.

This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for LeadIQ, connect it natively to Claude Desktop, and execute complex prospecting workflows using natural language.

The Engineering Reality of the LeadIQ 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 over JSON-RPC 2.0, the reality of implementing it against a specialized data provider like LeadIQ is complex. If you decide to build a custom MCP server for LeadIQ, here are the specific integration challenges you will face:

Credit-Aware Data Schemas

Standard REST APIs typically return all available fields for a given resource. LeadIQ's API does not, because returning contact information costs credits. If you query the list_all_lead_iq_contacts endpoint, LeadIQ intentionally omits emails and phone numbers. To get that data, you must explicitly pass flags like with_personal_emails or with_phones. If your MCP server does not clearly define these boolean parameters in its JSON schema with strict descriptions, Claude will hallucinate contact data or assume the API is broken when fields return empty.

Divergent Search Architectures

LeadIQ treats company lookups and contact searches as distinct architectural models. A GroupedAdvancedSearch for companies behaves entirely differently than a FlatAdvancedSearch for personnel. When executing a grouped search via the API, LeadIQ returns only the company half of the grouped result - the people in those groups are neither read nor billed. Your MCP server must translate these distinct mental models into unified tools that Claude can understand, ensuring the LLM knows exactly which tool to use for firmographics versus contact enrichment.

Strict Rate Limits and The 10K Ceiling

LeadIQ offset-paginated endpoints (skip/limit) are strictly capped at 10,000 combined records. Furthermore, when your AI agent fires off parallel enrichment requests and triggers an HTTP 429 Too Many Requests, you cannot rely on the integration layer to magically absorb the failure. Truto does not retry, throttle, or apply backoff on rate limit errors. Instead, Truto normalizes the upstream LeadIQ response into standardized IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) and passes the HTTP 429 directly to the caller. Your AI agent or client application is strictly responsible for inspecting these headers and implementing its own retry and backoff math.

How Truto Managed MCP Servers Work

Truto eliminates the need to manually code and maintain an MCP server. When you connect a LeadIQ account, Truto automatically derives a complete set of MCP tools from LeadIQ's API resources and documentation records.

This tool generation is dynamic. Every time Claude requests a tool list (tools/list), Truto compiles the tools on the fly. It translates LeadIQ's complex payload structures into clean JSON Schema representations, complete with parameter descriptions that instruct Claude exactly how to use them. The server is exposed via a secure endpoint (/mcp/:token) that contains a cryptographically hashed token, scoping access to a specific connected LeadIQ instance.

Creating the LeadIQ MCP Server

You can generate an MCP server for LeadIQ through the Truto dashboard or programmatically via the API.

Method 1: Via the Truto UI

For teams testing workflows or setting up internal agents, the UI is the fastest path:

  1. Log into your Truto account and navigate to the integrated account page for your LeadIQ connection.
  2. Click the MCP Servers tab.
  3. Click Create MCP Server.
  4. Select your desired configuration. You can optionally restrict the server to only read operations or apply specific tool tags.
  5. Click Save, and immediately copy the generated MCP server URL (e.g., https://api.truto.one/mcp/a1b2c3d4...).

Method 2: Via the Truto API

For platform engineers embedding AI features into a SaaS application, you can generate MCP servers dynamically. The API verifies the LeadIQ integration, generates a random hex string, hashes it via HMAC for secure KV edge storage, and returns the endpoint.

Endpoint: POST /integrated-account/:id/mcp

// Request payload
{
  "name": "SDR Agent LeadIQ Server",
  "config": {
    "methods": ["read", "custom"]
  },
  "expires_at": "2026-12-31T23:59:59Z"
}
// Response
{
  "id": "mcp-7f8a9b2c",
  "name": "SDR Agent LeadIQ Server",
  "config": {
    "methods": ["read", "custom"]
  },
  "expires_at": "2026-12-31T23:59:59Z",
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}

Connecting the MCP Server to Claude

Once you have your secure Truto MCP URL, you must register it with your Claude environment.

Method A: Via the Claude UI

If you are using Claude's enterprise or team web interface (or similar UI-based agent platforms like ChatGPT):

  1. In your LLM interface, navigate to Settings -> Integrations -> Add MCP Server (or Settings -> Connectors -> Add in ChatGPT).
  2. Name the integration (e.g., "LeadIQ Enrichment").
  3. Paste the Truto MCP Server URL.
  4. Click Add. Claude will instantly handshake with the server, negotiate protocol version 2024-11-05, and list the available LeadIQ tools.

Method B: Via Manual Config File (Claude Desktop)

If you are running Claude Desktop locally, you must map the remote Truto MCP URL using an SSE (Server-Sent Events) proxy script, as Claude Desktop requires local command execution for servers.

Open your claude_desktop_config.json file (located in ~/Library/Application Support/Claude/ on macOS or %APPDATA%\Claude\ on Windows) and add the following block:

{
  "mcpServers": {
    "leadiq-production": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "https://api.truto.one/mcp/a1b2c3d4e5f6..."
      ]
    }
  }
}

Save the file and restart Claude Desktop. The application will execute the proxy, connect to Truto, and pull down the LeadIQ schema.

Hero Tools for LeadIQ Prospecting

Truto automatically generates precise, descriptive snake_case tools from LeadIQ's API endpoints. Here are the highest-leverage hero tools your AI agent will use to execute sales intelligence workflows.

Looks up a single individual by email, LinkedIn URL, or a combination of name and company identity. This tool always includes a work email if LeadIQ has it on file. Personal emails and phone numbers are only returned if you explicitly instruct the LLM to pass the with_personal_emails or with_phones parameters, ensuring you control credit consumption.

"I have a LinkedIn URL for the VP of Engineering at Stripe (https://linkedin.com/in/example). Use the lead_iq_people_search tool to find their direct work email and mobile phone number. Make sure to enable the flags for personal emails and phones."

Executes an exact identity lookup for a company using a domain, LinkedIn URL, or exact name. This is a targeted lookup, not a filtered search list, and returns a rich firmographic profile of the company including employee count, location, and industry tags. It returns zero results on a miss rather than guessing.

"We just saw a sign-up from the domain 'anthropic.com'. Run the lead_iq_companies_search tool to get their exact employee count, headquarters location, and primary industry."

list_all_lead_iq_companies

Executes a GroupedAdvancedSearch to find companies that match broad criteria, such as employee count ranges, countries, or specific industry domains. This tool returns only the company data; the personnel inside those companies are ignored to prevent accidental credit spend. It uses offset pagination (skip/limit) up to the 10,000 record cap.

"I need a list of target accounts. Use the list_all_lead_iq_companies tool to find 50 companies located in the United States that have between 500 and 1000 employees in the enterprise software space."

list_all_lead_iq_contacts

Executes a FlatAdvancedSearch to search for people by job title, seniority, company domain, or geographic location. Critically, this tool never selects email or phone fields by default - it is designed for building lists and evaluating persona volume before committing to enrichment.

"We are targeting cybersecurity companies in London. First, find the domains. Then use the list_all_lead_iq_contacts tool to find people with the seniority 'Director' or 'VP' and the title 'Security' at those domains. Pull the first 100 results."

get_single_lead_iq_contact_by_id

Retrieves the complete profile of a previously identified LeadIQ contact using their unique LeadIQ ID. This is typically used in multi-step workflows where an agent first searches a list of contacts, and then explicitly requests full enrichment for a qualified target.

"You found three matching Directors of IT. Take the LeadIQ ID for the first person and run get_single_lead_iq_contact_by_id to pull their complete profile into our notes."

create_a_lead_iq_list

Creates a new static list within the LeadIQ platform. This allows AI agents to act as autonomous SDRs - finding prospects, filtering them, and saving curated lists directly into the LeadIQ dashboard for human review or CRM export.

"Create a new list using create_a_lead_iq_list named 'Q4 AI Enterprise Targets'. Once created, save the list ID so we can push our newly enriched contacts into it."

For the complete inventory of LeadIQ tools, parameter requirements, and JSON schemas, visit the LeadIQ integration page.

Workflows in Action

Once connected, Claude can orchestrate multi-step data pipelines entirely autonomously. Because the input arguments arrive as a flat JSON object, Truto's MCP Router intelligently splits the LLM's arguments into the correct LeadIQ query and body parameters.

Scenario 1: Autonomous Account Sourcing and Enrichment

An SDR needs to find relevant companies in a specific niche and extract the contact information for their engineering leaders.

"Find 5 software companies in Berlin with 100-500 employees. Then, for each company, find their VP of Engineering and get their direct work email and LinkedIn URL."

  1. list_all_lead_iq_companies: Claude queries LeadIQ with the location set to "Berlin", industry "Software", and employee count "100-500".
  2. list_all_lead_iq_contacts: Claude iterates through the returned company domains, searching for contacts with the exact title "VP of Engineering".
  3. lead_iq_people_search: Claude takes the specific names and domains found in step 2 and requests their full profiles, ensuring it retrieves the work email.

The user receives a perfectly formatted markdown table containing five verified engineering leaders, their exact domains, and valid work emails.

sequenceDiagram
    participant Claude as Claude
    participant Truto as Truto MCP
    participant LeadIQ as LeadIQ API
    
    Claude->>Truto: Call list_all_lead_iq_companies<br>{"location": "Berlin"}
    Truto->>LeadIQ: GET /v1/companies/search
    LeadIQ-->>Truto: Returns 5 company domains
    Truto-->>Claude: JSON Company Data
    
    Claude->>Truto: Call list_all_lead_iq_contacts<br>{"domains": [...], "title": "VP of Engineering"}
    Truto->>LeadIQ: GET /v1/contacts/search
    LeadIQ-->>Truto: Returns basic contact names
    Truto-->>Claude: JSON Contact Names
    
    Claude->>Truto: Call lead_iq_people_search<br>{"name": "...", "domain": "..."}
    Truto->>LeadIQ: GET /v1/people/search
    LeadIQ-->>Truto: Returns enriched profiles
    Truto-->>Claude: Final Email Data

Scenario 2: Inbound Lead Qualification

A RevOps agent processes new inbound signups, using LeadIQ to qualify the lead before pushing them into the CRM.

"We just got a sign-up from jsmith@acmecorp.io. Look up this person. If their company has more than 1000 employees, fetch their phone number and flag them as Enterprise."

  1. lead_iq_people_search: Claude queries the exact email jsmith@acmecorp.io to pull the base profile and company domain.
  2. lead_iq_companies_search: Claude takes the domain acmecorp.io and retrieves the firmographic data.
  3. lead_iq_people_search: Because the employee count is >1000, Claude issues a secondary call for the same person, this time explicitly requesting with_phones: true.

The agent processes the conditional logic perfectly, minimizing credit spend on small businesses while aggressively enriching high-value enterprise leads.

flowchart TD
    A["Inbound Email: jsmith@acmecorp.io"] --> B["lead_iq_people_search<br>(Base Profile)"]
    B --> C["lead_iq_companies_search<br>(Check Employee Count)"]
    C --> D{"Employees > 1000?"}
    D -->|"Yes"| E["lead_iq_people_search<br>(with_phones: true)"]
    D -->|"No"| F["Stop Enrichment<br>Route to SMB Queue"]
    E --> G["Route to Enterprise<br>Sales Queue"]

Security and Access Control

Exposing an expensive data provider like LeadIQ to an autonomous agent requires strict guardrails. Truto MCP servers support native configurations to restrict exactly what Claude can do:

  • Method Filtering: Restrict the MCP server to only read operations (config: { methods: ["read"] }). This prevents the LLM from accidentally invoking create, update, or delete methods, effectively making the server read-only.
  • Tag Filtering: Limit the available tools to specific integration tags. For example, you can create a server that only exposes ["companies"] tools, preventing the LLM from accessing expensive people search endpoints.
  • Require API Token Auth: By setting require_api_token_auth: true, the Truto MCP server will reject any requests that do not include a valid Truto API bearer token or session cookie. The unguessable URL acts as the first layer of security, and the API token provides a strict secondary authorization layer.
  • Automatic Expiration: Set an expires_at ISO datetime. Truto's edge KV storage will automatically expire the token, and a durable alarm will prune the server from the database. This is critical when giving temporary prospecting tools to contractor agents.

Moving from Chat to Automation

Connecting LeadIQ to Claude using a managed MCP server changes how your team handles sales data. Instead of copying and pasting LinkedIn URLs into a browser extension, your engineers can build agentic systems that autonomously research accounts, evaluate firmographics, and extract highly targeted contact lists.

By offloading the JSON-RPC translation, documentation parsing, and schema generation to Truto, your team can focus on writing better agent prompts and designing high-converting sales sequences.

FAQ

Does Truto automatically retry rate-limited requests to LeadIQ?
No. When LeadIQ returns an HTTP 429 Too Many Requests, Truto passes the error directly to Claude along with standardized IETF headers (`ratelimit-limit`, `ratelimit-remaining`, `ratelimit-reset`). The caller must handle retry and backoff logic.
How do I control LeadIQ credit usage when using Claude?
Truto generates precise tool schemas that require explicit instruction to consume credits. For example, Claude must explicitly pass parameters like `with_personal_emails` or `with_phones` when using the `lead_iq_people_search` tool.
Can I restrict Claude to only read data from LeadIQ?
Yes. When creating the Truto MCP server, you can apply method filtering (e.g., `methods: ["read"]`) to ensure Claude only has access to GET and LIST operations, preventing accidental data modification.
How does Claude Desktop connect to the Truto MCP Server?
You configure your `claude_desktop_config.json` file to use the `@modelcontextprotocol/server-sse` proxy command via `npx`, pointing it to your secure Truto MCP endpoint URL.

More from our Blog