Most "innovative tools" lists rank brand names. This one gives you four queries to run against any vendor's API, so you rank them yourself.
TL;DR
- Innovation in this category shows up in four places: free list sizing, depth of the person record, agent access over MCP, and a cost you can read before you spend.
- The test takes about 30 minutes and spends about 3 LeadOcean records of the free 1,000. Run the same four checks on every vendor you shortlist.
- Pass or fail is binary. A tool that cannot answer "how many people match, for free?" has not caught up.
Prerequisites
- A free LeadOcean account and API key from app.leadocean.io. Export it as
$LEADOCEAN_API_KEY. curlandjq.- Optional: an MCP client such as Claude Code, for Step 4.
- The vendor you are testing, with a trial key. Reuse the same four requests against it.
Step 1: Size the list before you pay for it
A modern tool tells you the audience size without charging records. Ask for a count, not a page.
curl -s -X POST "https://api.leadocean.io/v1/people/search?count=true" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":["Head of Revenue Operations"],"country":["US"],"limit":1}' | jq .metacount=true goes in the query string, not the JSON body, which rejects unknown fields. The data array comes back empty, meta.countOnly is true and the call costs nothing. meta.total is capped at 100,000.
For companies, GET /v1/companies/count is also free. It returns an exact total with breakdowns by industry, headcount band, HQ country, HQ state and NAICS.
Score it: does the vendor size a filter set for free, and is the number exact or a floor?
Step 2: Pull one page and read the cost
Search with a flat JSON body. Filters are arrays, limit runs 1 to 100, and you page with a cursor.
curl -s -X POST https://api.leadocean.io/v1/people/search \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": ["Head of Revenue Operations"],
"country": ["US"],
"jobLevel": ["Director", "VP"],
"limit": 1
}' | jq '{person_id: .data[0].meta.source_ids.person_id, meta: .meta}'One record is one person you receive. A page of 1 is 1 record. One search pages to 10,000 rows, then meta.depthCapped is true and there is no nextCursor. Narrow the filters instead of walking the index.
Score it: is the unit of cost written down, and can you predict the bill from the request?
Step 3: Enrich and check for career history
Depth is where tools differ most. Enrich takes exactly one of linkedin_url, email, phone or person_id. Use the person_id from Step 2.
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_STEP_2", "reveal_email": true}' \
| jq '{current: .data.contact_data.contact_current_experiences, past: .data.resume_data.experiences}'Since 17 October 2026 the response carries resume_data: past roles with title, company name, dates and job level, plus education, certifications, awards and more, each when held. Past employers carry no company_id yet, so match them by name.
A person we hold nothing for is a 404 and costs nothing.
Score it: does the record show where the person worked before, or only today's title?
Step 4: Ask it in plain English over MCP
If a tool claims to be AI-ready, connect it to an agent and ask. LeadOcean runs a hosted MCP server at https://api.leadocean.io/mcp with 13 tools and OAuth sign-in, so no key is pasted.
claude mcp add --transport http leadocean https://api.leadocean.io/mcpThen prompt:
How many Heads of Revenue Operations are in the US with a
mailable email? Use the free count tool only. Do not search.The agent calls leadocean_count_leads, a free tool. It states the filters it used and that the default counts verified, catch-all-valid and catch-all addresses.
Score it: can an agent size a list and see the price of each tool before it calls one?
What you get
Run on 21 October 2026 through the free leadocean_count_leads MCP tool, with facets off:
{
"filters": { "title": ["Head of Revenue Operations"], "country": ["US"] },
"total": 279,
"totalIsExact": true,
"totalAll": 472,
"distinctCompanies": 266,
"credits": 0
}total is the mailable count (email status verified, catch_all_valid or catch_all). totalAll is the same filters with no email condition. The gap of 193 people is the reason to read the label on any count a vendor shows you.
The enrich response shape from the API reference, with placeholder values:
{
"success": true,
"data": {
"profile_data": { "profile_full_name": "Jane Doe", "profile_headline": "Head of Revenue Operations at Acme" },
"contact_data": {
"email_status": "verified",
"contact_emails": [{ "email": "jane@acme.com", "type": "work", "status": "verified" }],
"contact_current_experiences": [{ "...": "company name, domain, job title" }]
},
"resume_data": {
"experiences": [{ "...": "title, company name, start and end dates, job level" }],
"educations": [],
"certifications": []
},
"meta": { "source_ids": { "person_id": "1234567890" } }
},
"meta": { "credits": 1 }
}Top-level groups follow the API reference. The keys inside each past role are summarized, not exact, so run Step 3 on one person and read the real keys.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key header | Check $LEADOCEAN_API_KEY is exported and sent as x-api-key |
| 429 | Above the plan's rate limit (5 a second on Free, 200 on Agency) | Honor Retry-After, or move to a plan with a higher rate |
| 402 | Free records spent | Check usage with GET /v1/usage, then see pricing |
| Empty results | An enum value that does not exist, such as jobLevel "Vice President" | Use exact values: C-Team, VP, Director, Manager, Staff, Other. Check with GET /v1/enums |
meta.depthCapped is true | One search reached 10,000 rows | Add filters and split the list |
| Export refused | Over 50,000 rows a request or 500,000 a day | Split the export; bulk CSV export is not on Free |
FAQ
Which B2B lead gen tool is the most innovative?
The one that passes your four checks with your filters. Rankings go stale in a quarter, and a query takes minutes. Run it on your shortlist.
Does LeadOcean replace a sequencer or a CRM?
No. LeadOcean is a data API with a hosted MCP server and an app for exports. It has no sequencer, dialer, CRM or Chrome extension. Pair it with the tools you already use.
How many records does the test spend?
About 3: one search record and two enrichments. Counts, filter lists, enum lookups and enrichments that find nothing cost nothing. The free plan holds 1,000 records, for life, with no card.
Is free list sizing really free?
Yes. count=true search, GET /v1/companies/count and the MCP tools leadocean_count_leads and leadocean_count_companies spend no records.
Where do I compare the vendors?
Start with best B2B lead gen and sales intelligence companies, then which brands are worth it and the usability guide.
Test it yourself before you believe a roundup
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →