What it does
Everything readable about one person in a single call: who they are, what they do now, how long they have done it, how many followers they have, and what they last posted. The research step before any personalized message — and the reason an agent does not need a scraper.
This tool drives a real LinkedIn account
Arguments
| Name | Type | Required | Meaning |
|---|---|---|---|
| profile | string | yes | Profile URL, public identifier (the /in/ slug) or provider id |
| account | string | no | Sender account id or name to read as. Defaults to the first 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": {
"profile": {
"type": "string",
"description": "Profile URL, public identifier (the /in/ slug) or provider id"
},
"account": {
"type": "string",
"description": "Sender account id or name to read as. Defaults to the first connected account."
}
},
"required": [
"profile"
]
}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": "get_linkedin_profile",
"arguments": { "profile": "https://www.linkedin.com/in/example" }
}
}'Returns
One object merging identity (providerId, fullName, headline, company, location, profileUrl, networkDistance) with enrichment (currentRole, currentCompany, jobChangeAt, followerCount, isPremium, recentPost, recentPostAt, recentPostId). Null when the profile cannot be resolved.
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.
{
"providerId": "ACoAAB1x…",
"fullName": "Dana Whitfield",
"headline": "CTO at Northbeam",
"company": "Northbeam",
"location": "Austin, Texas, United States",
"profileUrl": "https://www.linkedin.com/in/example",
"networkDistance": "DISTANCE_2",
"currentRole": "Chief Technology Officer",
"currentCompany": "Northbeam",
"jobChangeAt": 1780272000000,
"followerCount": 4820,
"isPremium": true,
"recentPost": "We finally cut our p99 in half. The fix was not the database…",
"recentPostAt": 1789084800000
}Worth knowing
Best-effort per field: a profile that hides its activity still returns its identity, with the post fields simply absent. jobChangeAt is the start of the current role in epoch ms — compare it against now to find someone who moved recently, which is the strongest timing signal LinkedIn gives away. The profile argument accepts a full URL, the /in/ slug, or a providerId from search_linkedin_people.
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_linkedin_posts
Recent posts by a LinkedIn member, newest first
search_linkedin_people
Search LinkedIn for people matching an ICP, through a connected sender account
list_linkedin_connections
First-degree connections of a connected sender account
All 21 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.