---
title: "Connect Seamless.AI to Claude: Find, Enrich and Export Company Data"
slug: connect-seamless-ai-to-claude-find-enrich-and-export-company-data
date: 2026-10-16
author: Nidhi KN
categories: ["AI & Agents"]
excerpt: "Learn how to connect Seamless.AI to Claude using a managed MCP server. Execute complex B2B prospecting, async enrichment, and contact exports via natural language."
tldr: "A technical guide to building an AI-driven prospecting engine by connecting Seamless.AI to Claude via a managed MCP server. Covers async polling, dynamic credit constraints, and real-world tool execution."
canonical: https://truto.one/blog/connect-seamless-ai-to-claude-find-enrich-and-export-company-data/
---

# Connect Seamless.AI to Claude: Find, Enrich and Export Company Data


If you need to connect Seamless.AI to Claude to automate B2B prospecting, execute asynchronous data enrichment, or synchronize target account lists, you need a [Model Context Protocol (MCP) server](https://truto.one/what-is-mcp-model-context-protocol-the-2026-guide-for-saas-pms/). This server acts as the translation layer between Claude's function-calling capabilities and the Seamless.AI REST APIs. You can either build and maintain this infrastructure yourself, or use a [managed integration platform like Truto](https://truto.one/managed-mcp-for-claude-full-saas-api-access-without-security-headaches/) to dynamically generate a secure, authenticated MCP server URL. 

If your team uses ChatGPT, check out our guide on [/connect-seamless-ai-to-chatgpt-prospect-research-and-sync-leads/](https://truto.one/connect-seamless-ai-to-chatgpt-prospect-research-and-sync-leads/) or explore our broader architectural overview on [/connect-seamless-ai-to-ai-agents-automate-b2b-search-and-enrichment/](https://truto.one/connect-seamless-ai-to-ai-agents-automate-b2b-search-and-enrichment/).

Giving a Large Language Model (LLM) read and write access to a high-volume data vendor like Seamless.AI introduces strict architectural requirements. You must manage complex asynchronous polling loops, navigate dynamic pagination limits tied to account credits, and format complex array-based query parameters. Every time an endpoint changes or a new filter category is added, 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 Seamless.AI, connect it natively to Claude Desktop, and execute complex prospecting workflows using natural language.

> Want to give your AI agents secure, authenticated access to Seamless.AI and 100+ other SaaS APIs? Let's talk about [managed MCP architecture](https://truto.one/managed-mcp-for-claude-full-saas-api-access-without-security-headaches/).
>
> [Talk to us](https://truto.one/book-a-demo/)

## The Engineering Reality of the Seamless.AI API

A custom MCP server is a self-hosted integration layer. While the open [MCP standard](https://truto.one/what-is-mcp-model-context-protocol-the-2026-guide-for-saas-pms/) provides a predictable way for models to discover tools, the reality of implementing it against specialized B2B APIs is painful. You are not just integrating a simple database - you are integrating an economic system where API calls consume credits, requests happen asynchronously, and temporal limits are strictly enforced. 

If you decide to build a custom MCP server for Seamless.AI, here are the specific integration challenges your engineering team will face:

### Async Polling and Disconnected Schemas
Seamless.AI separates the discovery of data from the enrichment of data. When you execute a search, you receive lightweight results containing basic firmographics and a `searchResultId`. To get verified emails, phone numbers, and full intelligence, you must submit that ID to a "research" endpoint. This endpoint does not return the data; it queues a background job and returns a `requestId`. You must then continuously poll a separate "researches" endpoint until the status transitions from `queued` or `researching` to `done`. Building an MCP server means writing strict JSON schemas that teach Claude how to bridge these three distinct API domains without hallucinating the workflow.

### Dynamic Credit-Based Pagination
Most SaaS APIs use strict limits - if you ask for 500 records and there are 500 records, you get 500 records. Seamless.AI search endpoints cost 1 credit per 10 results. If an organization's credit balance cannot cover the requested limit, the API does not reject the request or throw a 402 Payment Required error. Instead, it dynamically shortens the returned page to exactly what the balance can pay for. If your orchestration layer assumes fixed page sizes for cursor logic, your agent will silently miss data when credits run low.

### Strict Temporal Constraints and 400 Errors
The Seamless.AI historical endpoints (`list_all_seamless_ai_companies` and `list_all_seamless_ai_contacts`) enforce a hard 30-day window on `startDate` and `endDate` queries. If an LLM attempts to pull a quarter's worth of historical saves by calculating a 90-day window, the API rejects the request entirely with a `400 Bad Request: Dates times are invalid`. Your MCP tools must carry explicit instructional prompts embedded in their descriptions to warn the LLM against requesting wide temporal ranges.

### Array Serialization in Query Parameters
Many APIs expect complex filters in a JSON request body. Seamless.AI search filters require bracket-array query parameters appended to the URL (e.g., `?companyName []=Salesforce&industry []=Software`). If your MCP server does not correctly parse the LLM's flat JSON arguments into URL-encoded bracket arrays, the upstream API will ignore the filters and return unstructured global results.

### Rate Limits and Header Normalization
When operating LLMs against external APIs, rate limiting is inevitable. **It is critical to note that Truto does not retry, throttle, or apply backoff on rate limit errors.** When the Seamless.AI API returns an HTTP 429, 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`) following the IETF specification. The caller - whether that is your custom LangGraph agent or Claude Desktop - is strictly responsible for implementing its own [retry and backoff logic](https://truto.one/how-to-handle-third-party-api-rate-limits-when-an-ai-agent-is-scraping-data/) using these headers.

## Generating the Managed MCP Server

Instead of building authentication middleware, protocol handlers, and JSON Schema definitions from scratch, Truto dynamically derives an MCP server directly from the documentation and OpenAPI specifications of your connected Seamless.AI account.

Each MCP server is securely scoped to a single integrated account and is accessed via a cryptographic token URL. You can generate this server via the Truto dashboard or programmatically via the API.

### Method 1: Via the Truto UI

For internal teams and quick deployments, the UI is the fastest path to a working server.

1. Log into your Truto dashboard and navigate to **Integrated Accounts**.
2. Select your connected Seamless.AI integration.
3. Click the **MCP Servers** tab.
4. Click **Create MCP Server**.
5. Configure your security filters (such as limiting the server to read-only methods or specific tool tags).
6. Copy the generated MCP server URL (e.g., `https://api.truto.one/mcp/a1b2c3d4e5f6...`).

### Method 2: Via the Truto API

For production deployments where you need to provision MCP servers dynamically for your own end-users, you can use the Truto API.

Send a `POST` request to `/integrated-account/:id/mcp` with your desired configuration:

```typescript
// POST https://api.truto.one/integrated-account/<seamless-ai-account-id>/mcp
// Headers: Authorization: Bearer <Truto_API_Token>

{
  "name": "Seamless_AI_Prospecting_Agent",
  "config": {
    "methods": ["read", "write", "custom"],
    "require_api_token_auth": false
  },
  "expires_at": "2026-12-31T23:59:59Z"
}
```

The response will include the secure URL required to connect Claude. The token in this URL is cryptographically hashed at the edge before storage; the raw token is never stored in a database, ensuring complete credential isolation.

## Connecting the MCP Server to Claude

Once you have your MCP server URL, connecting it to Claude requires zero additional coding. The MCP protocol handles the initialization handshake, exchanging tool schemas and capabilities automatically.

### Method A: Via the Claude UI (or ChatGPT)

If you are using a commercial LLM interface that supports remote MCP connections:

1. Open your LLM client settings (e.g., in Claude: **Settings -> Integrations -> Add MCP Server**).
2. Provide a recognizable name (e.g., "Seamless.AI via Truto").
3. Paste the Truto MCP URL into the connection field.
4. Click **Add** or **Connect**.

The client will execute a `POST` to the URL, complete the JSON-RPC 2.0 handshake, and instantly populate the model's context with the Seamless.AI tools.

### Method B: Via Manual Config File

If you are using Claude Desktop locally and prefer file-based configuration, you can add the server as a Server-Sent Events (SSE) connection using the official npx connector.

Locate your `claude_desktop_config.json` file (typically at `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows) and add the following:

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

Restart Claude Desktop. The model will automatically read the config and request the tool list.

## Security and Access Control

Giving an LLM direct access to an API that consumes paid credits requires strict guardrails. Truto provides four primary mechanisms to secure your managed MCP server:

*   **Method Filtering:** You can restrict the MCP server config to specific operation types. By setting `methods: ["read"]`, Claude can list and search records but is physically blocked from calling `create_a_seamless_ai_contacts_research`, preventing the LLM from spending enrichment credits.
*   **Tag Filtering:** Resources can be grouped by tags. You can limit the server to only expose tools tagged with `companies`, hiding all contact-level endpoints from the model's context.
*   **Expiration Tracking (`expires_at`):** You can assign an ISO datetime to the server. Truto's distributed alarm scheduler will automatically invalidate the edge token and delete the server when the time expires, perfect for temporary agent tasking.
*   **Secondary Authentication (`require_api_token_auth`):** By default, the cryptographically secure token in the URL is sufficient to execute tools. For enterprise environments, setting this flag to `true` forces the MCP client to also pass a valid Truto API token in the Authorization header, preventing leaked URLs from being abused.

## Hero Tools for Seamless.AI

Truto dynamically translates the entire Seamless.AI API surface into discrete, strongly-typed MCP tools. Here are the highest-leverage tools available for AI agent workflows.

### 1. list_all_seamless_ai_search_companies

This tool allows Claude to query the Seamless.AI global database for target accounts. Because Truto handles the complex bracket-array serialization internally, the LLM can simply provide a flat JSON arguments object containing the target industries, revenue ranges, or technologies.

> "Search Seamless.AI for software companies located in California with an annual revenue over $50M that use Salesforce. Limit the results to 20 to preserve our search credits."

### 2. list_all_seamless_ai_search_contacts

Once target companies are identified, this tool searches for specific buyer personas within those organizations. It maps to the `/search/contacts` endpoint and returns unverified prospect records containing a critical `searchResultId`.

> "Using the company domains we just found, search Seamless.AI for contacts holding C-Level or VP seniority in the Engineering department. Return a maximum of 50 results."

### 3. create_a_seamless_ai_contacts_research

This is the mutation tool that actually spends enrichment credits. It takes the `searchResultIds` gathered from the search tool and submits them to the async enrichment queue to find verified emails and direct dials.

> "Take the 15 Vice Presidents of Engineering we found in the previous search, extract their searchResultIds, and submit them to the contacts research endpoint for enrichment. Give me the request IDs returned."

### 4. list_all_seamless_ai_contacts_researches

This polling tool is the final step in the enrichment loop. Claude uses the request IDs returned from the creation tool to check the status of the async jobs. When the status reads `done`, this tool returns the fully enriched contact record.

> "Check the research status for the 15 request IDs we just generated. If any are marked 'done', extract their verified email addresses and output them as a markdown table."

### 5. list_all_seamless_ai_companies

Unlike the global search endpoint, this tool queries the list of companies already saved to your organization's Seamless.AI instance. It requires a strict 30-day temporal window.

> "Fetch all the companies saved to our Seamless.AI organization between October 1st and October 25th. Remember that the start and end dates cannot span more than 30 days."

### 6. list_all_seamless_ai_location_filter_values

Because Seamless.AI requires specific string matches for location filters, this tool acts as a helper utility. It allows Claude to look up the exact internal location ID or standardized string for a geographic region before executing a massive contact search.

> "Look up the exact Seamless.AI location filter values for 'San Francisco Bay Area' so we can use the correct terminology in our next contact search."

For a complete breakdown of every available endpoint, schema requirement, and required parameter, visit the [Seamless.AI integration page](https://truto.one/integrations/detail/seamlessai).

## Workflows in Action

MCP servers transform LLMs from passive text generators into active operational engines. Here is exactly how Claude orchestrates Seamless.AI tools to solve real B2B go-to-market challenges.

### Workflow 1: The Autonomous Prospecting Engine

An SDR needs to build a highly targeted list of decision-makers at fast-growing fintech startups and instantly verify their contact information.

> "Find 10 fintech companies in New York. For those companies, find contacts with the job title 'Chief Information Security Officer' or 'CISO'. Submit those contacts for enrichment, poll the system until the research is complete, and generate a final CSV-formatted list of their names, companies, and verified emails."

**Execution Sequence:**

1. **`list_all_seamless_ai_search_companies`**: Claude queries the database using `industry: ["Financial Services", "Technology"]` and `city: ["New York"]`.
2. **`list_all_seamless_ai_search_contacts`**: Claude extracts the company names/domains and executes a secondary search using `jobTitle: ["Chief Information Security Officer", "CISO"]`.
3. **`create_a_seamless_ai_contacts_research`**: Claude packages the resulting `searchResultIds` and executes a write operation to trigger the enrichment jobs, consuming account credits.
4. **`list_all_seamless_ai_contacts_researches`**: Claude enters a brief polling loop. It checks the request IDs until the payload status shifts to `done`, retrieves the enriched email data, and formats the output for the user.

```mermaid
sequenceDiagram
    participant User
    participant Claude as Claude Desktop
    participant MCP as Truto MCP Server
    participant Seamless as Seamless.AI API

    User->>Claude: "Find NY Fintech CISOs and enrich them"
    
    Claude->>MCP: Call list_all_seamless_ai_search_companies
    MCP->>Seamless: GET /search/companies?city[]=New York...
    Seamless-->>MCP: Company Results
    MCP-->>Claude: JSON Array

    Claude->>MCP: Call list_all_seamless_ai_search_contacts
    MCP->>Seamless: GET /search/contacts?companyName[]=...
    Seamless-->>MCP: Contact Results (searchResultIds)
    MCP-->>Claude: JSON Array

    Claude->>MCP: Call create_a_seamless_ai_contacts_research
    MCP->>Seamless: POST /research/contacts
    Seamless-->>MCP: Job Created (requestIds)
    MCP-->>Claude: JSON Array

    loop Polling
        Claude->>MCP: Call list_all_seamless_ai_contacts_researches
        MCP->>Seamless: GET /research/contacts
        Seamless-->>MCP: Status: done + Emails
        MCP-->>Claude: Enriched Data
    end

    Claude-->>User: Markdown / CSV Output
```

### Workflow 2: Internal CRM Audit

A Revenue Operations manager needs to cross-reference recent Seamless.AI activity to ensure SDRs are targeting the correct demographics before those records are synced to Salesforce.

> "Pull all the contacts that our team has saved in Seamless.AI over the last 14 days. Analyze the data and give me a breakdown of which industries and seniority levels are being saved the most."

**Execution Sequence:**

1. **`list_all_seamless_ai_contacts`**: Claude calculates the exact date 14 days ago to comply with the strict 30-day temporal limitation. It passes the `startDate` and `endDate` to the historical saves endpoint.
2. **Local Analysis**: Claude receives the un-paginated array of historical contacts (up to 500 records), processes the `industries` and `seniority` arrays within the JSON payload, and aggregates the counts.
3. **Output Generation**: Claude generates a structured report summarizing the team's prospecting behavior over the last two weeks.

## Strategic Architecture for AI Integrations

Connecting an LLM to Seamless.AI via a managed MCP server removes the friction of maintaining an active API integration layer. Instead of writing custom TypeScript polling loops, managing edge KV storage for OAuth tokens, or hardcoding bracket-array serializers for query parameters, your engineering team can treat the integration as a simple configuration URL.

By normalizing the upstream schemas, automatically enforcing documentation requirements, and standardizing error handling - including IETF rate limit headers - Truto ensures that your AI agents interact with third-party data predictably. The result is an autonomous workflow that can discover accounts, execute credit-based enrichment, and poll for intelligence, all driven entirely by natural language.
