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

Integration recipe

LeadOcean + Claude: source and qualify candidates

A four-step recipe. Size the pool, search, enrich career history, shortlist. All inside one Claude chat.

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

You get a shortlist of candidates, with career history and a mailable email status, from one Claude conversation. Claude calls the LeadOcean MCP server at https://api.leadocean.io/mcp. You sign in with OAuth, so no key is pasted. LeadOcean has no sequencer or CRM, so the shortlist stays in the chat or in a CSV.

How it works

  1. Trigger. In Claude, go to Customize, then Connectors, click "+ Add", then "Add custom connector", and paste https://api.leadocean.io/mcp. Sign in with OAuth. Claude's docs list custom connectors on Free, Pro, Max, Team and Enterprise, with one custom connector on Free (Claude custom connectors, September 2026). Full steps are on LeadOcean in Claude.
  2. Size the pool. Ask: "How many VPs of Engineering in Canada have a mailable email?" Claude runs leadocean_count_leads. Counts are free.
  3. Search. Tighten the filters until the pool is reviewable, then ask Claude to run leadocean_search_leads. It costs 1 record per person returned.
  4. Qualify. For the top rows, Claude runs leadocean_get_lead. Person enrich returns career history: past roles, education, certifications and awards. Claude compares past titles and dates against your brief, scores each profile out of five with a one-line reason, and writes the shortlist.

Where it goes: the shortlist table lives in the chat. Ask Claude to keep only rows whose email status is verified or catch_all_valid. For a bigger list, ask Claude to run leadocean_export_leads, or use the Exports page in app.leadocean.io and download the CSV.

Configuration

The MCP route needs no key. To run the same steps from a script, use the API with your key:

bash
echo 'Step 1, size the pool (free): count=true goes in the query string'
curl -s "https://api.leadocean.io/v1/people/search?count=true&limit=1" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jobLevel":["VP"],"jobFunction":["Engineering"],"country":["CA"]}'

echo 'Step 2, search (1 record per person returned)'
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jobLevel":["VP"],"jobFunction":["Engineering"],"country":["CA"],"limit":25}'

echo 'Step 3, enrich one person by id (career history in resume_data)'
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_SEARCH","reveal_email":true}'

Check enum values with leadocean_list_enum_values first. They are exact strings: Engineering is one of the 22 job functions, VP one of the 6 job levels. For a finer cut, swap jobLevel for seniority, whose values are lowercase (vp, head, director). Add excludeTitle to drop titles such as intern or assistant, and education to require a school or degree.

Field mapping

LeadOcean fieldShortlist columnNote
contact_current_experiences[]Current roleTitle and employer
resume_data.experiences[]Past rolesTitle, company name, dates, job level
resume_data.educations[]EducationWhen held
resume_data.certifications[]CertificationsWhen held
email statusMailable?Read it before you send. No refund for bounces
contact_phones[].phonePhoneOnly after leadocean_find_phone or enrich

Past employers carry no company_id yet, so match them by name.

Cost at 10,000 rows

ItemCostSource
LeadOcean FreeDoes not cover it: 1,000 records for lifeleadocean.io/pricing
LeadOcean Solo$97 a month. 100k search records every 5 hours, 10k enrichments every 5 hoursleadocean.io/pricing
Counts and list sizing$0leadocean.io/pricing
Claude usageCovered by your Claude plan's usage limits, not billed per rowclaude.com/pricing

Searching 10,000 rows and enriching 10,000 people fits inside one Solo window. Do not enrich everyone: count, filter, then enrich the top few hundred. Search rows are a thin profile with no contact points, which is often enough to cut the list before you enrich. A person we hold nothing for costs nothing.

Troubleshooting

SymptomCauseFix
Claude cannot see the toolsConnector not signed inReconnect and finish the OAuth sign-in
402 responseFree records spentUpgrade at /pricing
Count looks too highFiltered on email presence, not statusFilter by emailStatus, then recount
Search stops at 10,000 rowsmeta.depthCapped is trueNarrow the filters by country or level
429 responseOver the plan's rate limit (5 a second on Free, 50 on Solo)Wait for Retry-After, then ask Claude for smaller batches
Empty search on a job functionValue not an exact enum stringLook it up with leadocean_list_enum_values and retry

FAQ

Does Claude need my API key?

No. The MCP server uses OAuth 2.1 sign-in. Use a key only for scripts.

Can Claude contact the candidates?

No. LeadOcean returns data only. Send from your own tool.

How many tools does the server expose?

13, including the free leadocean_count_companies. See /mcp/claude.

Where can I read more?

Source your first shortlist from Claude

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

Get your free API key →