gtm-api: LinkedIn MCP Server
Server Details
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
- Status
- Healthy
- Uptime
- 16.5% over 83 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- gtm-api/linkedin-mcp
- GitHub Stars
- 68
- Server Listing
- gtm-api: LinkedIn MCP Server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
The three tools form a clear discovery→inspect→invoke chain: list_toolsets finds domains, get_toolset_tools enumerates tools within one, and call_tool runs one. The two listing tools are the only mild overlap, but their descriptions and the required toolset argument make the boundary clear.
All names are snake_case with a verb-first pattern (list_, get_, call_) and consistent use of the 'tool/toolset' nouns. 'get_toolset_tools' is slightly clunky (singular toolset, plural tools) but the convention is still predictable.
Three tools is lean for a server, but appropriate for a meta-gateway whose real surface lives in dynamically discovered toolsets. Each tool earns its place in the discovery/invocation loop, with nothing redundant.
The set covers the full meta-workflow: enumerate domains, enumerate tools with optional verbose schemas, and invoke with arguments including the multi-step preview/confirm flow and team_sid override. Minor gaps like batch/search across toolsets exist but agents can work around them by iterating.
Available Tools
3 toolscall_toolAInspect
Invoke a tool by name (discovered via get_toolset_tools) with its arguments object. Behaves exactly like calling the tool on its domain mount. Dangerous tools still require the two-step preview→confirm (pass commit_token inside arguments on the confirm call). To act in another of your teams, set the top-level team_sid: the edge swaps the token for that team (the OAuth grant must cover it); every response echoes the team it ran in as meta.team_sid.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact tool name. | |
| _meta | No | ||
| team_sid | No | Run this call in another of your teams. The edge exchanges the request token for a sibling installation token (RFC 8693); the OAuth grant must cover that team and you must be a live member. Omit to act in the token team (see meta.team_sid on any response). | |
| arguments | No | The tool's arguments object. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: the preview tick confirm guard for dangerous tools, the RFC 8693 token swap when team_sid is set, the requirement that the OAuth grant covers the target team and that the caller be a live member, and the meta.team_sid echo on every response. None of this is recoverable from readOnlyHint/idempotentHint alone.
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?
Three sentences, front-loaded with the core action and then the two exceptional paths (confirm flow, cross-team). It is dense and every clause carries information, though the final team_sid sentence is long enough that a reader must parse it carefully.
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 polymorphic dispatcher with no output schema, the description covers dispatch, the confirmation handshake, and cross-team auth, plus one concrete return detail (meta.team_sid). It does not describe error/denial behavior or how results of the invoked tool are surfaced, which is the remaining gap.
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 75%, and the description still adds real meaning: it explains where `name` must come from, that commit_token rides inside `arguments` on the confirm call, and the full semantics and preconditions of `team_sid` (token exchange, grant coverage, live membership, omit-for-default). Only `_meta.user_goal` is left to the schema, which documents it adequately.
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?
States a specific verb and resource ('Invoke a tool by name') and immediately scopes it with the discovery prerequisite ('discovered via get_toolset_tools'), which cleanly separates it from both siblings. An agent can tell this is the dispatch/execution tool, not the discovery or listing tool, without opening a schema.
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?
Gives a clear entry condition (name must come from get_toolset_tools) and the special flow for dangerous tools (two-step preview tick confirm with commit_token inside arguments). It also routes the cross-team case to team_sid. It never states when *not* to use it, but the prerequisites are explicit enough that an agent will not misfire.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_toolset_toolsARead-onlyIdempotentInspect
List the tools in a toolset. Default (lite) returns name + title + one-line summary; pass verbose:true for full descriptions, safety flags, and parameter names. Run one via call_tool.
| Name | Required | Description | Default |
|---|---|---|---|
| _meta | No | ||
| toolset | Yes | Toolset id from list_toolsets, e.g. "linkedin.messaging". | |
| verbose | No | Include full descriptions + parameter names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description still adds real value by specifying that the default response is a truncated (lite) view and what verbose mode expands to include, which is behavior an agent cannot infer from annotations.
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?
Three short sentences, front-loaded with the core action, followed by the mode distinction and the handoff to call_tool. No filler and every sentence carries 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?
With no output schema, the description correctly takes on the burden of describing return shape for both modes, which it does well. It omits any mention of toolset size limits or pagination, a minor gap for a listing 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?
Schema coverage is 67%, so the schema covers most of the surface, and the description adds meaning beyond it: it defines the default state of verbose (false/lite) and enumerates what verbose reveals, including "safety flags" not mentioned in the schema text. The toolset parameter's origin is only implied, hence not a 5.
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 specific verb and resource ("List the tools in a toolset") and immediately disambiguates output modes. It also distinguishes itself from the sibling it would be confused with ("Run one via call_tool"), so an agent knows this enumerates rather than executes.
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?
It gives clear operating context: use the default lite mode for a quick scan, pass verbose:true when full descriptions/parameter names are needed, and use call_tool to actually invoke a listed tool. It does not explicitly name list_toolsets as the prerequisite for obtaining a toolset id, but the routing guidance is otherwise strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_toolsetsARead-onlyIdempotentInspect
List the available toolsets (domains) on this server. Each toolset groups related tools (e.g. linkedin.messaging, id.billing). Start here, then get_toolset_tools to inspect one, then call_tool to run a tool. Requires OAuth authorization (Bearer token).
| Name | Required | Description | Default |
|---|---|---|---|
| _meta | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds a genuinely useful behavioral fact beyond them: the call 'Requires OAuth authorization (Bearer token)', which signals an auth failure mode agents must handle. It stops short of describing the shape or size of the returned list.
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?
Four short sentences, each with a distinct job: what the tool is, what a toolset contains, the workflow, and the auth prerequisite. The core purpose is front-loaded with zero filler.
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-argument, read-only listing tool with no output schema, the description covers purpose, sequencing, and the auth requirement — enough to call it correctly. Only the return shape (names only vs. names plus descriptions) is left unstated, a minor gap.
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's single parameter (_meta.user_goal) is an optional, client-side analytics field that does not affect tool behavior, and the description says nothing about parameters — it does not compensate for the reported 0% coverage. Since that lone param is inert metadata and cannot be misused, the omission is low-impact rather than harmful, warranting a baseline 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?
States a specific verb+resource ('List the available toolsets (domains) on this server') and clarifies the concept with concrete examples ('linkedin.messaging, id.billing'). It also distinguishes itself from siblings by placing itself first in the workflow, so an agent can tell it apart from get_toolset_tools and call_tool immediately.
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?
Explicitly prescribes the call order: 'Start here, then get_toolset_tools to inspect one, then call_tool to run a tool.' This names both alternatives and the condition under which each is used, leaving nothing to inference.
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.
3 tool updates
- First observed
call_tool - First observed
get_toolset_tools - First observed
list_toolsets
Related MCP Connectors
A hosted LinkedIn MCP server for your own account. Paste one address into Claude, ChatGPT, Cursor or n8n to read your inbox, send messages and invitations, and search people. Free to start. Not made by LinkedIn.
LinkedIn outreach MCP server — 19 tools for AI agents to prospect, sequence, and manage contacts.
The safest LinkedIn MCP: your Agents read DMs, search your network and draft messages you send.
Hosted LinkedIn MCP server on your own account: 35 tools for search, profiles, inbox, posts, pages.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceHosted LinkedIn MCP server that connects AI apps to a user's own LinkedIn account, enabling inbox reading, messaging, invitations, people search, and post interactions.2-

LinkMCPofficial
AlicenseNot gradedqualityBmaintenanceHosted LinkedIn MCP server that connects your own LinkedIn account to any MCP client, providing 33 tools for research, search including Sales Navigator, profiles, inbox, posts, connections, and email or mobile finding. Enables AI-driven prospecting, outreach, engagement, and recruiting workflows with built-in rate limits and account safety.3MIT- AlicenseNot gradedqualityCmaintenanceMCP 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
- AlicenseNot gradedqualityDmaintenanceMCP server for LinkedIn automation that enables AI agents to perform LinkedIn actions (search, inbox, feed, jobs, etc.) safely with human-like evasion and two-phase commit preview.3 npm3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.