Claude skill

CSV Enricher

Drop a CSV into Claude and get the same file back with emails, phones, titles and company fields, after a price check.

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

What it does

CSV Enricher is a Claude skill for one job: fill in a spreadsheet you already have. It reads your file and sorts the rows: LinkedIn URL, email, name and domain, or domain only. Then it looks each one up through the LeadOcean MCP server.

It tells you the record cost before it spends anything. It then writes yourfile.enriched.csv next to the original. Your columns stay untouched. Our values go in new lo_ columns.

Other enrichment skills push results into a CRM and need a second MCP connected. The FullEnrich Attio template is one example (source below). This one needs only LeadOcean and writes a file, so you can check the output before it goes anywhere.

How it works

  1. Check the account. get_account is free. The skill reads how many records you have left and stops if it is zero.
  2. Read and route the CSV. No MCP call, no records. Each row gets a route: A (LinkedIn URL or email), B (name and domain), C (domain only) or skipped.
  3. Price the run. No MCP call. You see rows per route and the total, and you say yes or no. Nothing is spent before that.
  4. Look up people by key (route A). get_lead with reveal_email on. 1 record per row. It returns the emails and phones we hold. In phones-only mode it calls find_phone instead, also 1 record.
  5. Find people by name and domain (route B). search_leads with the domain and the full name, limit 1: 1 record. If the name matches, get_lead by person_id: 1 more record.
  6. Look up companies (route C). get_company by domain: 1 record per unique domain, however many rows share it.
  7. Write the file and report. Rows enriched, not found, skipped, and records spent per tool.

LeadOcean has no lookup by name alone or by name plus company name. Route B needs the company domain. That is a property of the data, and the skill says so rather than guessing.

How to use it

  1. Download the zip: Download csv-enricher.zip.
  2. In Claude, open Customize, then Skills, and upload the zip.
  3. Connect the LeadOcean MCP server at https://api.leadocean.io/mcp. It signs in with OAuth, so no key is pasted.
  4. Attach a CSV and type: Enrich this CSV with csv-enricher.

You need a LeadOcean account. The free plan gives 1,000 records, one-off, with no card. Start free.

Sample output

The skill can size a company before you spend anything. count_leads is free. This is the raw result for domain: ["stripe.com"], run on 2026-09-30:

json
{"total":10301,"totalIsExact":true,"credits":0}

That is 10,301 people at that domain with a verified or catch-all address (the default filter). It cost 0 records.

A full run on a real file spends records, so no real output is pasted here. This is the shape of the output file, with placeholder values.

Output format (placeholder values)

The skill saves <input name>.enriched.csv next to your file. It keeps every original column, then adds these:

csv
full_name,domain,lo_status,lo_route,lo_full_name,lo_title,lo_company,lo_domain,lo_email,lo_email_status,lo_phone,lo_linkedin_url,lo_industry,lo_employees,lo_hq_country
Jane Doe,acme.com,enriched,B,Jane Doe,VP Sales,Acme,acme.com,jane@acme.com,verified,,https://www.linkedin.com/in/janedoe,Software,500,US

lo_status is enriched, not_found or no_key. lo_route is A, B or C. Your own values are never overwritten. The skill then replies with one table: rows in, enriched, not_found, no_key, records spent by tool, and records remaining.

Here is how the price check works on a made-up 100-row file. 60 rows have a LinkedIn URL (60 records). 25 have a name and domain (50 records). 15 have only a domain, across 10 unique domains (10 records). The skill would show 120 records and wait for your yes.

Records per run

StepToolRecords
Account checkget_account0
Person by keyget_lead1 per row
Phones onlyfind_phone1 per row
Person by name and domainsearch_leads then get_lead2 per row
Company by domainget_company1 per unique domain
Sizing a domaincount_leads0

Duplicate keys are dropped before pricing. The skill works in batches of 50 and saves after each one. On the Pro plan ($499 a month, flat) there is no per-record price. See pricing.

For files too big for a chat, use the Exports page in the app. See bulk CSV export. To go the other way, read find emails from a CSV of names and export leads to CSV in Go.

FAQ

What columns does my CSV need?

At least one of: LinkedIn URL, email, name plus company domain, or company domain. Headers are matched by name, so linkedin_url, email, full_name and domain all work. Rows with none of these are skipped and marked no_key.

Does a miss cost a record?

The skill treats every lookup as 1 record in its price, so the estimate is an upper bound. The REST enrich endpoint charges nothing for a 404 (LeadOcean OpenAPI, checked 2026-09-30). An MCP get_lead that finds nobody costs nothing, the same as the REST 404.

How many rows can one run handle?

The free plan covers about 1,000 rows at 1 record each. The skill asks you to confirm any run above 500 records and stops cleanly if the records run out, keeping the rows already written.

Enrich your first CSV for free

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

Get your free API key →