Linked API MCP
This server connects your LinkedIn account to AI assistants, enabling automation of LinkedIn tasks across messaging, outreach, profile research, content management, and administration — with support for both standard LinkedIn and Sales Navigator.
Messaging & Conversations
Send direct messages to connections (standard or Sales Navigator)
Retrieve conversation history with any LinkedIn contact
Connection Management
Send connection requests (with optional note/email), withdraw pending requests, remove connections
Check connection status, retrieve existing connections and pending outgoing requests
People & Profile Search
Search for people using filters (name, position, company, location, industry, schools)
Fetch detailed profiles including experience, education, skills, languages, posts, comments, and reactions
Sales Navigator: advanced search with additional filters (e.g., years of experience) and profile fetching via hashed URLs
Company Research
Search companies by size, location, and industry; fetch company pages with employees, posts, and decision makers
Sales Navigator: search with additional filters (e.g., annual revenue) and fetch enriched company profiles
Content & Engagement
Create LinkedIn posts with optional media attachments (as yourself or a company page)
React to and comment on posts; fetch post details including comments and reactions
Analytics & Performance
Retrieve your Social Selling Index (SSI) and LinkedIn dashboard analytics
Get API usage statistics for a specified date range
Workflow Automation
Execute custom workflow definitions and poll long-running background operations for results
Account & Subscription Administration
Manage subscription status, seats, and billing periods
Connect/disconnect LinkedIn accounts, regenerate auth tokens
Set or reset rate limits per account; monitor usage against configured limits
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Linked API MCPsearch for software engineers at startups in San Francisco"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Linked API MCP server connects your LinkedIn account to AI assistants like Claude, Cursor, and VS Code. Ask them to search for leads, send messages, analyze profiles, and much more – they'll handle it through our cloud browser, safely and automatically.
Use cases
Sales automation assistant. Ask your AI to find leads, check their profiles, and draft personalized outreach. It can search for "software engineers at companies with 50-200 employees in San Francisco", analyze their backgrounds, and suggest connection messages that actually make sense.
Recruitment assistant. Let your assistant search for candidates with specific skills, review their experience, and send initial outreach. It handles the time-consuming parts while you focus on actually talking to people.
Conversation assistant. Your AI can read your existing LinkedIn conversations and help you respond naturally. It understands the context of your chats, suggests relevant replies, and can even send follow-up messages.
Market research assistant. Need competitor analysis? Your assistant can gather data about companies, their employees, and recent activities. Get insights about industry trends without spending hours on LinkedIn.
Related MCP server: linkedin-automation-mcp
Get started
To start using Linked API MCP, spend 2 minutes reading these essential guides:
Installation – set up MCP in Claude, Cursor, VS Code, or Windsurf.
Available tools – explore all the LinkedIn tools your assistant can call.
Usage examples – see real-world examples to get you started quickly.
Long-running actions
Linked API actions run through a cloud browser and are queued like normal automation. Many actions take several minutes, especially searches and profile fetches with optional data.
If a tool returns status, workflowId, operationName, and message, the action is still running. Do not retry the original tool because that can queue duplicate work. Call get_workflow_result with the exact workflowId and operationName until the final result is returned. By default get_workflow_result long-polls until the workflow completes or the current MCP client's request budget elapses; pass waitSeconds: 0 for an immediate single-shot snapshot.
License
This project is licensed under the MIT – see the LICENSE file for details.
Available Tools
37 toolsadmin_connect_accountA
Create a connection session to connect a new LinkedIn account. Returns a sessionId and connectionLink that must be opened in a browser.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses a key behavioral trait: the session requires opening a browser link. This is useful for the agent to understand the non-automated step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states purpose and returns, second adds a critical usage note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters or output schema, the description fully covers purpose, return values, and a key behavioral requirement (browser step). It is complete for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema coverage is 100%. Baseline for 0 parameters is 4, and the description adds no param info since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'connection session to connect a new LinkedIn account'. It also specifies the return value, distinguishing it from sibling tools like admin_disconnect_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for adding a new account but lacks explicit guidance on when or when not to use this tool, nor does it mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_disconnect_accountA
Disconnect a LinkedIn account. This action is irreversible — the account must be reconnected from scratch.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | UUID of the account to disconnect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the irreversible nature of the action and the need to reconnect from scratch, which is a key behavioral trait. Without annotations, this warning adds value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences that directly convey the action and its irreversibility. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequate but lacks details about potential error conditions, side effects, or response format, which would be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the parameter (accountId) with a description. The tool description adds no extra meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Disconnect' and resource 'LinkedIn account', distinguishing it from sibling tools like admin_connect_account. However, it could be more specific about the scope of the disconnection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., admin_get_accounts or admin_set_limits). There is no context about prerequisites or scenarios where disconnection is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_get_accountsA
Get all connected LinkedIn accounts and pending connection sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action. It does not disclose that this is a read-only operation, authentication requirements, or any potential rate limits, leaving behavioral traits largely unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words, achieving maximum conciseness while conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with no parameters and no output schema, the description is adequate but could be improved by noting that it returns a list of accounts and sessions, or mentioning pagination or count limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is 100%. The description adds no additional meaning beyond the empty schema, but per the baseline rule for 0 parameters, a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resources 'connected LinkedIn accounts and pending connection sessions', distinguishing it from sibling tools like admin_connect_account and admin_disconnect_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as admin_get_seats or admin_get_limits_usage. It only states what the tool does, without context on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_get_limits_usageB
Get current usage against configured rate limits for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | Account UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation but lacks explicit statements about side effects or safety. Since no annotations exist, more detail would be beneficial, but the basic intent is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly conveys the tool's purpose. No unnecessary words or redirection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one required parameter and no output schema, the description is adequate. It explains what the tool does clearly, though it could hint at the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for accountId ('Account UUID'). The description adds no additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets current usage against rate limits for an account. It uses a specific verb and resource, distinguishing it from sibling tools like admin_get_accounts or admin_set_limits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like admin_get_accounts or admin_get_subscription_status. No context on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_get_seatsA
Get active subscription seats. Each seat allows one connected LinkedIn account. Seat types: core (standard) and plus (includes Sales Navigator).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It states 'Get' (implied read-only) and explains seat types, but does not disclose permissions, rate limits, or any side effects. Adequate for a simple getter but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff. The first sentence states the action, the second adds context. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, no-output-schema tool, the description provides essential context about seat meaning and types. It does not mention output format, but it is sufficient for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in schema, so baseline is 4. Description adds value by explaining what a seat represents and the types, providing context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'active subscription seats', and distinguishes seat types (core and plus). It differentiates from sibling tools like admin_set_seats, which would set seats, implying a read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While it is implied as a read operation for seats, the description does not clarify when to prefer this over admin_get_accounts or admin_get_limits_usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_get_subscription_statusA
Get current subscription status, trial eligibility, and cancellation schedule.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It correctly identifies the tool as a retrieval operation, but does not explicitly state that it is read-only or require authentication, leaving some uncertainty for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loading the verb and key nouns with zero extraneous words—every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameter-less tool with no output schema, the description adequately conveys what the tool retrieves. However, more detail on the return format or data structure would enhance completeness if output schema were absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (coverage 100%), so the description adds meaning by listing the retrieved fields (status, trial eligibility, cancellation schedule), exceeding the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('get') and resource ('subscription status, trial eligibility, cancellation schedule'), clearly distinguishing it from sibling tools like 'admin_get_accounts' or 'admin_get_limits_usage' which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking subscription status, but it does not explicitly state when to use this tool versus alternatives (e.g., 'admin_get_limits_usage' for billing limits) nor provides any prerequisite or exclusion context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_regenerate_tokenB
Regenerate identification token for an account. The old token becomes invalid immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | UUID of the account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It reveals a key behavioral trait (old token becomes invalid immediately) but does not mention required permissions, side effects, or return format, leaving moderate gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short, front-loaded sentences with no wasted words. Every sentence contributes meaningful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no output schema, no annotations), the description adequately covers purpose and a key behavioral trait. It is complete enough for most use cases, though it could mention permissions or idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'accountId', which already has a description. The tool description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Regenerate' and the resource 'identification token for an account', and adds the important detail that the old token becomes invalid immediately. It is specific and distinct from sibling tools, though not explicitly mentioning differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool, when not to use it, or what prerequisites exist. The description lacks context for an agent to compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_reset_limitsB
Reset all rate limits for an account to the system defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | Account UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states the action without disclosing side effects, authorization needs, or what happens to existing limits. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy, front-loaded with key information. Efficient and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations or output schema, the description lacks return value details, error handling, and confirmation of reset. Incomplete for a destructive action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes the accountId parameter with 'Account UUID'. Description adds no further meaning beyond the schema, which has 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action 'Reset' and the resource 'all rate limits for an account', distinguishing it from sibling tools like admin_set_limits and admin_get_limits_usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus admin_set_limits or other alternatives. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_set_limitsA
Set rate limits for an account. Only specified limits are created or updated; other limits remain unchanged. Categories: stPersonProfileViews, stCompanyPageViews, stConnectionRequests, stMessages, stSearchQueries, stReactions, stComments, stPosts, nvPersonProfileViews, nvCompanyPageViews, nvMessages.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | Account UUID | |
| limits | Yes | Array of limit configurations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that only specified limits are updated, which is a key behavioral trait. However, it lacks details on permissions, side effects (e.g., if limits are enabled/disabled), or error states, which are important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no superfluous information. The first sentence states the core action, and the second provides the key nuance (partial update) and lists categories. It is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and only two parameters, the description covers the essential behavior. However, it omits the return value (if any), error conditions, or authentication requirements, which would improve completeness for an admin tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with parameter descriptions. The description adds value by enumerating the specific allowed categories, which goes beyond the schema's generic 'Limit category' description. This helps the agent understand valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets rate limits for an account and lists the categories, distinguishing it from siblings like admin_reset_limits. However, it could more explicitly differentiate when to use this tool versus resetting limits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by noting that only specified limits are updated, but it does not provide explicit guidance on when to use this tool versus alternatives like admin_reset_limits. No when-not or context for selection is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
admin_set_seatsA
Set number of subscription seats. Returns checkout link if no active subscription, otherwise updates immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | Number of seats (1-1000) | |
| seatType | Yes | Seat type. "plus" unlocks Sales Navigator actions. | |
| billingPeriod | Yes | Billing period |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It indicates mutation and conditional behavior (checkout link vs immediate update) but omits details on side effects, permissions, idempotency, or error handling. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core action and conditional behavior. It is well-structured and front-loaded, with no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 required parameters, conditional outcome, no output schema), the description provides basic context but lacks details on return value format, error conditions, or operational constraints. It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters. The description adds no additional meaning beyond the schema, so it meets the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it sets the number of subscription seats and specifies two distinct outcomes based on subscription status. This effectively distinguishes it from sibling tools like admin_get_seats and admin_get_subscription_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. It only describes the behavioral outcome, leaving the agent to infer appropriate usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_connection_statusB
Allows you to check the connection status between your account and another person (st.checkConnectionStatus action).
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | Public or hashed LinkedIn URL of the person you want to check the connection status with. (e.g., 'https://www.linkedin.com/in/john-doe') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It merely describes the operation as a check, implying a read, but does not disclose response format, error behavior, authentication needs, or any side effects. For a read operation, this is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is short but lacks structure. It is not verbose, but it misses important details like response or usage. Conciseness without completeness is not optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the basic purpose. However, it lacks context on when to use it, what the response looks like, or error handling, making it minimally complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description. The tool description adds the context that the check is between the user's account and another person, which is minimal additional value. Baseline 3 is appropriate as the schema already handles parameter semantics well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool allows checking connection status between the user's account and another person. It uses a specific verb 'check' and resource 'connection status', distinguishing it from sibling tools that modify connections (e.g., remove_connection).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like retrieve_connections or send_connection_request. It lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comment_on_postC
Allows you to leave a comment on a post (st.commentOnPost action).
| Name | Required | Description | Default |
|---|---|---|---|
| postUrl | Yes | The LinkedIn post URL to comment on (e.g., 'https://www.linkedin.com/posts/username_activity-id') | |
| text | Yes | Comment text, must be up to 1000 characters. | |
| companyUrl | No | LinkedIn company page URL. If specified, the comment will be added on behalf of the company. (e.g., 'https://www.linkedin.com/company/acme-corp') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavioral traits. It does not mention authentication requirements, rate limits, idempotency, or side effects (e.g., notifications). The bare action description leaves significant behavioral uncertainty for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant information. It efficiently conveys the core purpose, though it could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should cover prerequisites, return behavior, and error handling. It does not explain what happens after a successful comment, any constraints (e.g., comment length beyond schema), or failure scenarios, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions are detailed. The tool description adds no additional meaning beyond the schema, meeting the baseline expectation but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('leave a comment on a post') and includes the internal action name. Although it doesn't explicitly distinguish from siblings like react_to_post, the verb+resource combination is specific and unambiguous given the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., react_to_post, send_message). Without context on appropriate use cases or exclusions, the agent must infer when commenting is more suitable than reacting or messaging.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_postA
Creates a new LinkedIn post with optional media attachments (st.createPost action).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Post content, must be up to 3000 characters. | |
| companyUrl | No | LinkedIn company page URL. If specified, the post will be created on the company page (requires admin access). | |
| attachments | No | Media attachments for the post. You can add up to 9 images, or 1 video, or 1 document. Cannot mix different attachment types. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits. It adds constraints on media attachments (up to 9 images, 1 video/documents, no mixing) beyond the schema, but omits details on side effects, permissions, rate limits, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff. Every word contributes to understanding the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation, optional companies, media constraints) and absence of output schema or annotations, the description provides adequate but incomplete context. Missing aspects include return values, error handling, and company page admin requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds little beyond stating 'optional media attachments', not expanding on parameter details or usage nuances. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'creates' and the resource 'LinkedIn post', clearly differentiating from sibling tools like comment_on_post or fetch_post. It also mentions optional media attachments and the action identifier, providing a precise purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating posts but does not explicitly state when to use this tool versus alternatives (e.g., when to use company vs personal posts, prerequisites like admin access). No guidance on exclusions or trade-offs is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_custom_workflowC
Execute a custom workflow definition
| Name | Required | Description | Default |
|---|---|---|---|
| definition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must fully disclose behavior. It only says 'execute', omitting side effects, permissions, rate limits, or any consequences. The agent has no way to know what the tool actually does beyond the vague term.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous words, achieving conciseness. However, it is under-specified, sacrificing substance for brevity. It does not earn its keep by providing useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no parameter documentation, the description is critically incomplete. It fails to explain what the workflow does, what results are returned, or any constraints on the definition object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'definition' is an object with no description in either the schema (coverage 0%) or the description. The description adds no meaning about its structure, constraints, or required properties, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ('Execute') and a resource ('custom workflow definition'), but provides no specifics about what a workflow definition is or what execution entails. It does not differentiate from sibling tools like get_workflow_result, leaving ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., other workflow-related tools). The description lacks context on prerequisites, scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_companyB
Allows you to open a company page to retrieve its basic information (st.openCompanyPage action). Can optionally retrieve employees, posts and decision makers.
| Name | Required | Description | Default |
|---|---|---|---|
| companyUrl | Yes | Public or hashed LinkedIn URL of the company. (e.g., 'https://www.linkedin.com/company/microsoft') | |
| retrieveEmployees | No | Optional. Whether to retrieve the company's employees information. Default is false. | |
| retrievePosts | No | Optional. Whether to retrieve the company's posts information. Default is false. | |
| retrieveDMs | No | Optional. Whether to retrieve the company's decision makers information. Default is false. | |
| postsRetrievalConfig | No | Optional. Configuration for retrieving posts. Available only if retrievePosts is true. | |
| dmsRetrievalConfig | No | Optional. Configuration for retrieving decision makers. Available only if retrieveDMs is true. | |
| employeesRetrievalConfig | No | Optional. Configuration for retrieving employees. Available only if retrieveEmployees is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It mentions opening a company page and retrieving info but does not specify if this is read-only, if it has side effects, or what happens to the session. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no irrelevant information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, nested objects, no output schema), the description provides a high-level overview but lacks details on the return format or behavior of the 'open' action. It is adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are well-described in the input schema (100% coverage). The description adds minimal extra meaning beyond listing optional retrievals. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves basic company information with optional employees, posts, and decision makers. It uses a specific verb ('open' and 'retrieve') and resource ('company page'). However, it does not explicitly distinguish from similar tools like 'nv_fetch_company'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives (e.g., search_companies). The description implies using it when you have a company URL, but it does not state prerequisites, ideal scenarios, or conditions to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_personA
Allows you to open a person page to retrieve their basic information and perform additional person-related actions if needed. (st.openPersonPage action). Allows additional optional retrieval of experience, education, skills, languages, posts, comments and reactions. ⚠️ PERFORMANCE WARNING: Only set additional retrieval flags to true if you specifically need that data. Each additional parameter significantly increases execution time: 💡 Recommendation: Start with basic info only. Only request additional data if the user explicitly asks for it or if it's essential for the current task.
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | The LinkedIn profile URL of the person to fetch (e.g., 'https://www.linkedin.com/in/john-doe') | |
| retrieveExperience | No | Optional. Whether to retrieve the person's experience information. Default is false. | |
| retrieveEducation | No | Optional. Whether to retrieve the person's education information. Default is false. | |
| retrieveSkills | No | Optional. Whether to retrieve the person's skills information. Default is false. | |
| retrieveLanguages | No | Optional. Whether to retrieve the person's languages information. Default is false. | |
| retrievePosts | No | Optional. Whether to retrieve the person's posts information. Default is false. | |
| retrieveComments | No | Optional. Whether to retrieve the person's comments information. Default is false. | |
| retrieveReactions | No | Optional. Whether to retrieve the person's reactions information. Default is false. | |
| postsRetrievalConfig | No | Optional. Configuration for retrieving posts. Available only if retrievePosts is true. | |
| commentsRetrievalConfig | No | Optional. Configuration for retrieving comments. Available only if retrieveComments is true. | |
| reactionsRetrievalConfig | No | Optional. Configuration for retrieving reactions. Available only if retrieveReactions is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden for behavioral disclosure. It reveals that the tool executes an 'st.openPersonPage action' and warns about performance costs of extra parameters. However, it does not mention whether the tool is read-only, authentication requirements, or rate limits, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, front-loading the purpose and listing optional data types. The performance warning is clearly separated using emojis and bold text. It wastes no words, but could be slightly more streamlined by merging some phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, nested objects, no output schema), the description covers the main purpose and performance considerations but does not describe the output structure or 'basic information' contents. The nested configuration parameters are left to the schema, making the description adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by warning about performance impact of setting additional retrieval flags, which goes beyond the schema's descriptions. However, it does not explain parameter formats or constraints beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: opening a person page to retrieve basic information and optionally additional data like experience, education, skills, etc. The verb 'fetch' and resource 'person' are explicit, and the description distinguishes it from sibling tools like fetch_company by specifying the person context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use additional retrieval flags with a performance warning and recommendation to start with basic info. However, it does not compare this tool to alternative sibling tools (e.g., nv_fetch_person, search_people) to help the agent decide when to use fetch_person over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_postA
Open a LinkedIn post and retrieve its data, with optional comments and reactions. (st.openPost action).
| Name | Required | Description | Default |
|---|---|---|---|
| postUrl | Yes | LinkedIn URL of the post. (e.g., 'https://www.linkedin.com/posts/username_activity-id') | |
| retrieveComments | No | Optional. When true, also retrieve comments for the post. Configure via commentsRetrievalConfig. | |
| retrieveReactions | No | Optional. When true, also retrieve reactions for the post. Configure via reactionsRetrievalConfig. | |
| commentsRetrievalConfig | No | Optional. Applies only when retrieveComments is true. Controls comments retrieval (limit, replies, sort). | |
| reactionsRetrievalConfig | No | Optional. Applies only when retrieveReactions is true. Controls reactions retrieval (limit). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'retrieve its data', implying a read operation, but does not disclose potential rate limits, authentication requirements, or any side effects beyond the action name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that includes the key action and optional capabilities. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and moderate complexity (5 params, nested objects), the description is adequate but could mention return format or pagination. However, the schema covers parameters well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are fully described in the schema (100% coverage), so the description adds minimal extra meaning beyond mentioning the action and optional comments/reactions. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Open and retrieve' and the resource 'LinkedIn post data', including optional comments and reactions. It is distinct from siblings like comment_on_post or create_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for retrieving post data, but does not explicitly state when to use it versus alternatives or any exclusions. However, the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_usageB
Retrieve Linked API usage statistics. Date range must not exceed 30 days.
| Name | Required | Description | Default |
|---|---|---|---|
| start | Yes | Start date for the statistics period in ISO 8601 format (e.g., '2024-01-01T00:00:00Z') | |
| end | Yes | End date for the statistics period in ISO 8601 format (e.g., '2024-01-30T00:00:00Z') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden for behavioral disclosure. It only states the tool 'Retrieve's data, implying a read operation, but lacks details on side effects, authorization needs, rate limits, or output format. This is insufficient for understanding operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first states the purpose, the second adds a critical constraint. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers the basic constraint but omits what the returned statistics include (e.g., fields, granularity). Given the lack of output schema and multiple sibling tools, more detail on the output would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for both parameters. The description adds only a 30-day range constraint, which is useful but does not significantly enhance understanding beyond the schema. Baseline is 3 due to high coverage, and no extra meaning is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves 'Linked API usage statistics', providing a specific verb and resource. While it distinguishes from admin-focused sibling tools like 'admin_get_limits_usage' by not mentioning 'admin', it doesn't explicitly differentiate from other statistics tools, so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a constraint ('Date range must not exceed 30 days') but provides no guidance on when to use this tool versus alternatives like 'admin_get_limits_usage' or 'check_connection_status'. There is no mention of prerequisites, typical use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversationB
Allows you to get a conversation with a LinkedIn person using standard LinkedIn messaging.
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | The LinkedIn URL of the person whose conversation you want to poll (e.g., 'https://www.linkedin.com/in/john-doe') | |
| since | No | Optional ISO 8601 timestamp to only retrieve messages since this date (e.g., '2024-01-15T10:30:00Z'). If not provided, the entire conversation history will be returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavior. It only says 'get a conversation' implying read-only, but does not mention side effects (e.g., marking messages as read), authentication needs, or rate limits. The description is too sparse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is easy to parse, no wasted words. Could be slightly improved by adding more details without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description lacks information on return format, error cases, or pagination. For a data retrieval tool, more depth is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – both parameters are well-described in the schema. The description adds no additional meaning beyond the schema, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('get a conversation') and the specific resource ('with a LinkedIn person'), distinguishing it from sibling tools like send_message or check_connection_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as nv_get_conversation or in what context (e.g., must have existing conversation, requires connection). The description lacks usage context and no exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_resultB
CONTINUE LISTENING TO BACKGROUND WORKFLOW - THIS IS NORMAL OPERATION! Background workflows are OPTIMAL BEHAVIOR for Linked API operations and keep the MCP client responsive. When a workflow runs in the background, this tool should be used with the provided workflowId and operationName parameters to continue listening for updates. The workflow continues processing in the background while you wait. This is the STANDARD way Linked API works - background processing provides optimal user experience!
| Name | Required | Description | Default |
|---|---|---|---|
| workflowId | Yes | The workflow ID provided in the background workflow status message | |
| operationName | Yes | Optional function name for proper type restoration (provided in background workflow status if available) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It explains that the tool is for listening and that background processing keeps the client responsive. However, it does not disclose rate limits, timeouts, or failure behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is overly verbose with all-caps emphasis and repeated phrases like 'THIS IS NORMAL OPERATION!' and 'OPTIMAL BEHAVIOR'. It could be more concise while retaining clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description fails to explain what the tool returns or how updates are delivered (e.g., polling vs streaming). This gap reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds context: workflowId comes from a background status message, and operationName is optional for type restoration. This augments the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for continuing to listen to background workflows, with a specific verb ('CONTINUE LISTENING') and resource ('BACKGROUND WORKFLOW'). It distinguishes itself from siblings like execute_custom_workflow by explaining it handles background processing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('when a workflow runs in the background') and provides parameters to use. However, it lacks explicit guidance on when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nv_fetch_companyA
Allows you to open a company page in Sales Navigator to retrieve its basic information (nv.openCompanyPage action). Can optionally retrieve employees and decision makers.
| Name | Required | Description | Default |
|---|---|---|---|
| companyHashedUrl | Yes | Hashed LinkedIn URL of the company. | |
| retrieveEmployees | No | Optional. Whether to retrieve the company's employees information. Default is false. | |
| retrieveDMs | No | Optional. Whether to retrieve the company's decision makers information. Default is false. | |
| employeesRetrievalConfig | No | Optional. Configuration for retrieving employees. Available only if retrieveEmployees is true. | |
| dmsRetrievalConfig | No | Optional. Configuration for retrieving decision makers. Available only if retrieveDMs is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the action (nv.openCompanyPage) and optional retrievals, but lacks details on side effects, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff, front-loaded with the core purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given nested parameters and no output schema, the description is too sparse. It does not explain what 'basic information' includes or the return format, leaving agents underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema, merely summarizing the optional nature of employees and DMs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool opens a Sales Navigator company page and retrieves basic information, with optional employee and decision maker retrieval. It distinguishes from siblings like fetch_company and nv_fetch_person.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Sales Navigator scenarios but does not explicitly guide when to use this tool over alternatives like fetch_company or nv_search_companies, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nv_fetch_personB
Allows you to open a person page in Sales Navigator to retrieve their basic information (nv.openPersonPage action).
| Name | Required | Description | Default |
|---|---|---|---|
| personHashedUrl | Yes | Hashed LinkedIn URL of the person. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only says 'opens a person page' and retrieves 'basic information' without specifying behavioral traits like read-only nature, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, to the point, with no wasted words. Could be slightly more structured but is efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 param, no output schema), the description is adequate but lacks details on the return format or what constitutes 'basic information,' leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description is clear. The tool description adds no extra meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (open person page and retrieve basic information) and the specific resource (Sales Navigator person page), distinguishing it from sibling fetch_person by specifying Sales Navigator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like fetch_person or nv_search_people. Does not mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nv_get_conversationA
Allows you to get a conversation with a LinkedIn person using Sales Navigator messaging.
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | The LinkedIn URL of the person whose conversation you want to poll (e.g., 'https://www.linkedin.com/in/john-doe') | |
| since | No | Optional ISO 8601 timestamp to only retrieve messages since this date (e.g., '2024-01-15T10:30:00Z'). If not provided, the entire conversation history will be returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only says 'get a conversation' implying read-only, but no mention of rate limits, auth needs, error handling, or whether the conversation is created automatically. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 14 words, front-loaded with key action. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations or output schema exist. Description explains what the tool does but does not describe return format, pagination, or error scenarios. Adequate for a simple read operation but lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%. Both parameters have clear descriptions with examples. The tool description adds no additional parameter info, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('get'), resource ('conversation with a LinkedIn person'), and context ('using Sales Navigator messaging'). Distinguishes from sibling like 'get_conversation' (non-Sales Navigator) and 'nv_send_message' (send vs get).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for Sales Navigator conversations, but no explicit when-to-use, when-not, or alternatives among siblings. Agent must infer from name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nv_search_companiesB
Allows you to search for companies in Sales Navigator applying various filtering criteria. (nv.searchCompanies action).
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | Optional. Keyword or phrase to search. | |
| limit | No | Optional. Number of search results to return. Defaults to 25, with a maximum value of 1000. | |
| filter | No | Optional. Object that specifies filtering criteria for companies. When multiple filter fields are specified, they are combined using AND logic. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the search action without disclosing behavioral traits like read-only nature, result limits beyond the schema defaults, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, front-loaded with the purpose, and contains no wasted words. However, it lacks structure such as listing filter types or providing usage hints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is too minimal. It does not explain return format, pagination behavior beyond schema defaults, or any limitations of the search, which is incomplete for a tool with nested filters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains parameters. The description adds no additional meaning beyond 'various filtering criteria', which is redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search', the resource 'companies', and the scope 'in Sales Navigator' with filtering criteria. It distinguishes itself from sibling tools like 'nv_search_people' and 'search_companies'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternatives are mentioned. The description does not help an agent decide between this and similar tools like 'search_companies'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nv_search_peopleB
Allows you to search people in Sales Navigator applying various filtering criteria. (nv.searchPeople action).
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | Optional. Keyword or phrase to search. | |
| limit | No | Optional. Number of search results to return. Defaults to 25, with a maximum value of 2500. | |
| filter | No | Optional. Object that specifies filtering criteria for people. When multiple filter fields are specified, they are combined using AND logic. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the tool allows searching with filters, omitting behavioral traits like read-only nature, authentication requirements, rate limits, or return format. The description adds minimal transparent context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence plus action reference) but lacks detail. It is front-loaded but insufficiently informative for a tool with a nested filter object. Could be improved with brief usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, nested filter with multiple fields) and no output schema, the description is incomplete. It does not mention pagination, response format, or any limitations. The schema provides parameter details but behavioral and output context are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters (term, limit, filter) are fully described in the input schema (100% coverage). The description adds no additional meaning, such as clarifying the term as keyword search or the AND logic for filters, which is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'search' and resource 'people in Sales Navigator', distinguishing it from sibling tools like nv_search_companies and the non-nv search_people. The action reference (nv.searchPeople) reinforces the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is for Sales Navigator people searches but does not explicitly state when to use this over alternatives like search_people or nv_search_companies. No when-not-to guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nv_send_messageB
Allows you to send a message to a person in Sales Navigator (nv.sendMessage action)
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | LinkedIn URL of the person you want to send a message to (e.g., 'https://www.linkedin.com/in/john-doe') | |
| text | Yes | The message text, must be up to 1900 characters. | |
| subject | Yes | Subject line, must be up to 80 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose any behavioral traits such as authentication requirements, rate limits, or side effects. It only states the action, leaving the agent uninformed about important behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the core purpose. It is concise, though it could include more detail without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 required params, no output schema, no annotations), the description is too minimal. It omits crucial context such as prerequisites, success/failure behavior, or any constraints beyond character limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter (personUrl, text, subject). The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('send a message') and the resource ('a person in Sales Navigator'), effectively distinguishing it from the generic sibling tool 'send_message' by specifying the Sales Navigator context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'send_message' or other messaging-related tools. The description lacks context for when to choose it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
react_to_postB
Allows you to react to a post using any available reaction type (st.reactToPost action).
| Name | Required | Description | Default |
|---|---|---|---|
| postUrl | Yes | LinkedIn URL of the post to react. (e.g., 'https://www.linkedin.com/posts/username_activity-id') | |
| type | Yes | Enum describing the reaction type. | |
| companyUrl | No | LinkedIn company page URL. If specified, the reaction will be added on behalf of the company. (e.g., 'https://www.linkedin.com/company/acme-corp') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It does not disclose that this is a mutating action (it implies modification but no explicit statement of side effects), nor does it mention authentication needs, rate limits, or what happens to the post.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the purpose. It wastes no words, though it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and the mutating nature of the tool, the description is too sparse. It fails to explain return values, error handling, or behavioral context needed for reliable selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with clear descriptions for all parameters. The description adds no extra semantic value beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (react) and the resource (post), and distinguishes from sibling tools like comment_on_post or create_post by focusing on reactions. It also mentions that multiple reaction types are available.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no context about when not to use it. It simply states the action without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_connectionB
Allows you to remove a person from your connections (st.removeConnection action).
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | Public or hashed LinkedIn URL of the person you want to remove from your connections. (e.g., 'https://www.linkedin.com/in/john-doe') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits beyond the basic action. Since no annotations are provided, the description carries the full burden of transparency. It lacks details on destructiveness, authentication requirements, rate limits, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the core functionality without any unnecessary words. It is front-loaded and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description provides the minimum viable context. However, it lacks behavioral details (e.g., success/error outcomes, side effects) that would make it more complete. With no annotations to supplement, it falls short.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single parameter (personUrl) with a clear description. The tool description adds no extra semantic information beyond what the schema provides. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to remove a person from your connections. It specifies the underlying action (st.removeConnection) and implicitly differentiates from sibling tools like withdraw_connection_request which deals with pending requests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., withdraw_connection_request). There are no prerequisites or exclusions mentioned, leaving the agent to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_connectionsC
allows you to retrieve your connections and perform additional person-related actions if needed (st.retrieveConnections action).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional. Number of connections to return. Defaults to 10, with a maximum value of 1000. | |
| since | No | Optional. ISO date string that filters connections to only include those made on or after the specified date. Only works when filter is not provided. | |
| filter | No | Optional. Object that specifies filtering criteria for people. When multiple filter fields are specified, they are combined using AND logic. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral aspects. It mentions retrieval, but does not clarify side effects (none expected), rate limits, or the ambiguous 'additional person-related actions'. The parenthetical internal action name adds no value for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short at one sentence, which is concise. However, the inclusion of the parenthetical '(st.retrieveConnections action)' is unnecessary and slightly disrupts readability. It could be removed for better structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a nested filter object and no output schema, yet the description does not explain what the response contains (e.g., list of connection objects). It also does not elaborate on the 'additional person-related actions', leaving gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema already explains parameters like limit, since, and filter. The description adds no extra meaning, merely restating the purpose. A baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves your connections, which is the core purpose. However, it does not differentiate from sibling tools like check_connection_status or remove_connection, and the phrase 'perform additional person-related actions if needed' is vague and lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like search_people or retrieve_pending_requests. The description simply states what it does without any when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_pending_requestsA
Allows you to retrieve pending connection requests sent from your account. (st.retrievePendingRequests action).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits beyond the basic purpose. It fails to mention that the operation is read-only or any other relevant behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words, plus the action name in parentheses for further clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is adequate for a simple retrieval tool, but it could be more complete by noting it returns a list or is read-only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so the description does not need to add parameter info. The baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and the resource 'pending connection requests', with scope 'sent from your account'. It distinguishes from siblings like 'retrieve_connections' and 'withdraw_connection_request'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'retrieve_connections' or 'check_connection_status'. It lacks contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_performanceB
Allows you to retrieve performance analytics from your LinkedIn dashboard (st.retrievePerformance action).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It only states retrieval, implying read-only, but does not explicitly disclose permissions, rate limits, or whether the action is destructive. The lack of detail fails to adequately inform the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and contains no redundant information. It is efficient for the purpose, but could benefit from slightly more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and zero parameters, the description should explain what performance analytics entail (e.g., metrics, time ranges). It fails to provide this context, leaving the agent unaware of what the tool returns. For a simple retrieval, it is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% coverage. The description adds no parameter information, which is acceptable since there are none. Following the baseline rule for 0 parameters, a score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'performance analytics from your LinkedIn dashboard', which is a specific verb+resource. It differentiates from sibling tools like retrieve_connections or retrieve_ssi. However, it does not specify what kind of performance (e.g., post, account), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives. No when-not conditions or exclusions are mentioned. The agent must infer usage solely from the tool name and description, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve_ssiB
Allows you to retrieve your current SSI (Social Selling Index) (st.retrieveSSI action).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It indicates a read operation, but fails to mention data freshness, authentication needs, or any constraints. Adequate for a simple retrieval but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff. Extremely concise and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description does not explain what the returned SSI value looks like. While the task is simple, the omission of output details reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in the schema, and description coverage is 100%. The description adds no parameter semantics, but given zero parameters, it is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly indicates the tool retrieves the user's current SSI score. It uses a specific verb and resource, but does not differentiate from similar tools like retrieve_performance or retrieve_connections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any conditions or exclusions. The description does not provide context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesC
Allows you to search for companies applying various filtering criteria (st.searchCompanies action).
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | Optional. Keyword or phrase to search. | |
| limit | No | Optional. Number of search results to return. Defaults to 10, with a maximum value of 1000. | |
| filter | No | Optional. Object that specifies filtering criteria for companies. When multiple filter fields are specified, they are combined using AND logic. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden, but it merely restates the search action. It omits behavioral traits such as mutability, authorization needs, rate limits, or return structure, providing minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with the main action front-loaded. The parenthetical action name is slightly redundant but does not hinder clarity. It is efficient and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nested filter parameter and lack of output schema, the description should clarify return format, pagination, or behavior when no results are found. It fails to provide these essential details, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds 'various filtering criteria' but does not elaborate beyond what the schema already documents. No extra semantic value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for companies with filtering criteria, using a specific verb and resource. However, it does not differentiate from sibling tools like 'nv_search_companies', which likely have similar behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search_people' or 'nv_search_companies'. There is no mention of prerequisites, exclusions, or context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_peopleC
Allows you to search people applying various filtering criteria (st.searchPeople action).
| Name | Required | Description | Default |
|---|---|---|---|
| term | No | Optional. Keyword or phrase to search. | |
| limit | No | Optional. Number of search results to return. Defaults to 10, with a maximum value of 1000. | |
| filter | No | Optional. Object that specifies filtering criteria for people. When multiple filter fields are specified, they are combined using AND logic. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure burden. It only states the action without detailing rate limits, pagination, default behavior (e.g., whether term is required), or result structure. This leaves significant gaps for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded with action and resource. However, it lacks structure like usage examples or breakdown, but it is efficiently short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complex tool with optional parameters (3 top-level, nested object with 8 fields). No output schema, so agent cannot infer return shape. Description does not explain default behavior when no parameters provided or how to combine term and filter. Incomplete for safe autonomous invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds 'applying various filtering criteria' which hints at the filter object, but doesn't clarify nuances beyond what the schema already provides (e.g., AND logic is in schema). No additional semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'search' and resource 'people', and mentions filtering criteria. It distinguishes from 'fetch_person' (single) but not from sibling 'nv_search_people', which has identical name. However, the base purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives like 'nv_search_people', 'fetch_person', or 'retrieve_connections'. Missing context for optimal selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_connection_requestC
Allows you to send a connection request to a person (st.sendConnectionRequest action).
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | Public or hashed LinkedIn URL of the person you want to send a connection request to. (e.g., 'https://www.linkedin.com/in/john-doe') | |
| note | No | Optional. Note to include with the connection request. | |
| No | Optional. Email address required by some people for sending connection requests to them. If it is required and not provided, the connection request will fail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'send a connection request' without disclosing behavioral traits like side effects, notifications, rate limits, or failure conditions. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. However, it includes a redundant internal action reference 'st.sendConnectionRequest action' that adds no value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 parameters, the description is too minimal. It lacks information about the response format, error handling, or how this tool fits among many siblings. The agent would need additional context to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning to parameters beyond what the schema already provides. It does not explain the optional note's impact or the email requirement context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a connection request to a person, using a specific verb and resource. It differentiates from sibling tools like withdraw_connection_request. However, it could be more explicit about the platform (LinkedIn) and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no usage guidance. It does not indicate when to use this tool versus alternatives like check_connection_status or send_message. No prerequisites or contexts are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageC
Allows you to send a message to a person (st.sendMessage action).
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | LinkedIn URL of the person you want to send a message to (e.g., 'https://www.linkedin.com/in/john-doe') | |
| text | Yes | The message text, must be up to 1900 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior. It only repeats the action without mentioning side effects, authentication needs, or whether it opens a new conversation or replies to an existing one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but lacks important structural information like parameter groupings or use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of a very similar sibling tool 'nv_send_message' and no output schema, the description fails to provide differentiating context or explain the outcome of sending a message.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented. However, the description adds no additional meaning beyond the schema (e.g., constraints on message context or formatting).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (sending a message) and the target (a person), but does not differentiate from the sibling tool 'nv_send_message' with a very similar name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'nv_send_message' or when not to use it. Missing any context about prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withdraw_connection_requestB
Allows you to withdraw the connection request sent to a person (st.withdrawConnectionRequest action).
| Name | Required | Description | Default |
|---|---|---|---|
| personUrl | Yes | Public or hashed LinkedIn URL of the person you want to withdraw the connection request from. (e.g., 'https://www.linkedin.com/in/john-doe') | |
| unfollow | No | Optional. Boolean indicating whether you want to unfollow the person when withdrawing the request. The default value is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like side effects or permissions, but it only restates the action. Missing details on whether the sender is notified or if there are rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no wasted words. However, it is slightly under-specified for a tool without annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 params, no output schema), the description barely covers the basic purpose. Lacks usage guidance and behavioral transparency, making it barely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the schema already explains both parameters. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'withdraw' and the resource 'connection request sent to a person', distinguishing it from sibling tools like send_connection_request and remove_connection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives are provided. The description assumes the agent knows when to withdraw a request, and there is no comparison with similar sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
16 tool updates
v0.3.4- Added
admin_connect_account - Added
admin_disconnect_account - Added
admin_get_accounts - Added
admin_get_limits_usage - Added
admin_get_seats - Added
admin_get_subscription_status - Added
admin_regenerate_token - Added
admin_reset_limits - Added
admin_set_limits - Added
admin_set_seats - Changed
comment_on_post1 field changed- added
Input schema / properties / companyUrlAdded value: +{ + "description": "LinkedIn company page URL. If specified, the comment will be added on behalf of the company. (e.g., 'https://www.linkedin.com/company/acme-corp')", + "type": "string" +}
- Changed
fetch_company6 fields changed- removed
Input schema / properties / dmRetrievalConfigRemoved value: -{ - "description": "Optional. Configuration for retrieving decision makers. Available only if retrieveDMs is true.", - "properties": { - "limit": { - "description": "Optional. Number of decision makers to retrieve. Defaults to 20, with a maximum value of 20. If a company has fewer decision makers than specified, only the available ones will be returned.", - "type": "number" - } - }, - "type": "object" -} - added
Input schema / properties / dmsRetrievalConfigAdded value: +{ + "description": "Optional. Configuration for retrieving decision makers. Available only if retrieveDMs is true.", + "properties": { + "limit": { + "description": "Optional. Number of decision makers to retrieve. Defaults to 20, with a maximum value of 20. If a company has fewer decision makers than specified, only the available ones will be returned.", + "type": "number" + } + }, + "type": "object" +} - removed
Input schema / properties / employeeRetrievalConfigRemoved value: -{ - "description": "Optional. Configuration for retrieving employees. Available only if retrieveEmployees is true.", - "properties": { - "filter": { - "description": "Optional. Object that specifies filtering criteria for employees. When multiple filter fields are specified, they are combined using AND logic.", - "properties": { - "firstName": { - "description": "Optional. First name of employee.", - "type": "string" - }, - "industries": { - "description": "Optional. Array of enums representing industries. Matches if employee works in any of the listed industries. Takes specific values available in the LinkedIn interface.", - "items": { - "type": "string" - }, - "type": "array" - }, - "lastName": { - "description": "Optional. Last name of employee.", - "type": "string" - }, - "locations": { - "description": "Optional. Array of free-form strings representing locations. Matches if employee is located in any of the listed locations.", - "items": { - "type": "string" - }, - "type": "array" - }, - "position": { - "description": "Optional. Job position of employee.", - "type": "string" - }, - "schools": { - "description": "Optional. Array of institution names. Matches if employee currently attends or previously attended any of the listed institutions.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "limit": { - "description": "Optional. Maximum number of employees to retrieve. Defaults to 500, with a maximum value of 500.", - "type": "number" - } - }, - "type": "object" -} - added
Input schema / properties / employeesRetrievalConfigAdded value: +{ + "description": "Optional. Configuration for retrieving employees. Available only if retrieveEmployees is true.", + "properties": { + "filter": { + "description": "Optional. Object that specifies filtering criteria for employees. When multiple filter fields are specified, they are combined using AND logic.", + "properties": { + "firstName": { + "description": "Optional. First name of employee.", + "type": "string" + }, + "industries": { + "description": "Optional. Array of enums representing industries. Matches if employee works in any of the listed industries. Takes specific values available in the LinkedIn interface.", + "items": { + "type": "string" + }, + "type": "array" + }, + "lastName": { + "description": "Optional. Last name of employee.", + "type": "string" + }, + "locations": { + "description": "Optional. Array of free-form strings representing locations. Matches if employee is located in any of the listed locations.", + "items": { + "type": "string" + }, + "type": "array" + }, + "position": { + "description": "Optional. Job position of employee.", + "type": "string" + }, + "schools": { + "description": "Optional. Array of institution names. Matches if employee currently attends or previously attended any of the listed institutions.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "limit": { + "description": "Optional. Maximum number of employees to retrieve. Defaults to 500, with a maximum value of 500.", + "type": "number" + } + }, + "type": "object" +} - removed
Input schema / properties / postRetrievalConfigRemoved value: -{ - "description": "Optional. Configuration for retrieving posts. Available only if retrievePosts is true.", - "properties": { - "limit": { - "description": "Optional. Number of posts to retrieve. Defaults to 20, with a maximum value of 20.", - "type": "number" - }, - "since": { - "description": "Optional. ISO 8601 timestamp to filter posts published after the specified time.", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / properties / postsRetrievalConfigAdded value: +{ + "description": "Optional. Configuration for retrieving posts. Available only if retrievePosts is true.", + "properties": { + "limit": { + "description": "Optional. Number of posts to retrieve. Defaults to 20, with a maximum value of 20.", + "type": "number" + }, + "since": { + "description": "Optional. ISO 8601 timestamp to filter posts published after the specified time.", + "type": "string" + } + }, + "type": "object" +}
- Changed
fetch_person4 fields changed- removed
Input schema / properties / commentRetrievalConfigRemoved value: -{ - "description": "Optional. Configuration for retrieving comments. Available only if retrieveComments is true.", - "properties": { - "limit": { - "description": "Optional. Number of comments to retrieve. Defaults to 20, with a maximum value of 20.", - "type": "number" - }, - "since": { - "description": "Optional. ISO 8601 timestamp to filter comments made after the specified time.", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / properties / commentsRetrievalConfigAdded value: +{ + "description": "Optional. Configuration for retrieving comments. Available only if retrieveComments is true.", + "properties": { + "limit": { + "description": "Optional. Number of comments to retrieve. Defaults to 20, with a maximum value of 20.", + "type": "number" + }, + "since": { + "description": "Optional. ISO 8601 timestamp to filter comments made after the specified time.", + "type": "string" + } + }, + "type": "object" +} - removed
Input schema / properties / reactionRetrievalConfigRemoved value: -{ - "description": "Optional. Configuration for retrieving reactions. Available only if retrieveReactions is true.", - "properties": { - "limit": { - "description": "Optional. Number of reactions to retrieve. Defaults to 20, with a maximum value of 20.", - "type": "number" - }, - "since": { - "description": "Optional. ISO 8601 timestamp to filter reactions made after the specified time.", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / properties / reactionsRetrievalConfigAdded value: +{ + "description": "Optional. Configuration for retrieving reactions. Available only if retrieveReactions is true.", + "properties": { + "limit": { + "description": "Optional. Number of reactions to retrieve. Defaults to 20, with a maximum value of 20.", + "type": "number" + }, + "since": { + "description": "Optional. ISO 8601 timestamp to filter reactions made after the specified time.", + "type": "string" + } + }, + "type": "object" +}
- Changed
nv_fetch_company4 fields changed- removed
Input schema / properties / dmRetrievalConfigRemoved value: -{ - "description": "Optional. Configuration for retrieving decision makers. Available only if retrieveDMs is true.", - "properties": { - "limit": { - "description": "Optional. Number of decision makers to retrieve. Defaults to 20, with a maximum value of 20. If a company has fewer decision makers than specified, only the available ones will be returned.", - "type": "number" - } - }, - "type": "object" -} - added
Input schema / properties / dmsRetrievalConfigAdded value: +{ + "description": "Optional. Configuration for retrieving decision makers. Available only if retrieveDMs is true.", + "properties": { + "limit": { + "description": "Optional. Number of decision makers to retrieve. Defaults to 20, with a maximum value of 20. If a company has fewer decision makers than specified, only the available ones will be returned.", + "type": "number" + } + }, + "type": "object" +} - removed
Input schema / properties / employeeRetrievalConfigRemoved value: -{ - "description": "Optional. Configuration for retrieving employees. Available only if retrieveEmployees is true.", - "properties": { - "filter": { - "description": "Optional. Object that specifies filtering criteria for employees. When multiple filter fields are specified, they are combined using AND logic.", - "properties": { - "firstName": { - "description": "Optional. First name of employee.", - "type": "string" - }, - "industries": { - "description": "Optional. Array of enums representing industries. Matches if employee works in any of the listed industries. Takes specific values available in the LinkedIn interface.", - "items": { - "type": "string" - }, - "type": "array" - }, - "lastName": { - "description": "Optional. Last name of employee.", - "type": "string" - }, - "locations": { - "description": "Optional. Array of free-form strings representing locations. Matches if employee is located in any of the listed locations.", - "items": { - "type": "string" - }, - "type": "array" - }, - "positions": { - "description": "Optional. Array of job position names. Matches if employee's current position is any of the listed options.", - "items": { - "type": "string" - }, - "type": "array" - }, - "schools": { - "description": "Optional. Array of institution names. Matches if employee currently attends or previously attended any of the listed institutions.", - "items": { - "type": "string" - }, - "type": "array" - }, - "yearsOfExperiences": { - "description": "Optional. Array of enums representing professional experience. Matches if employee's experience falls within any of the listed ranges.", - "items": { - "enum": [ - "lessThanOne", - "oneToTwo", - "threeToFive", - "sixToTen", - "moreThanTen" - ], - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "limit": { - "description": "Optional. Maximum number of employees to retrieve. Defaults to 500, with a maximum value of 500.", - "type": "number" - } - }, - "type": "object" -} - added
Input schema / properties / employeesRetrievalConfigAdded value: +{ + "description": "Optional. Configuration for retrieving employees. Available only if retrieveEmployees is true.", + "properties": { + "filter": { + "description": "Optional. Object that specifies filtering criteria for employees. When multiple filter fields are specified, they are combined using AND logic.", + "properties": { + "firstName": { + "description": "Optional. First name of employee.", + "type": "string" + }, + "industries": { + "description": "Optional. Array of enums representing industries. Matches if employee works in any of the listed industries. Takes specific values available in the LinkedIn interface.", + "items": { + "type": "string" + }, + "type": "array" + }, + "lastName": { + "description": "Optional. Last name of employee.", + "type": "string" + }, + "locations": { + "description": "Optional. Array of free-form strings representing locations. Matches if employee is located in any of the listed locations.", + "items": { + "type": "string" + }, + "type": "array" + }, + "positions": { + "description": "Optional. Array of job position names. Matches if employee's current position is any of the listed options.", + "items": { + "type": "string" + }, + "type": "array" + }, + "schools": { + "description": "Optional. Array of institution names. Matches if employee currently attends or previously attended any of the listed institutions.", + "items": { + "type": "string" + }, + "type": "array" + }, + "yearsOfExperiences": { + "description": "Optional. Array of enums representing professional experience. Matches if employee's experience falls within any of the listed ranges.", + "items": { + "enum": [ + "lessThanOne", + "oneToTwo", + "threeToFive", + "sixToTen", + "moreThanTen" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "limit": { + "description": "Optional. Maximum number of employees to retrieve. Defaults to 500, with a maximum value of 500.", + "type": "number" + } + }, + "type": "object" +}
- Changed
react_to_post1 field changed- added
Input schema / properties / companyUrlAdded value: +{ + "description": "LinkedIn company page URL. If specified, the reaction will be added on behalf of the company. (e.g., 'https://www.linkedin.com/company/acme-corp')", + "type": "string" +}
- Changed
retrieve_connections1 field changed- added
Input schema / properties / sinceAdded value: +{ + "description": "Optional. ISO date string that filters connections to only include those made on or after the specified date. Only works when filter is not provided.", + "type": "string" +}
18 tool updates
v1.0.0- Added
create_post - Changed
fetch_company3 fields changed- added
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / industries / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / locations / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / schools / itemsAdded value: +{ + "type": "string" +}
- Changed
fetch_post4 fields changed- added
Input schema / properties / commentsRetrievalConfigAdded value: +{ + "description": "Optional. Applies only when retrieveComments is true. Controls comments retrieval (limit, replies, sort).", + "properties": { + "limit": { + "description": "Optional. Max number of comments to retrieve. Defaults to 10, with a maximum value of 500.", + "type": "number" + }, + "replies": { + "description": "Optional. When true, include replies to comments (threaded).", + "type": "boolean" + }, + "sort": { + "description": "Optional. Sort order for comments. One of 'mostRelevant' or 'mostRecent'.", + "enum": [ + "mostRelevant", + "mostRecent" + ], + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / reactionsRetrievalConfigAdded value: +{ + "description": "Optional. Applies only when retrieveReactions is true. Controls reactions retrieval (limit).", + "properties": { + "limit": { + "description": "Optional. Max number of reactions to retrieve. Defaults to 10, with a maximum value of 1000.", + "type": "number" + } + }, + "type": "object" +} - added
Input schema / properties / retrieveCommentsAdded value: +{ + "description": "Optional. When true, also retrieve comments for the post. Configure via commentsRetrievalConfig.", + "type": "boolean" +} - added
Input schema / properties / retrieveReactionsAdded value: +{ + "description": "Optional. When true, also retrieve reactions for the post. Configure via reactionsRetrievalConfig.", + "type": "boolean" +}
- Added
get_api_usage - Removed
get_api_usage_stats - Added
get_conversation - Changed
get_workflow_result3 fields changed- added
Input schema / properties / operationNameAdded value: +{ + "description": "Optional function name for proper type restoration (provided in background workflow status if available)", + "type": "string" +} - added
Input schema / properties / workflowId / descriptionAdded value: +"The workflow ID provided in the background workflow status message" - changed
Input schema / requiredPrevious value: -[ - "workflowId" -]New value: +[ + "workflowId", + "operationName" +]
- Changed
nv_fetch_company6 fields changed- added
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / industries / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / locations / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / positions / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / schools / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / yearsOfExperiences / enumRemoved value: -[ - "lessThanOne", - "oneToTwo", - "threeToFive", - "sixToTen", - "moreThanTen" -] - added
Input schema / properties / employeeRetrievalConfig / properties / filter / properties / yearsOfExperiences / itemsAdded value: +{ + "enum": [ + "lessThanOne", + "oneToTwo", + "threeToFive", + "sixToTen", + "moreThanTen" + ], + "type": "string" +}
- Added
nv_get_conversation - Changed
nv_search_companies5 fields changed- added
Input schema / properties / filter / properties / industries / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / locations / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / filter / properties / sizes / enumRemoved value: -[ - "1-10", - "11-50", - "51-200", - "201-500", - "501-1000", - "1001-5000", - "5001-10000", - "10001+" -] - added
Input schema / properties / filter / properties / sizes / itemsAdded value: +{ + "enum": [ + "1-10", + "11-50", + "51-200", + "201-500", + "501-1000", + "1001-5000", + "5001-10000", + "10001+" + ], + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Optional. Number of search results to return. Defaults to 10, with a maximum value of 100."New value: +"Optional. Number of search results to return. Defaults to 25, with a maximum value of 1000."
- Changed
nv_search_people8 fields changed- added
Input schema / properties / filter / properties / currentCompanies / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / industries / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / locations / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / previousCompanies / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / schools / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / filter / properties / yearsOfExperiences / enumRemoved value: -[ - "lessThanOne", - "oneToTwo", - "threeToFive", - "sixToTen", - "moreThanTen" -] - added
Input schema / properties / filter / properties / yearsOfExperiences / itemsAdded value: +{ + "enum": [ + "lessThanOne", + "oneToTwo", + "threeToFive", + "sixToTen", + "moreThanTen" + ], + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Optional. Number of search results to return. Defaults to 10, with a maximum value of 100."New value: +"Optional. Number of search results to return. Defaults to 25, with a maximum value of 2500."
- Removed
nv_sync_conversation - Removed
poll_conversations - Removed
restore_workflow - Changed
retrieve_connections6 fields changed- added
Input schema / properties / filter / properties / currentCompanies / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / industries / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / locations / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / previousCompanies / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / schools / itemsAdded value: +{ + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Optional. Number of connections to return. Defaults to 500, with a maximum value of 1000."New value: +"Optional. Number of connections to return. Defaults to 10, with a maximum value of 1000."
- Changed
search_companies5 fields changed- added
Input schema / properties / filter / properties / industries / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / locations / itemsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / filter / properties / sizes / enumRemoved value: -[ - "1-10", - "11-50", - "51-200", - "201-500", - "501-1000", - "1001-5000", - "5001-10000", - "10001+" -] - added
Input schema / properties / filter / properties / sizes / itemsAdded value: +{ + "enum": [ + "1-10", + "11-50", + "51-200", + "201-500", + "501-1000", + "1001-5000", + "5001-10000", + "10001+" + ], + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Optional. Number of search results to return. Defaults to 10, with a maximum value of 100."New value: +"Optional. Number of search results to return. Defaults to 10, with a maximum value of 1000."
- Changed
search_people7 fields changed- changed
Input schema / properties / filter / descriptionPrevious value: -"Optional. Object that specifi es filtering criteria for people. When multiple filter fields are specified, they are combined using AND logic."New value: +"Optional. Object that specifies filtering criteria for people. When multiple filter fields are specified, they are combined using AND logic." - added
Input schema / properties / filter / properties / currentCompanies / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / industries / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / locations / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / previousCompanies / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / filter / properties / schools / itemsAdded value: +{ + "type": "string" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Optional. Number of search results to return. Defaults to 10, with a maximum value of 100."New value: +"Optional. Number of search results to return. Defaults to 10, with a maximum value of 1000."
- Removed
sync_conversation
28 tool updates
- First observed
check_connection_status - First observed
comment_on_post - First observed
execute_custom_workflow - First observed
fetch_company - First observed
fetch_person - First observed
fetch_post - First observed
get_api_usage_stats - First observed
get_workflow_result - First observed
nv_fetch_company - First observed
nv_fetch_person - First observed
nv_search_companies - First observed
nv_search_people - First observed
nv_send_message - First observed
nv_sync_conversation - First observed
poll_conversations - First observed
react_to_post - First observed
remove_connection - First observed
restore_workflow - First observed
retrieve_connections - First observed
retrieve_pending_requests - First observed
retrieve_performance - First observed
retrieve_ssi - First observed
search_companies - First observed
search_people - First observed
send_connection_request - First observed
send_message - First observed
sync_conversation - First observed
withdraw_connection_request
TDQS
Each tool targets a distinct action or domain (admin, standard LinkedIn, Sales Navigator) with clear descriptions. Overlapping functions like fetch_person vs nv_fetch_person are disambiguated by the platform context.
Tool names follow a consistent snake_case pattern with prefixes (admin_, nv_) to indicate scope, and plain verbs for standard LinkedIn. This pattern is predictable and aids tool selection.
With 37 tools, the count exceeds the 25+ threshold, making it feel heavy. While the server aims to cover LinkedIn comprehensively, a more modular split (e.g., separate admin, standard, and Sales Navigator servers) could improve coherence.
Covers most core LinkedIn actions (posts, messages, connections, search, admin) but lacks explicit tools for accepting connection requests or managing groups, leaving minor gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
- LinkMCPOAuthio.linkmcp
Hosted MCP server for LinkedIn: 31 tools for profiles, search, messaging, posts, enrichment.
LinkedIn outreach MCP server — 19 tools for AI agents to prospect, sequence, and manage contacts.
Related MCP Servers
- AlicenseAqualityAmaintenanceSelf-hosted, ban-safe MCP server for LinkedIn that provides 22 tools for profiles, search, jobs, posts, connections, and messages. Integrates with any MCP-compatible client like Claude Desktop.581MIT
- AlicenseNot gradedqualityCmaintenanceAI-powered LinkedIn automation server for content generation, profile/company data extraction, and connection request automation, integrating with MCP clients like Claude Desktop.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for AI-native LinkedIn prospecting. It enables lead research, audience building, conversation management, and controlled outreach actions such as messaging and publishing through an OAuth-protected remote endpoint.2MIT
- AlicenseAqualityBmaintenanceAn MCP server that lets AI assistants like Claude read LinkedIn data through your own logged-in browser session. Access profiles and companies, search for jobs, or get job details.19Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Linked-API/linkedapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server