Enrichment MCP

Email to LinkedIn with MCP

Paste an email into Claude or Cursor and the agent calls get_lead for you. One URL, OAuth sign-in, 1 record per match and nothing for a miss.

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

Paste an email into Claude or Cursor and the agent calls get_lead for you. One URL, OAuth sign-in, 1 record per match and nothing for a miss.

This page is about setup and prompts. For the REST endpoint and the field table, see Email to LinkedIn. Other clients are on the MCP hub. The opposite direction is covered in LinkedIn to email with MCP.

Connect the server

The server is https://api.leadocean.io/mcp. It signs in with OAuth 2.1, so there is no key to paste. Create a free account first.

Claude Code. The command format is from the Claude Code MCP docs, September 2026:

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

Then run /mcp in a session and finish the browser sign-in. claude mcp login leadocean does the same from the shell.

Cursor. Add a remote server to mcp.json, in the url form shown in the Cursor MCP docs, September 2026:

json
{
  "mcpServers": {
    "leadocean": {
      "url": "https://api.leadocean.io/mcp"
    }
  }
}

Cursor starts the OAuth sign-in the first time the server is used. Other clients are listed in the LeadOcean MCP docs.

The tool

The tool is get_lead. The server lists it as leadocean_get_lead. It costs 1 record per match.

InputTypeMeaning
emailstringWork email address. Use it when you have no LinkedIn URL.
linkedin_urlURLThe preferred key, for the opposite direction.
phonestringA number in any common format. Who owns it.
person_idstringThe id a search row carries. Digits only.
reveal_emailbooleanDefault false. Leave it off for this task.

Send one identifier. The tool description says to pass a work email. The REST twin is GET /v2/people/reverse, which returns a thin identity block. The MCP tool returns the full person record instead, at the same 1 record.

Prompts that work

PromptWhat the agent callsRecords
"Find the LinkedIn profile for jane.doe@acme.com and tell me her title."get_lead with email1
"Here are 15 emails. Return name, title and LinkedIn URL in a table. Skip any you cannot match."get_account, then get_lead per email15 at most
"Does acme.com have people I could email? Do not pull anyone yet."count_leads with domain0

Put a record limit in the prompt. "Stop after 25 records" is enough for the agent to hold a batch.

Keep reveal_email off. You already hold the address, and the profile URL comes back either way. The flag only adds every email and phone on file, and it costs no extra record.

What the agent gets back

The result is one leadocean.person.v1 object plus a meta block. Field groups are from the enrich docs, September 2026. Values below are placeholders.

json
{
  "person": {
    "profile_data": {
      "profile_full_name": "Jane Doe",
      "profile_headline": "Finance Manager at Acme",
      "profile_url": "https://www.linkedin.com/in/jane-doe"
    },
    "contact_data": {
      "has_email": true,
      "email_status": "verified",
      "contact_current_experiences": [
        { "company_name": "Acme", "company_domain": "acme.com", "job_title": "Finance Manager" }
      ]
    }
  },
  "meta": { "source": "...", "key_hash": "...", "schema": "leadocean.person.v1" }
}

Unknown values are null. About one person in five has no LinkedIn URL, so profile_url can be empty on a real match. Career history in resume_data comes back empty from the current source, so do not ask the agent for it.

Free checks first

count_leads, list_enum_values and get_account spend no records. Run them before any paid call.

We ran count_leads with domain: ["apple.com"] on 2026-10-01. It returned total: 75304, totalIsExact: true, credits: 0. That counts mailable people at the domain (verified, catch_all_valid or catch_all), not everyone we hold. It tells the agent whether a domain is worth a paid lookup.

Troubleshooting

ErrorCauseFix
401The OAuth sign-in is missing or expired.Run /mcp in Claude Code and re-authenticate. In Cursor, sign in again from the MCP settings.
402The free 1,000 records are spent. The free plan is one-off, it does not reset.Move to Pro at $499 a month.
429Over 100 requests per second per key.Wait one second and retry. Ask the agent to run lookups in small batches.
Wrong enumA filter value is not in the catalogue, for example a made-up industry in a count_leads call.Call list_enum_values with a search term and use the exact string it returns.

FAQ

Do I need an API key for MCP?

No. The MCP server uses OAuth sign-in. The REST API uses an x-api-key header. Both draw on the same records.

What does a call cost, and what does a miss cost?

A match costs 1 record. A get_lead call that finds nobody costs nothing, the same as the REST 404. See pricing.

Can the agent look up a whole list of emails?

Yes, one call per address, at up to 100 a second per key. Free covers 1,000 lookups once. Pro is $499 a month, flat. The match rate is not published, so test a sample of your own list first.

Turn your first email into a LinkedIn profile from Claude, free

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

Get your free API key →