> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seamless.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Bulk enrich and campaign

> Research contacts, resolve saved IDs, and create a campaign with an email step.

Research search results, add saved contacts to a campaign, and launch a multi-step sequence.

## Prerequisites

* Full [Connect access](/mcp/access-control) for campaigns
* Credits for bulk `research_contacts`
* Linked email accounts (`seamless://email-accounts`)

<Note>
  `contactIds` in `create_campaign` must be **saved** IDs from `get_my_contacts` after `research_contacts`, not search result IDs.
</Note>

## Sequence

```mermaid theme={null}
sequenceDiagram
  participant Agent
  participant MCP as Seamless MCP
  Agent->>MCP: search_contacts
  MCP-->>Agent: searchResultIds
  Agent->>MCP: research_contacts
  MCP-->>Agent: enriched, saved contacts
  Agent->>MCP: get_my_contacts
  MCP-->>Agent: saved contactIds
  Agent->>MCP: read seamless://email-accounts
  MCP-->>Agent: sender IDs
  Agent->>MCP: create_campaign
  MCP-->>Agent: campaignId
```

## Tool calls

### 1. search\_contacts

```json theme={null}
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "search_contacts",
    "arguments": {
      "companyName": ["Acme Corp"],
      "jobTitle": ["VP Sales"],
      "limit": 10
    }
  },
  "id": 1
}
```

### 2. research\_contacts

```json theme={null}
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "research_contacts",
    "arguments": {
      "searchResultIds": ["id1", "id2", "id3"],
      "waitForResults": true
    }
  },
  "id": 2
}
```

### 3. get\_my\_contacts

```json theme={null}
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_my_contacts",
    "arguments": {
      "limit": 50
    }
  },
  "id": 3
}
```

### 4. create\_campaign

Read `seamless://email-accounts` and `seamless://templates/variables` before this call.

```json theme={null}
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "create_campaign",
    "arguments": {
      "name": "May sequence",
      "emailAccountIds": [123],
      "contactIds": [456, 789],
      "steps": [
        {
          "type": "auto-email",
          "name": "Day 1 intro",
          "dueDay": 1,
          "templateData": {
            "subject": "Hi {first_name}",
            "template": "<p>Hi {first_name},</p>"
          }
        }
      ]
    }
  },
  "id": 4
}
```

<Warning>
  Confirm with the user before `execute_campaign_action` with action `START`.
</Warning>

## Run with Claude Code

```text theme={null}
Using Seamless MCP:
1. Search for contacts at Acme Corp (VP Sales)
2. Research the search result IDs with waitForResults: true
3. Call get_my_contacts and collect saved contactIds for researched people
4. Read seamless://email-accounts and seamless://templates/variables
5. Create a campaign with emailAccountIds, those contactIds, and one auto-email step (name, dueDay, templateData.subject + template)
6. Show me the campaign summary before calling execute_campaign_action with START
```
