Public leaderboard

Public assessment

abhineet34/linkedin-mcp-server (linkedin-mcp-server)

linkedin-mcp-server · v1.0.2 · scanned

What changed in the harness

Selection accuracy 100→100, token cost up 19%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

20.4 / 30

20.4 out of 30
03Economics

19.4 / 20

19.4 out of 20
04Discoverability

9.8 / 20

9.8 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

28 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
authenticate_linkedin
no_return_description
Authenticate with LinkedIn OAuth using a standard LinkedIn Developer Application. Returns the authentication status and the resulting access token information, or an error if authentication fails.
revoke_linkedin_auth
no_return_description
Revoke the current LinkedIn OAuth authentication and clear all stored tokens. Returns a confirmation that authentication has been revoked and stored credentials removed.
get_my_profile
name_restates_behavior no_return_description
Retrieve the authenticated user's own LinkedIn profile via OpenID Connect, using standard OAuth scopes. Returns the user's profile details such as name, headline, and other profile fields.
get_company_info
no_return_description
Get basic public information about the company identified by the required companyId parameter, such as its name and logo. Returns basic company details. Note: access is limited and may require a Marketing Solutions partnership in the future.
get_company_profile
name_restates_behavior no_return_description
Retrieve detailed profile information for the company identified by the required companyId parameter. Returns the company's detailed profile data. Note: access is limited and may require a Marketing Solutions partnership in the future.
update_partnerships
no_return_description
Update LinkedIn API partnership access settings after you are approved for special access by toggling the communityManagement, talentSolutions, salesSolutions, and marketingSolutions boolean flags. Returns a confirmation of the updated partnership settings.
create_post
name_restates_behavior no_return_description
Publish a text post to LinkedIn using the required content text, with optional visibility of PUBLIC or CONNECTIONS (default PUBLIC). Returns the created post's details including its ID.
get_my_posts
no_return_description
Retrieve your published LinkedIn posts along with their engagement metrics, limited to the number specified by count (default 20). Returns a list of posts and their metrics.
get_feed
no_return_description
Retrieve posts from your LinkedIn feed, limited to the number specified by count (default 20). Returns the feed posts from your network.
like_post
name_restates_behavior no_return_description
Like the LinkedIn post identified by the required postId parameter to signal appreciation. Returns a confirmation that the like was recorded.
comment_on_post
no_return_description
Add a comment with the given text to the LinkedIn post identified by the required postId parameter. Returns the created comment's details including its ID.
share_post
name_restates_behavior no_return_description
Repost the LinkedIn post identified by the required postId parameter, optionally adding your own commentary visible to your network. Returns a confirmation and details of the shared post.
search_jobs
name_restates_behavior params_unexplained no_return_description
Search LinkedIn job postings using optional filters: keywords (search terms or phrases), location (geographic area), company (employer name), experienceLevel (seniority level), jobType (full-time, part-time, etc.), datePosted (posting recency), salary (compensation range), industryId (LinkedIn industry identifier), and functionId (LinkedIn job function identifier). Returns a list of matching job postings with their details.
get_job
no_return_description
Retrieve comprehensive details about the LinkedIn job posting identified by the required jobId parameter, including its description, company, and application information. Returns the full job details.
save_job
no_return_description
Bookmark the LinkedIn job identified by the required jobId parameter for later review or application. Returns a confirmation that the job was saved.
get_saved_jobs
no_return_description
Retrieve all of your saved and bookmarked LinkedIn job listings. Returns a list of the saved jobs.
get_job_applications
no_return_description
Retrieve the status and details of all your LinkedIn job applications. Returns a list of applications with their current status.
search_people
params_unexplained no_return_description
Search LinkedIn professionals using optional filters: keywords (general search terms), firstName (the person's first name), lastName (the person's last name), companyName (current employer), title (job title), location (geographic area), industry (professional industry), and school (university or school attended). Returns a list of matching professional profiles.
get_profile
no_return_description
Access detailed LinkedIn profile information for any user identified by the required profileId parameter. Returns the profile's details such as name, headline, experience, and education.
get_connections
no_return_description
Retrieve your complete LinkedIn connections list. Returns a list of your connection profiles.
send_connection_request
name_restates_behavior no_return_description
Send a connection request to the user identified by the required profileId parameter, optionally including a personalized message to improve acceptance. Returns a confirmation that the request was sent.
get_connection_requests
no_return_description
View all pending incoming connection requests, providing their request IDs so you can accept them. Returns a list of pending connection requests.
accept_connection_request
name_restates_behavior no_return_description
Accept the pending connection request identified by the required requestId parameter, adding that user to your network. Returns a confirmation that the request was accepted.
get_conversations
no_return_description
Access your LinkedIn conversation threads and chat history, providing conversation identifiers for retrieving messages. Returns a list of conversations.
get_messages
params_unexplained no_return_description
Retrieve the messages from the conversation thread identified by the required conversationId parameter (the conversation identifier, obtainable from get_conversations). Returns a list of messages with their senders and content.
send_message
name_restates_behavior no_return_description
Send a direct message to the connection identified by the required recipientId parameter, with the required subject and body. Returns a confirmation that the message was sent.
get_profile_analytics
no_return_description
Access comprehensive performance and engagement metrics for your own LinkedIn profile. Returns the profile's analytics data.
get_post_analytics
name_restates_behavior no_return_description
Retrieve detailed analytics and engagement data for the LinkedIn post identified by the required postId parameter. Returns the post's analytics and engagement metrics.

Selection evidence

Confusable tool pairs.

10 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
get_company_info get_company_profile high Both tools take a companyId and describe the same company information, differing only in 'basic' vs 'detailed', so a task like 'get company info' or 'look up information on company X' can genuinely match either.
get_my_profile get_profile medium Near-identical profile names; a task like 'get the profile information' without specifying 'my' vs another user is ambiguous, risking get_my_profile (no params) when a specific profileId was intended.
get_profile_analytics get_post_analytics medium Both offer analytics with engagement metrics, so a task like 'get my analytics' or 'get engagement metrics' is ambiguous between profile performance and post-level data.
get_saved_jobs get_job_applications medium Both return the user's own jobs, so 'show me my jobs' or 'get details of the jobs I have' is genuinely ambiguous between saved/bookmarked listings and application statuses.
get_connection_requests accept_connection_request medium Both concern 'incoming connection requests' (one to view/manage, one to accept), so a task like 'handle my pending connection requests' or 'deal with an incoming connection request' could plausibly select the wrong one.
get_connections get_connection_requests low Names share 'connection(s)', so shorthand like 'get my connection requests' risks matching the full connections-list tool, though the descriptions do separate 'list' from 'incoming requests'.
get_my_profile get_profile_analytics low Both involve 'my profile'; a task like 'get my profile stats/data' is ambiguous between profile information and performance/engagement metrics.
send_connection_request send_message low send_connection_request accepts an optional message and both send to connections, so 'send a message to a connection' is ambiguous between a DM and a connection request despite different descriptions.
get_company_profile get_profile low get_profile claims 'detailed profile information for any user', so a task like 'get the detailed profile for Acme' risks selecting the generic profile tool over the company-specific tool, though 'company' usually disambiguates.
get_job get_job_applications low A task like 'get my job details/info' is ambiguous between a single job posting and the user's application tracking, though the term 'application' usually disambiguates.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard