Paste an email into Claude or Cursor and the agent calls get_lead to name the person behind it. One URL, OAuth sign-in, 1 record per hit, nothing for a miss.
This page covers client setup and prompts. For the REST endpoint, field tables and coverage, see Reverse Email Lookup. Other clients are on the MCP hub. For tool comparisons, read the best reverse email lookup tools.
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:
claude mcp add --transport http leadocean https://api.leadocean.io/mcp
claude mcp login leadoceanYou can also run /mcp inside a session and finish the browser sign-in.
Cursor. Add a remote server to mcp.json, in the url form from the Cursor MCP docs, September 2026:
{
"mcpServers": {
"leadocean": {
"url": "https://api.leadocean.io/mcp"
}
}
}Cursor starts the sign-in the first time the server is used. Other clients follow the same pattern, see the LeadOcean MCP docs.
The tool
There is no tool named for reverse lookup. Use get_lead and pass email. The server lists it as leadocean_get_lead. It costs 1 record per call.
| Input | Type | Meaning |
|---|---|---|
email | string | Work email address. Used when you have no LinkedIn URL. |
reveal_email | boolean | true returns every email and phone we hold. Default false. No extra record. |
linkedin_url | URL | Preferred key when you have it. |
phone | string | A number in any common format. Same tool, same cost. |
person_id | string | The id a search row carries. Use it after a search. |
Send one identifier per call. The docs say sending two is a 400. The REST twin for email is GET /v2/people/reverse, which returns a thinner identity block.
Prompts that work
| Prompt | What the agent calls | Records |
|---|---|---|
| "Who is jane.doe@acme.com? Give me her title, company and LinkedIn URL." | get_lead with email | 1 |
| "These 10 sign-ups used work emails. Identify each one in a table. Skip any you cannot find. Stop at 10 lookups." | get_lead per email | 10 at most |
| "Reverse jane.doe@acme.com and show every email and phone on record." | get_lead with email and reveal_email: true | 1 |
Put the record limit in the prompt. The agent holds a batch when you tell it where to stop.
Pass work addresses. The tool describes the email input as a work address, and the docs publish no match rate for webmail. Test a small sample before a large run.
What the agent gets back
get_lead returns one leadocean.person.v1 record plus a meta block. Shape from the enrich docs, September 2026. Values are placeholders.
{
"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_emails": [
{ "email": "jane.doe@acme.com", "type": "work", "status": "verified" }
],
"contact_current_experiences": [{
"company_name": "Acme",
"company_domain": "acme.com",
"job_title": "Finance Manager"
}]
}
},
"meta": { "source": "...", "schema": "leadocean.person.v1" }
}contact_emails and contact_phones stay empty unless reveal_email is true. Unknown values are null. About one person in five has no LinkedIn URL, so tell the agent to report "no profile URL" rather than guess. Read email_status before anyone sends.
Free checks first
count_leads, list_enum_values and get_account spend no records. get_account shows your balance before a batch, and count_leads sizes an audience without pulling anyone.
count_leads counts mailable people (verified, catch_all_valid or catch_all) unless you widen it. We tried to run a fresh count for this page and the people-search source returned a 503, so there is no count here. Run your own and let the agent report the date.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 400 | Two identifiers sent, or none. | Send one of email, linkedin_url, phone or person_id. |
| 401 | The OAuth sign-in is missing or expired. | Run /mcp in Claude Code and re-authenticate. In Cursor, sign in again from MCP settings. |
| 402 | The free 1,000 records are spent. The free plan is one-off. | Move to Pro at $499 a month. |
| 429 | Over 100 requests per second per key. | Wait one second and retry. Ask the agent to work in small batches. |
| Wrong enum | A sizing filter used a value not in the catalogue. | Call list_enum_values with a search term and use the exact string. |
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 found person costs 1 record. A get_lead that finds nobody costs nothing over MCP, the same as a REST 404 on enrich. See pricing for Free and Pro.
Can the agent go from a phone number to a person?
Yes. get_lead accepts phone as the key. The reverse phone lookup MCP page covers it.
The free plan is 1,000 records, one-off, no card. Pro is $499 a month, flat.
Run your first reverse email lookup from Claude, free
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →