This page is about setup and prompts. For the REST roster endpoint and the full field list, see Company Employees. Other clients are on the MCP hub, and the wider catalog is under enrichments.
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 there.
Cursor. Add a remote server to mcp.json, in the url form shown in the Cursor MCP docs, September 2026:
{
"mcpServers": {
"leadocean": {
"url": "https://api.leadocean.io/mcp"
}
}
}Cursor starts the OAuth 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 dedicated roster tool. The agent uses search_leads, which the server lists as leadocean_search_leads, with the domain filter. It costs 1 record per person returned.
| Input | Type | Meaning |
|---|---|---|
domain | string[] | Company website domains, for example ["stripe.com"]. |
title | string[] | Optional. Job title keywords. Wrap a value in [brackets] for an exact match. |
seniority | enum[] | Optional. Lowercase bands such as c_suite, vp, director. |
country | enum[] | Optional. ISO alpha-2 codes such as US, DE. |
limit | int | Records per page, 1 to 100. Default 25. |
cursor | string | meta.nextCursor from the previous page, passed back unchanged. |
The REST twin is GET /v1/companies/{domain}/people. It lists the whole roster with no filters. Over MCP you get the roster and the filters in one tool.
Prompts that work
| Prompt | What the agent calls | Records |
|---|---|---|
| "List the VPs and directors at acme.com and tell me how many have a verified work email." | search_leads with domain, seniority | One per person returned |
| "How many people can I reach at acme.com? Do not pull anyone yet." | count_leads with domain | 0 |
| "Pull the first 25 engineers at acme.com in Germany, then enrich the three most senior." | search_leads, then get_lead with person_id | 25 plus 3 |
Put the record limit in the prompt. "Stop after 25 records" is enough for the agent to hold a page.
A question about size goes to count_leads, which is free. A request for names goes to search_leads. Addresses and numbers need get_lead or find_phone, 1 record each.
What the agent gets back
The result is a data array of thin leadocean.person.v1 records plus a meta block. Field names are from the search docs and the OpenAPI spec, September 2026. Values below are placeholders.
{
"data": [
{
"profile_data": {
"profile_full_name": "Alex Example",
"profile_headline": "Head of Sales at Acme",
"profile_url": "https://www.linkedin.com/in/alex-example"
},
"contact_data": {
"contact_current_experiences": [
{ "job_title": "Head of Sales", "company_domain": "acme.com" }
],
"has_email": true,
"has_phone": false,
"email_status": "verified",
"email_type": "work"
},
"meta": { "source_ids": { "person_id": "1234567890" } }
}
],
"meta": { "nextCursor": "(opaque string)" }
}Search returns flags, never addresses. Read email_status before you ask for an address. About a fifth of people have no LinkedIn URL, so profile_url can be null. Use person_id for those.
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: ["stripe.com"] on 2026-10-01. It returned total: 10301, totalIsExact: true, credits: 0. That counts mailable people (verified, catch_all_valid or catch_all), not everyone we hold. A roster that size hits the 10,000-row paging cap, so narrow it by title, seniority or country.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | The OAuth sign-in is missing or expired. | Run claude mcp login leadocean or /mcp in Claude Code. In Cursor, sign in again from the MCP settings. |
| 402 | The free 1,000 records are spent. The free plan is one-off, it does not reset. | Move to Pro at $499 a month. |
| 429 | Faster than 100 requests per second per key. | Wait the Retry-After seconds and retry. Ask the agent to work in small batches. |
| Wrong enum | A value is not in the catalogue, such as VP Sales as a seniority or a made-up industry. | 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?
Each person returned is 1 record. A page of 25 costs up to 25 records. A search that returns nobody costs nothing, and rejected requests (429, 402, 503) are never metered.
How many employees can the agent list per company?
Up to 10,000 rows in one walk. On the last page meta.depthCapped is true and there is no further cursor. Split by country, seniority or title and run several searches. Related field views are company revenue and company funding over MCP.
The free plan is 1,000 records, one-off, no card. Pro is $499 a month, flat. See pricing.
List the employees of your first target account from Claude, free
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →