What it does
Build the account list before the people list.
This tool drives a real LinkedIn account
Arguments
| Name | Type | Required | Meaning |
|---|---|---|---|
| keywords | string | no | Free text |
| location | string | no | Comma-separated places (headquarters) |
| industry | string | no | Comma-separated industries |
| headcount | string | no | Size range like 11-50, 51-200, 201-500, 501-1000, 1001-5000 |
| hiring | boolean | no | Only companies with open jobs |
| sales_navigator | boolean | no | Use the account's Sales Navigator search (needs the seat) |
| limit | number | no | 1–100 per page (classic returns 10 per page) |
| cursor | string | no | The `cursor` from the previous page, to continue |
| account | string | no | Sender account id or name to act as. Defaults to the healthiest connected account. |
This table is generated from the literal inputSchema that tools/list returns, so what your client sees and what this page says are the same object:
{
"type": "object",
"properties": {
"keywords": {
"type": "string",
"description": "Free text"
},
"location": {
"type": "string",
"description": "Comma-separated places (headquarters)"
},
"industry": {
"type": "string",
"description": "Comma-separated industries"
},
"headcount": {
"type": "string",
"description": "Size range like 11-50, 51-200, 201-500, 501-1000, 1001-5000"
},
"hiring": {
"type": "boolean",
"description": "Only companies with open jobs"
},
"sales_navigator": {
"type": "boolean",
"description": "Use the account's Sales Navigator search (needs the seat)"
},
"limit": {
"type": "number",
"description": "1–100 per page (classic returns 10 per page)"
},
"cursor": {
"type": "string",
"description": "The `cursor` from the previous page, to continue"
},
"account": {
"type": "string",
"description": "Sender account id or name to act as. Defaults to the healthiest connected account."
}
}
}Request
Paste this, swap the key, and you have called the tool.
curl -s https://topclozer.com/api/mcp \
-H "Authorization: Bearer tcz_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_linkedin_companies",
"arguments": { "keywords": "observability", "location": "Germany", "headcount": "51-200" }
}
}'Returns
{ searchedAs, count, cursor, total, companies: [{ id, name, industry, location, followers, headcount, profileUrl, summary, jobOffers }] }
The payload arrives inside an MCP content block — one text block whose body is this JSON, pretty-printed. Parse the string; there is no structured-content field.
{ "searchedAs": "Marcus Feld", "count": 1, "cursor": "…", "total": 312, "companies": [{ "id": "38114588", "name": "Northbeam", "industry": "Software Development", "location": "Berlin", "followers": 9200, "headcount": "51-200" }] }Worth knowing
Classic company search returns 10 per page; page on with `cursor`. Location and industry are resolved to LinkedIn's filter ids; a name that resolves to nothing is dropped from the filter rather than failing the search.
Rate limit
30 LinkedIn tool calls per 5 minutes, per workspace. Exceeding it returns HTTP 429 with JSON-RPC error -32002 and a Retry-After header. The budget is shared by every LinkedIn tool and counted per workspace, so minting a second key does not buy a second allowance.
The limit exists because an agent retrying in a loop is the request pattern that gets a LinkedIn account restricted, and a restricted account is a much worse outcome for you than a 429. Workspace tools do not spend this budget.
Related tools
get_company
A LinkedIn company page: description, industry, size, headquarters, followers, website, employee growth
find_company_people
The people at one company who match a role — decision makers, a department, a title — through the account's search
All 65 tools are listed on the tool index. Connecting a client is on the Claude setup page, and the protocol details are on the server page.