Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

How-to guide

How to Set Up AI Outbound Tools (Data, Agent, Sender)

Most AI outbound tools are a data source, an agent and a sender in one box. Split them, size the list for free, and spend records only on rows you will send.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

AI outbound tools are three jobs: find the right people, decide what to say, and send it. Buy or build each layer on its own, and the list you start from decides the result. This guide wires the data layer, the one most guides skip, with real queries and output from 21 October 2026.

TL;DR

  • Split any AI outbound stack into data, agent and sender. Judge each on its own, because a weak list ruins a good agent.
  • The data layer takes about 20 minutes and about 13 of your 1,000 free records: 10 to spot-check, 3 to enrich. Counts spend none.
  • The agent reaches LeadOcean through one MCP URL. LeadOcean is the data layer. It has no sequencer, dialer or CRM, so you pair it with a sender.

Prerequisites

  • A LeadOcean account and API key from app.leadocean.io. The free plan has no card and keeps 1,000 records for life. Free runs at 5 requests a second.
  • The key in your shell as $LEADOCEAN_API_KEY.
  • curl and jq. Claude Code is optional, for Step 5.
bash
export LEADOCEAN_API_KEY="paste-your-key-here"

Step 1: Split the stack into three layers

Write down which tool owns each layer before you compare vendors. A single product can cover all three, but you should know which part you are paying for.

text
Layer 1  Data     who exists, their title, a verified email    <- LeadOcean
Layer 2  Agent    picks accounts, drafts the message           <- Claude Code, n8n, Clay
Layer 3  Sender   mailboxes, sequences, replies, unsubscribes  <- your sequencer

LeadOcean covers layer 1 only: 693M people and 67M companies, filtered by 50 people filters and 34 company filters. The agent and the sender are yours to pick. For the sender side, see the cold email software roundup and the AI outreach tools list.

Step 2: Size the audience for free

A count tells you whether the list exists before you spend a record. Send count=true as a query parameter with limit 1. The body stays flat JSON, and filters are arrays.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": ["Head of Growth", "VP Marketing"],
    "country": ["US"],
    "employeeRange": ["51-200"],
    "limit": 1
  }' | jq '.meta'

The same filters through the free MCP tool leadocean_count_leads, run on 21 October 2026, returned:

json
{
  "total": 1131,
  "totalIsExact": true,
  "totalAll": 3344,
  "distinctCompanies": 1003,
  "credits": 0
}

Read it carefully. total is 1,131 people with a verified, catch-all-valid or catch-all email, the default mailable count. totalAll is 3,344 with no email condition. The list spans 1,003 companies, so you are not hitting one team five times.

Step 3: Pull a 10-row spot-check

Never hand an agent a list you have not read. Pull 10 rows and look at them. This spends 10 records.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": ["Head of Growth", "VP Marketing"],
    "country": ["US"],
    "employeeRange": ["51-200"],
    "limit": 10
  }' | jq '.data[0], .meta'

If a title or level looks wrong, fix the filter and count again. Counts cost nothing, so iterate there. Enum filters take exact strings. jobLevel accepts C-Team, VP, Director, Manager, Staff and Other. Check any value with leadocean_list_enum_values or GET /v1/enums.

Step 4: Enrich only the rows you will contact

Search finds people. Enrich returns the contact data and the current role. It takes exactly one of linkedin_url, email, phone or person_id. There is no name plus domain lookup, so search first and enrich by the id each row carries at meta.source_ids.person_id.

bash
curl -s -X POST "https://api.leadocean.io/v1/people/enrich" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "person_id": "PERSON_ID_FROM_STEP_3", "reveal_email": true }' \
  | jq '.data.contact_data | {email_status, contact_emails, contact_current_experiences}'

A person LeadOcean holds nothing for returns 404 and costs nothing. Since 17 October 2026 the response also carries career history in resume_data, which gives an agent more to personalize from. Past employers have no company_id yet.

Step 5: Give the agent the data layer over MCP

The hosted MCP server exposes 13 tools. Add it to Claude Code with one command (Claude Code docs, September 2026). Sign-in is OAuth, so no key is pasted.

bash
claude mcp add --transport http leadocean https://api.leadocean.io/mcp
claude mcp login leadocean
claude mcp list

Then give the agent a brief that sizes before it pulls:

text
Find US Heads of Growth and VPs of Marketing at 51-200 person companies.
1. Call leadocean_count_leads first. Report total and totalAll.
2. If total is above 2,000, narrow by industry and count again.
3. Only then search with limit 25. Never export without my approval.

The brief puts the free tools first. That keeps an agent from spending records on a list you have not sized. For deeper agent recipes, see how to write personalized cold email outreach.

Step 6: Hand the list to your sender

For more than a few hundred rows, export instead of paging. POST /v1/exports takes up to 50,000 rows a request and 500,000 a day. Bulk CSV export is not on Free, so this step needs Solo at $97 a month or Agency at $497 a month. The app at app.leadocean.io also has an Exports page: filter builder, column picker, a price preview and a CSV download. Load the CSV into your sequencer, which handles mailboxes, sequences and unsubscribes. Read email_status first, because bounced emails are not refunded.

What you get

The count from Step 2 is real output from 21 October 2026. The record below is the response shape from the API reference, with placeholder values. Fields are trimmed.

json
{
  "success": true,
  "data": [
    {
      "profile_data": { "profile_full_name": "Jane Doe" },
      "contact_data": {
        "has_email": true,
        "has_phone": true,
        "email_status": "verified",
        "contact_current_experiences": [{ "job_title": "Head of Growth", "company_name": "Acme", "company_domain": "acme.com" }]
      },
      "meta": { "source_ids": { "person_id": "123456789" } }
    }
  ],
  "meta": { "nextCursor": "NEXT_CURSOR" }
}

A search row carries has_email and has_phone flags, not the contact points. Step 4 returns them.

Paginate with cursor. One search pages to 10,000 rows. When meta.depthCapped is true there is no nextCursor, so narrow the filters instead.

Troubleshooting

ErrorCauseFix
401Missing, wrong or revoked keyRe-copy the key from app.leadocean.io and re-export $LEADOCEAN_API_KEY.
429Above the plan's rate limit: 5 a second on Free, 200 on AgencyWait the Retry-After seconds. Send pages of 100 instead of many small calls.
402The 1,000 free records are spentCheck GET /v1/account. Free records do not reset. See pricing.
Empty results or 400A filter value outside the list, such as country: "USA"Resolve it with leadocean_list_enum_values and pass the exact string (US).
Count says 1,000 or unsupported_filtersA filter the count tool does not support, such as fundingTypeCount without it. The filter still narrows the list at search time.
Export refusedMore than 50,000 rows in one requestSplit by country or headcount band and run several exports.

FAQ

What are AI outbound tools?

They are software that automates part of outbound: finding prospects, writing messages or sending them. Most bundle all three. The data layer is the one to check first, because every later step runs on that list.

Does LeadOcean send the emails?

No. LeadOcean is a data API and a hosted MCP server. It has no sequencer, dialer, CRM or Chrome extension. Export the list and load it into your sender.

How many records does this cost?

About 13 on the example: 10 for the spot-check and 3 to enrich. Counts, filter lookups and enum lookups are free. Each person returned counts one record.

Which plan should I use?

Start on Free to test the filters. Solo is $97 a month for one person and adds bulk CSV export. Agency is $497 a month for teams, with 200 requests a second. Paid plans have a fair-use pace, not credits. See pricing.

Size your AI outbound list before you buy a sender

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →