Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

How-to guide

How to Size Your TAM in Claude (2026)

Add one connector URL, then let Claude run free counts that narrow a market from TAM to a buyer list you can work.

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

TL;DR

  • Claude reaches LeadOcean through one custom connector. It counts every filter set you describe and returns exact totals, so TAM, SAM and SOM become four counts instead of one analyst guess.
  • It takes about 15 minutes. The sizing run spends 0 records, because counts and lookups are free.
  • Only people returned to you count as records. An optional 10-row spot-check spends 10 of the 1,000 free records.

Prerequisites

  • A LeadOcean account from app.leadocean.io. The free plan has no card and gives 1,000 records, one-off.
  • A Claude account that can add a custom connector. Per the Claude docs, September 2026, who can add one depends on your plan and, in Team and Enterprise, on your admin.
  • Optional, for the REST check in Step 5: curl and a key in your shell as $LEADOCEAN_API_KEY. The chat steps need no key.
bash
export LEADOCEAN_API_KEY="paste-your-key-here"

Step 1: Add LeadOcean to Claude

Claude connects from Anthropic's cloud, so you add a public URL and sign in with OAuth. No key is pasted. Open Customize, then Connectors, then "+ Add", then "Add custom connector".

text
Name: LeadOcean
URL:  https://api.leadocean.io/mcp
Request headers: leave empty

Click "Continue", review the authentication Claude detected, click "Continue" again, then approve the sign-in on the LeadOcean page. The full click-by-click, including Team and Enterprise, is on Connect LeadOcean to Claude. In a new chat, click "+", then "Connectors", and switch LeadOcean on.

Step 2: Write the buyer in one sentence

A market size is only as good as the buyer definition behind it. Write one sentence that names the industry, company size and role. Keep it to filters LeadOcean holds.

text
Buyer: sales leaders (VP or C-level, Sales & Business Development) at software
companies with 51 to 500 employees. Product: a sales tool. Question: how big is
the market, how much of it can I sell into from the US, and how many VPs is that?

This is the same input the size my TAM from one sentence prompt takes. Everything after this step turns that sentence into counts.

Step 3: Resolve the exact filter values

Filter values are exact strings. "Software" matches nothing, and "Software Development" does. Make Claude look each value up before it counts anything.

text
Use leadocean_list_enum_values to find the exact strings for: industry (software),
employee_range, job_level and job_function (sales). Show me the values you will
use. Do not call any tool that spends records.

Claude calls the free lookup and reports back. For this buyer it should settle on these values.

json
{
  "industry": ["Software Development"],
  "employeeRange": ["51-200", "201-500"],
  "jobLevel": ["VP", "C-Team"],
  "jobFunction": ["Sales & Business Development"]
}

Step 4: Count TAM, SAM and SOM

Ask for one count per tier. Each tier keeps the filters above it and adds one. The prompt below tells Claude to use only the free count tool and to label what each number is.

text
Use leadocean_count_leads, with facets false, for four counts. Never call a tool
that spends records.
1. TAM: jobLevel VP and C-Team, jobFunction Sales & Business Development,
   industry Software Development. No size or country filter.
2. Add employeeRange 51-200 and 201-500.
3. SAM: add country US.
4. SOM pool: same as 3, but jobLevel VP only.
Put the results in a table with the exact filters beside each count. Say which
email statuses were counted.

A count is a people count. To turn it into dollars you need accounts, and leadocean_count_companies counts those for free. It takes the company-search filters and breaks the total down by industry, headcount band, HQ country, HQ state and NAICS.

text
Use leadocean_count_companies with industry Software Development,
employeeRange 51-200 and 201-500, hqCountry US. Report the total and the
split by headcount band. Then multiply the total by my contract value of
$X a year.

Give Claude your own price, since LeadOcean holds no figure for your product. The REST version is GET /v1/companies/count, also free.

Step 5: Check one count over REST

You can reproduce any chat count from a terminal. The sizing call is a search with count=true as a query parameter and limit at 1. The body is flat JSON with arrays.

bash
curl -s "https://api.leadocean.io/v1/people/search?count=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY" -H "content-type: application/json" \
  -d '{
    "jobLevel": ["VP", "C-Team"],
    "jobFunction": ["Sales & Business Development"],
    "industry": ["Software Development"],
    "employeeRange": ["51-200", "201-500"],
    "country": ["US"],
    "emailStatus": ["verified", "catch_all_valid", "catch_all"],
    "limit": 1
  }' | jq '.meta'

The REST total is capped at 100,000. For a bigger market, use the MCP count tool, which returns the total with totalIsExact beside it.

What you get

We ran the four counts from Step 4 on 2026-10-01 with leadocean_count_leads. Each one spent 0 records.

TierFilters addedMailable people
TAMVP and C-Team, Sales & Business Development, Software Development17,844
Narrowed+ employeeRange 51-200 and 201-5005,713
SAM+ country US3,449
SOM poolVP only2,670

Every figure is a mailable count: people with a verified, catch_all_valid or catch_all email, which is the tool's default. It is not everyone we hold for those filters, so label it that way in your deck.

Claude also returns facets when you leave them on. For the 5,713 row, the 2026-10-01 run split the people by seniority and size.

json
{
  "total": 5713,
  "totalIsExact": true,
  "credits": 0,
  "facets": {
    "seniority": [
      { "value": "vp", "count": 4276 },
      { "value": "c_suite", "count": 1294 },
      { "value": "owner", "count": 143 }
    ],
    "company_size": [
      { "value": "51-200", "count": 3521 },
      { "value": "201-500", "count": 2192 }
    ]
  },
  "unsupportedFilters": []
}

Read the table as a funnel. About 3,449 of the 5,713 sit in the US, and 2,670 of those are VPs.

The account count from Step 4 ran on 2026-10-21 with leadocean_count_companies and spent 0 records. Software Development companies of 51 to 500 staff headquartered in the US: 11,577, exact. The split was 9,261 at 51-200 and 2,316 at 201-500. At a $10,000 contract value that is a $115.8M account TAM; swap in your own price. Your numbers will move as the data changes, so date every count you publish.

The people counts leave out funding, revenue and headquarters city or state filters, which the people count tool does not support. Use leadocean_count_companies for those cuts, or apply them at search time. Total spend for the run: 0 records.

Troubleshooting

ErrorCauseFix
Connector shows, but no tools appearThe sign-in window closed before approval, or the connector is off in this chatClick "Connect" again and approve. Then switch LeadOcean on under "+", then "Connectors".
401Missing, wrong or revoked key on a REST callRe-copy the key from app.leadocean.io and export $LEADOCEAN_API_KEY again.
429Above your plan's rate per account (5 requests a second on Free, 200 on Agency)Wait the Retry-After seconds, then slow the loop. Five counts need nothing near that rate.
402Free plan: the 1,000 records are spentCounts stay free. Read the account, or move to Solo at $97 a month. Free records do not reset.
Empty results or a count of 0A filter value outside the catalogue, such as industry: "Software"Ask Claude to call leadocean_list_enum_values and use the exact string it returns.
Total stops at 100,000The REST count is capped at 100,000Use leadocean_count_leads, or add a filter and count the pieces.

FAQ

How many records does sizing a TAM in Claude cost?

Zero. Counts, filter lookups and enum lookups are free, however many you run. Records are spent only on people returned by a search, a lookup or an export.

Is a people count the same as a market size?

No. It is the number of reachable buyers in a segment. Count accounts with leadocean_count_companies, multiply by your contract value to get dollars, and use your own price for that step.

Why does the count say "mailable"?

The count tool defaults to verified, catch_all_valid and catch_all emails. Pass emailStatus, hasEmail or reachable to change that. Say which one you used next to every number.

How often should I re-run the counts?

Once a month is enough. The dataset is refreshed monthly, and each record carries its own fetched_at date. Re-run the same prompt, keep the filters fixed, and compare totals by date.

Can I pull the whole SAM into a list?

Not in one search. One search pages to 10,000 rows, and the capped page carries meta.depthCapped. Split the SAM by country or headcount band, or use an export from Solo up, which takes up to 50,000 rows a request.

Does Claude see my API key?

Not through the connector. The MCP server uses OAuth sign-in and no key is pasted into chat. Only the optional REST check reads $LEADOCEAN_API_KEY from your shell.

Can I do this in a coding tool instead?

Yes. The same MCP URL works elsewhere. See size your TAM in Claude Code and in Windsurf. More recipes are in the blog hub.

Size your market in Claude, free

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

Get your free API key →