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

How-to guide

How to Enrich B2B Contacts Inside Claude (LeadOcean MCP)

Connect one MCP server, size the list for free, enrich a handful of people, then script the rest. Each matched person costs 1 record.

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

Claude enrichment means Claude calls a data source for you: you give it a LinkedIn URL, it returns the email, status, phone and career history that source holds. Claude has no contact data of its own. You need to attach a source, and an MCP server is the shortest route.

This guide uses the LeadOcean MCP server. It takes about 15 minutes and spends 3 records on the test.

TL;DR

  • Takes about 15 minutes: 5 to connect, 5 to size a list for free, 5 to enrich three people.
  • Spends 1 record per matched person. Counts, filter lookups and a person we hold nothing for cost 0.
  • Past about 25 people, stop pasting prompts and run the same call from a script (Step 4).

Prerequisites

  • A LeadOcean account. Start free: no card, 1,000 records, one-off.
  • A Claude account that can add a custom connector. The Claude connector docs, October 2026, describe the steps.
  • For Step 4 only: an API key from the app, saved as $LEADOCEAN_API_KEY, plus curl and jq.

Step 1: Connect the LeadOcean MCP server

Add https://api.leadocean.io/mcp as a custom connector and sign in with OAuth. No key is pasted.

text
Customize > Connectors > + Add > Add custom connector
Name: LeadOcean
URL:  https://api.leadocean.io/mcp

The server exposes 13 tools. Seven are free: leadocean_count_leads, leadocean_count_companies, leadocean_list_filters, leadocean_list_enum_values, leadocean_get_account, leadocean_get_export and leadocean_list_exports. The full click path is on the Claude setup page.

Step 2: Size the list before you spend a record

Ask Claude for a count first. It costs nothing and tells you whether the filters are worth enriching.

text
Using LeadOcean, count VPs in Sales & Business Development located in Canada.
Do not search for anyone. Say what the count includes.

Claude calls leadocean_count_leads with jobLevel, jobFunction and country. Filter values are exact strings, so Claude checks them with leadocean_list_enum_values when it is unsure. For a company list, leadocean_count_companies does the same job for free.

Step 3: Enrich three people in chat

Pick three LinkedIn URLs and cap the run. The cap keeps the spend visible.

text
Enrich these 3 people with leadocean_get_lead using reveal_email true:
https://www.linkedin.com/in/janedoe-example
https://www.linkedin.com/in/johnroe-example
https://www.linkedin.com/in/sampleperson-example
Return a table: name, title, company, email, email_status, phone.
If someone is not found, write "not found". Do not guess an address.

Each found person costs 1 record. A person we hold nothing for costs 0, the same as a REST 404. Enrichment also returns career history: past roles, education, certifications and awards. Past employers carry no company_id yet.

Read email_status before you send. LeadOcean gives no refund for bounced emails.

Step 4: Script it past 25 people

The same lookup over REST is POST /v1/people/enrich. It takes exactly one of linkedin_url, email, phone or 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 '{"linkedin_url":"https://www.linkedin.com/in/janedoe-example","reveal_email":true}' |
  jq '{email: .data.contact_data.contact_emails[0].email,
       status: .data.contact_data.email_status,
       phone: .data.contact_data.contact_phones[0].phone}'

There is no name plus domain lookup. To start from a company, search by domain, then enrich by person_id. For a whole list, POST /v1/exports writes up to 50,000 rows a request. Bulk export is not on Free.

What you get

Step 2 returned this on 2026-10-21 (leadocean_count_leads with its default email condition, so total is the mailable audience):

json
{"total":5574,"totalIsExact":true,"totalAll":18800,"distinctCompanies":3873,"credits":0}

The count covers people whose best email is verified, catch_all_valid or catch_all. Without the email condition the same filters match 18,800.

Steps 3 and 4 return one record per matched person. This is the response shape from the API reference, October 2026, with placeholder values:

json
{
  "success": true,
  "data": {
    "profile_data": { "...": "name, title, company" },
    "contact_data": {
      "has_email": true,
      "has_phone": true,
      "email_status": "verified",
      "contact_emails": [{ "email": "jane.doe@acme.com", "type": "work", "status": "verified" }],
      "contact_phones": [{ "phone": "+14155550133", "type": "mobile" }]
    }
  }
}

Without reveal_email, the address arrays are absent. has_email and has_phone still say whether a value exists.

Troubleshooting

ErrorCauseFix
401The x-api-key header is missing or wrong.Copy a fresh key from the app and re-export $LEADOCEAN_API_KEY.
402The 1,000 free records are spent.Check GET /v1/account, or move to Solo at $97 a month.
404We hold nothing for that identifier.Nothing to fix. It costs 0 records. Try the email or person_id.
429Above your plan's rate: 5 requests a second on Free, 200 on Agency.Wait for Retry-After and retry.
Empty resultsA filter value is not an exact enum string, such as Vice President for VP.Run leadocean_list_enum_values and use the string it returns.
Export refusedOne export is capped at 50,000 rows, and an account at 500,000 rows a day.Split the job across requests and days, or narrow the filters.

FAQ

Can Claude enrich contacts without an MCP server?

No. Claude does not hold contact data. It needs a source such as the LeadOcean MCP server or an API script.

How many records does the test use?

Up to 3. Each matched person costs 1 record. A person we hold nothing for costs 0.

Does it work on the free plan?

Yes. Free keys get search and enrich inside the 1,000 one-off records. The MCP server is the same one paid plans use.

Can I enrich companies too?

Yes. POST /v1/companies/enrich takes a company, and leadocean_count_companies sizes a company list for free.

Enrich your first contacts in Claude, free

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

Get your free API key →