Skip to main content
Glama
mdnaimul22

LinkedIn MCP Pro Max

by mdnaimul22

Quick Start

1. Prerequisites

Ensure you have uv installed:

curl -LsSf https://astral.sh/uv/install.sh | sh

2. Installation & Setup

chmod +x scripts/setup.sh
./scripts/setup.sh

The script handles dependency syncing, .env bootstrapping, and stealth browser provisioning.

Method B: Manual Setup

uv sync
uv run python -m patchright install chromium
cp .env.example .env

Edit .env with your LinkedIn credentials:

LINKEDIN_EMAIL="your-email@example.com"
LINKEDIN_PASSWORD="your-secure-password"
LINKEDIN_USERNAME="your-profile-slug"

4. First-Run Authentication

uv run linkedin-mcp-pro-max --login

5. Connect to Claude Desktop (or any MCP client)

Add to your claude_desktop_config.json:

{
    "mcpServers": {
        "linkedin-mcp-pro-max": {
            "command": "/home/naimul/.local/bin/uv",
            "args": [
                "--directory",
                "/home/naimul/linkedin-mcp-pro-max",
                "run",
                "linkedin-mcp-pro-max"
            ]
        }
    }
}

Related MCP server: linkedin-mcp-pro

The MCP Toolkit (14 Unified Tools)

Category

Tool

Actions

Description

Profile

profile

get, analyze, update, update_cover_image

Manage deep profile data, AI analysis, and identity updates

experience

add, update, delete

Manage professional experience entries

education

add, update, delete

Manage education entries

skills

add, delete

Manage skills on your profile

company

-

Get detailed corporate metadata and insights

Jobs & Intel

job

search, details, recommended, apply

Discover, analyze, and apply for job postings

application

list, track, update

Manage internal job application tracking

Content

create_linkedin_post

-

Publish AI-generated posts autonomously

interact_with_post

read, like, comment

Engage with feed posts via URL

Documents

generate_resume

-

Generate a professional resume from your profile

tailor_resume

-

Target your resume to match a specific Job ID

generate_cover_letter

-

Create a personalized contextual cover letter

list_templates

-

View all available document templates

System

server

restart

Manage the MCP server lifecycle


Architecture

Built on Clean Architecture with a one-way dependency rule and a Unified Component Registry that eliminates all manual wiring.

[tools/]  →  [services/]  →  [browser/actors/ + browser/scrapers/]
              ctx.my_svc        manager.my_actor / manager.my_scraper

Directory Structure

src/
├── app.py                  # Composition root — auto-wires from registry
├── helpers/
│   └── registry.py         # Unified discovery engine (ServiceMeta, ActorMeta, ScraperMeta)
├── tools/                  # MCP tool definitions (@mcp.tool) — auto-discovered
├── services/               # Business logic layer — auto-wired via SERVICE markers
├── browser/
│   ├── actors/             # Write operations (UI interaction) — auto-registered
│   ├── scrapers/           # Read operations (data extraction) — auto-registered
│   ├── manager.py          # Orchestrator — auto-instantiates actors/scrapers
│   └── helpers/            # Low-level browser utilities (driver, sniffer, dom)
├── api/                    # LinkedIn internal API client
├── db/                     # Database repositories
├── schema/                 # Pydantic domain models
├── config/                 # Settings and environment
└── providers/              # AI provider wrappers (OpenAI, Claude)

The Zero-Config Flow

At startup, helpers/registry.py scans services/, browser/actors/, and browser/scrapers/ automatically:

discover_all()
├── services/*.py     → SERVICE = ServiceMeta(...)   → injected into AppContext
├── browser/actors/*  → ACTOR   = ActorMeta(...)     → instantiated in BrowserManager
└── browser/scrapers/ → SCRAPER = ScraperMeta(...)   → instantiated in BrowserManager

No manual registration. No editing app.py or manager.py.


Adding New Features

For the complete development pipeline, debugging guide, and working examples, see the Tool Development Guide.

A full feature (scraper + service + tool) requires exactly 3 new files. No existing file is modified.

1. Browser Scrapersrc/browser/scrapers/my_feature.py

from helpers.registry import ScraperMeta

class MyFeatureScraper:
    def __init__(self, page): ...
    async def scrape(self): ...

SCRAPER = ScraperMeta(attr="my_feature_scraper", cls=MyFeatureScraper)

2. Servicesrc/services/my_feature.py

from helpers.registry import ServiceMeta

class MyFeatureService:
    def __init__(self, browser=None): ...
    async def do_work(self): ...

SERVICE = ServiceMeta(attr="my_feature", cls=MyFeatureService, deps=["browser"], lazy=True)

3. Toolsrc/tools/my_feature.py

from app import mcp, get_ctx

@mcp.tool()
async def my_feature_tool(param: str) -> str:
    """Description the AI reads to decide when to use this tool."""
    ctx = await get_ctx()
    await ctx.initialize_browser()
    result = await ctx.my_feature.do_work()
    return json.dumps(result)

app.py, manager.py, services/__init__.py, tools/__init__.py — never touched.


uv run linkedin-mcp-pro-max             # Start MCP server
uv run linkedin-mcp-pro-max --login     # Autonomous headless login
uv run linkedin-mcp-pro-max --status    # Check authentication status
uv run linkedin-mcp-pro-max --logout    # Clear session and cookies

Documentation

Document

Description

Tool Development Guide

Full pipeline: creating tools, services, actors, scrapers. Debugging guide.

Services README

Service layer conventions and dependency rules

Actors README

Actor conventions and browser interaction patterns

Schema README

Pydantic model conventions


Available Tools

14 tools
applicationA

Manage tracked job applications locally.

Args: action: 'list', 'track', or 'update', job_id: LinkedIn job ID, job_title: Job title, company: Company name, status: Application status (interested/applied/interviewing/offered/rejected/withdrawn). For 'list', filters results. notes: Optional notes, url: Optional job URL,

allowed_args_for_action = { "list": ["status"], "track": ["job_id", "job_title", "company", "status", "notes", "url"], "update": ["job_id", "status", "notes"] }

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
notesNo
actionYes
job_idNo
statusNo
companyNo
job_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses action-specific argument constraints and notes that 'list' filters results by status. This provides useful behavioral context beyond a bare function signature, though it omits details on error handling or overwrite semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured and front-loaded with a one-sentence purpose, followed by a compact Args list and an allowed_args map. Every line is informative; no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all actions, parameters, and per-action constraints. It doesn't explain return values, but an output schema exists. Minor gaps remain around edge-case behavior like update on missing records, but overall the description is sufficient for a small tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning to each parameter (e.g., job_id as LinkedIn ID, status with allowed values, notes/url as optional) and defines per-action allowed args. This enriches the bare type-only schema, which otherwise has 0% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function—managing tracked job applications locally—and enumerates the three actions (list/track/update). It uses a specific verb 'Manage' and resource 'tracked job applications', distinguishing it from sibling tools like 'job'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance via the allowed_args_for_action mapping, which tells the agent exactly which parameters are valid for each action. This serves as clear usage instructions, though it doesn't explicitly compare to alternative tools or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

companyB

Get company information from LinkedIn.

Args: company_id: LinkedIn company ID or URL slug,

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only says 'Get' which implies a read operation, but does not disclose any other behaviors such as authentication, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one line plus an args line, highly concise and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter get tool with an output schema, the description covers the basic operation and parameter, but lacks usage guidance and behavioral details. It is adequate but minimal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains that company_id is 'LinkedIn company ID or URL slug', providing meaning beyond the schema's bare type string. This compensates for the 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get company information from LinkedIn' with a specific verb and resource. It distinguishes from sibling tools like job and profile by focusing on company-level data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It only states what it does without mentioning exclusions or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_linkedin_postA

Generate and publish a new LinkedIn post using an internal AI writer.

The AI will craft a complete, publish-ready post based on the topic you provide. Optionally, a second AI pass generates a detailed visual prompt which is sent to the image generation engine to create and attach a professional image to the post.

Full pipeline (when include_image=True): 1. LLM writes the post text (topic + tone + optional CTA). 2. LLM writes a rich, detailed image generation prompt. 3. Image generator (Flux / Gemini) creates the image. 4. Browser uploads image + posts text together on LinkedIn.

Args: topic: What the post should be about (e.g., 'why clean code matters', 'lessons from 6 months of remote work'). tone: Writing style — 'professional' (default), 'storytelling', or 'thought-leader'. include_cta: If True (default), end with a question or call-to-action. include_image: If True, generate and attach an AI image to the post. Requires IMAGE_GEN_API_BASE to be configured. If image generation fails, the post is published text-only.

Returns: JSON string with: - status: 'success' or 'error' - generated_post: The complete text that was published. - character_count: Length of the published post. - topic: Echo of the original topic for traceability. - image_prompt: (if include_image) The prompt used for image gen. - image_url: (if include_image) Local path of the generated image. - image_warning: (if include_image failed) Reason why image was skipped. - message: Human-readable confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoprofessional
topicYes
include_ctaNo
include_imageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description discloses the multi-step pipeline, including the AI writer, image generation, and browser upload. It also notes configuration requirements (IMAGE_GEN_API_BASE), fallback behavior if image generation fails (publish text-only), and the return JSON structure, providing comprehensive behavioral context beyond the tool's basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but well-structured with sections for pipeline, arguments, and returns. It is front-loaded with the core purpose and every sentence adds necessary detail, though some redundancy exists between the pipeline list and arg explanations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all aspects needed for correct invocation: inputs, defaults, side effects, error handling, configuration prerequisites, and return schema. The presence of a specified return JSON structure makes the tool self-contained despite missing formal output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero property descriptions, yet the description explains each parameter: topic with example, tone with specific style options, include_cta with its effect, and include_image with the conditional requirement and fallback. This fully compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Generate and publish a new LinkedIn post using an internal AI writer' – a specific verb and resource. It differentiates from the sibling 'interact_with_post' by focusing on creating new content rather than engaging with existing posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It describes the full workflow and options, but does not explicitly state when to choose this over 'interact_with_post' or other content tools. The purpose is clear enough that usage context is implied, but no explicit alternatives or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

educationB

Manage education entries on your LinkedIn profile.

Args: action: 'add', 'update', or 'delete', school: School/University name, degree: Degree (e.g. 'Bachelor of Science'), field_of_study: Field of study (optional), grade: Grade/GPA (optional), start_year: Start year string (e.g. '2018'), end_year: End year string (e.g. '2022'), description: Description of your studies (optional), education_id: The ID of the education entry (required for 'update'),

ParametersJSON Schema
NameRequiredDescriptionDefault
gradeNo
actionYes
degreeYes
schoolYes
end_yearNo
start_yearNo
descriptionNo
education_idNo
field_of_studyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description is the sole source of behavioral disclosure. It mentions actions and that education_id is required for update, but does not state side effects such as irreversibility of delete, permission requirements, or the fact that it modifies the live LinkedIn profile. For a mutation-heavy tool, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a concise one-line intro followed by a readable parameter list. Each parameter gets a single line with a clear description and example where useful, avoiding unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all parameters and actions, and the presence of an output schema reduces the need to document return values. However, it lacks context about when to use the tool, prerequisites, and consequences of mutations. For a tool with 9 parameters and multiple actions, it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the Args list documents all 9 parameters with brief explanations and examples (e.g., 'start_year: Start year string (e.g. 2018)'). It also clarifies that education_id is required for update and marks several fields as optional, adding real meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('education entries') and domain ('LinkedIn profile'), and the Args list specifies the actions add/update/delete. This distinguishes it from sibling tools like experience and skills. However, 'Manage' is somewhat generic without the Args list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource name and action parameter: it is used to manage education entries. However, there is no explicit guidance on when to choose this tool over siblings like experience or skills, and no alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

experienceA

Manage experience entries on your LinkedIn profile.

Args: action: 'add', 'update', or 'delete', title: Job title (e.g. 'Software Engineer'), company: Company name, position_id: The ID of the position (required for 'update'), employment_type: Type (e.g. 'Full-time', 'Contract'), location: City/Country, description: Role description, start_month: Month name (e.g. 'January'), start_year: Year string (e.g. '2023'), end_month: End Month name (e.g. 'December'), end_year: End Year string (e.g. '2024'), is_current: Whether this is your current role,

allowed_args_for_action = { "add": ["title", "company", "employment_type", "location", "description", "start_month", "start_year", "end_month", "end_year", "is_current"], "update": ["position_id", "title", "company", "employment_type", "location", "description", "start_month", "start_year", "end_month", "end_year", "is_current"], "delete": ["title", "company"] }

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
actionYes
companyYes
end_yearNo
locationNo
end_monthNo
is_currentNo
start_yearNo
descriptionNo
position_idNo
start_monthNo
employment_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It discloses that experiences are managed on the LinkedIn profile, and notes position_id is required for update, but does not detail side effects of add/update/delete, authentication requirements, or the meaning of is_current beyond a parameter name. The allowed_args_for_action is a constraint map, not a behavioral explanation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a one-sentence summary, a clear list of parameters with examples, and an allowed-args map. Given the complexity of 12 parameters and three actions, the length is appropriate and each component adds value, avoiding wasteful prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description adequately covers the input semantics for all parameters and action combinations. It is missing some operational context such as how delete matches entries using title/company, or what happens if multiple entries share the same title, but overall it is fairly complete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero descriptions, so the description fully compensates by explaining every parameter with examples and clarifying the special role of position_id. The allowed_args_for_action map adds explicit per-action parameter constraints, going well beyond the schema's type/default definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as managing experience entries on LinkedIn, which distinguishes it from sibling tools like education, job, and profile. The action enum and allowed args specify add/update/delete, adding clarity. However, the verb 'Manage' is generic, and the description does not explicitly contrast with related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource name and the action parameter, indicating when to add, update, or delete experience entries. However, there is no explicit when-to-use vs alternatives guidance, no exclusions, and no mention of tool selection relative to siblings like education or job.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_cover_letterA

Generate a personalized cover letter for a specific job posting.

Args: profile_id: LinkedIn profile ID or 'me' for self job_id: LinkedIn job ID template: Template name (professional, concise) output_format: Output format (html, md, pdf)

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
templateNoprofessional
profile_idYes
output_formatNohtml

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It does not mention side effects, permissions, or any side effects beyond generating content. It only hints at output formats (html, md, pdf), but lacks details about what happens to the output (e.g., file creation, return payload) or any preconditions like profile access. The description is largely parameter-focused rather than behavior-focused.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, starting with a one-sentence purpose followed by a structured args block. Every line earns its place, with no redundant words or filler. The format is easy to parse and front-loads the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all parameters and provides output format options, but lacks broader context such as prerequisites (e.g., must have a valid LinkedIn profile), expected behavior, or edge cases. The presence of an output schema reduces the need to describe return values, but without annotations, more behavioral context would be expected for full completeness. It is minimally adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds meaningful parameter details that go beyond the bare schema types. It explains that profile_id accepts 'me' for self, template has options 'professional' and 'concise', and output_format has 'html', 'md', 'pdf'. This significantly helps an agent fill parameters correctly, compensating for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb 'Generate' and a specific resource 'a personalized cover letter for a specific job posting' (e.g., 'Generate a personalized cover letter'). It effectively distinguishes itself from sibling tools like generate_resume and tailor_resume by focusing on cover letters rather than resumes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives such as generate_resume or tailor_resume. It only states what the tool does and lists parameters, leaving the agent to infer usage context from the sibling names without clear decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_resumeA

Generate a professional resume from a LinkedIn profile using AI enhancement.

Args: profile_id: LinkedIn profile ID or 'me' for self template: Template name (modern, professional) output_format: Output format (html, md, pdf)

ParametersJSON Schema
NameRequiredDescriptionDefault
templateNomodern
profile_idYes
output_formatNohtml

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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 the tool uses AI enhancement and supports specific output formats, which is useful. However, it does not mention whether data is persisted, authentication requirements, or potential side effects. For a generative tool, the main behavior is clear, but deeper transparency is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a front-loaded purpose statement followed by a compact Args list. Every sentence earns its place with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, 1 required, and an output schema, the description adequately covers the purpose, parameter semantics, and output formats. It is mostly complete, though it lacks explicit usage differentiation from sibling tools, which is a minor gap at this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes an Args block that explains all three parameters: profile_id ('LinkedIn profile ID or 'me' for self'), template ('modern, professional'), and output_format ('html, md, pdf'). This fully compensates for the 0% schema description coverage and adds meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Generate'), resource ('professional resume'), source ('LinkedIn profile'), and method ('AI enhancement'). It distinguishes itself from sibling tools like tailor_resume by focusing on generation from a profile, though it does not explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating a resume from LinkedIn data but provides no explicit when-to-use guidance or alternatives. It does not mention when to prefer this over tailor_resume or generate_cover_letter, leaving the context clear but without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interact_with_postA

Interact with a specific LinkedIn post (read, like, comment).

Args: post_url: The URL of the LinkedIn post to interact with. action: Strategy to apply: 'read', 'like', or 'comment'. Default is 'read'. comment: The text to post if action is 'comment'.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoread
commentNo
post_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the full burden of disclosing side effects and requirements. It mentions the actions (read, like, comment) but does not disclose potential consequences such as the permanence of likes/comments, authentication requirements, or rate limits. This is a significant gap for a tool that modifies external state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and structured as a clean Args list. Each sentence contributes meaning with no fluff or redundancy. It effectively conveys the necessary information in a compact format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with an output schema, the description covers the essential aspects: what the tool does, the parameters, and their roles. It does not explain return values (covered by output schema) or prerequisites, but given the context signals (simple params, output schema present), it is mostly complete. Minor gap: it doesn't explicitly state that 'comment' is required when action='comment', though this is logically inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, leaving parameters as bare types and defaults. The description adds context for all three parameters: post_url is the URL of the LinkedIn post, action is the strategy ('read', 'like', or 'comment') with default 'read', and comment is the text for the 'comment' action. This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Interact with a specific LinkedIn post (read, like, comment).' The verb 'interact' is specified with concrete actions, and the resource 'LinkedIn post' is explicit. This distinguishes it from siblings like create_linkedin_post, which focuses on creation, and other unrelated tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by listing the actions ('read', 'like', 'comment') and the post_url parameter, making it clear the tool is for engaging with an existing post. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention scenarios where it should not be used. The guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jobA

Discover and manage LinkedIn job postings.

Args: action: 'search', 'details', 'recommended', or 'apply', job_id: LinkedIn job ID (required for 'details' and 'apply'), keywords: Search keywords (job title, skills, company), location: Geographic location (city, state, country), job_type: Filter by type: FULL_TIME, PART_TIME, CONTRACT, TEMPORARY, INTERNSHIP, experience_level: Filter: INTERNSHIP, ENTRY_LEVEL, ASSOCIATE, MID_SENIOR, DIRECTOR, EXECUTIVE, remote: Filter for remote jobs only, date_posted: Filter by recency: past-24h, past-week, past-month, page: Page number for pagination (default 1), count: Results per page (1-50, default 20),

allowed_args_for_action = { "search": ["keywords", "location", "job_type", "experience_level", "remote", "date_posted", "page", "count"], "details": ["job_id"], "recommended": ["count"], "apply": ["job_id"] }

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
countNo
actionYes
job_idNo
remoteNo
job_typeNo
keywordsNo
locationNo
date_postedNo
experience_levelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Because no annotations are provided, the description carries the full burden of behavioral disclosure, yet it only lists actions and filter parameters. It does not disclose that 'apply' likely submits an application or any side effects, permissions, rate limits, or response behavior, leaving the agent without safety or impact context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with a one-sentence purpose statement, then uses a clean argument list with inline defaults and allowed values, followed by a compact action-to-argument mapping. For a tool with 10 parameters and 4 actions, the length is necessary and every line adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the action variants, all parameters, defaults, filters, and per-action restrictions, which is strong for a complex job tool. It omits the side-effect behavior of 'apply' and any mention of related tools, leaving minor but notable gaps given the lack of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description must compensate, and it does thoroughly: it explains every parameter's purpose, adds enum values for job_type and experience_level, gives count range '1-50 default 20', and provides date_posted options. The allowed_args_for_action mapping further clarifies which arguments are legal for each action, going far beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'Discover and manage LinkedIn job postings' clearly states the tool's resource and domain, and listing the four actions (search, details, recommended, apply) makes the intended scope concrete. It does not explicitly call out sibling tools or sharpen the vague verb 'manage,' so it falls short of perfect differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a detailed allowed_args_for_action mapping, which tells the agent exactly which parameters are valid for each action and notes that job_id is required for details and apply. However, it gives no explicit guidance on when to prefer this tool over related siblings like 'application' or 'company,' so the comparative usage dimension is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesA

List all available templates for resumes and cover letters.

Args: template_type: Template type to list: 'resume', 'cover_letter', or 'all'

ParametersJSON Schema
NameRequiredDescriptionDefault
template_typeNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It only states the listing action and parameter values; it does not disclose auth requirements, return format, or any side effects. This is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action, and includes a clear Args block. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with an output schema, the description covers the core purpose and parameter semantics. It lacks contextual links to sibling generation tools, but the output schema likely covers return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has a single parameter with no description. The description explicitly enumerates allowed values ('resume', 'cover_letter', 'all') and explains the parameter's purpose, which fully compensates for the schema's 0% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') with a specific resource ('all available templates for resumes and cover letters'), clearly distinguishing it from sibling tools that generate or tailor resumes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you need to see available templates) but provides no explicit when-to-use or alternative commands. Sibling tools like generate_resume suggest context, but the description lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

profileB

Manage LinkedIn profiles.

Args: action: The profile action to perform ('get', 'analyze', 'update', 'update_cover_image'). profile_id: LinkedIn profile ID (username slug) or 'me' for self (for 'get' and 'analyze'). headline: New profile headline (for 'update'). summary: New profile 'About' summary (for 'update'). image_path: Absolute path to the image file (for 'update_cover_image').

allowed_args_for_action = { "get": ["profile_id"], "analyze": ["profile_id"], "update": ["headline", "summary"], "update_cover_image": ["image_path"] }

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
summaryNo
headlineNo
image_pathNo
profile_idNome

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must disclose side effects. It only gives terse action names and parameter lists; it fails to mention that 'update' changes live data, whether profile ownership is required, or what 'analyze' returns. This is under-disclosed for a tool with write actions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, opens with a one-line purpose, and uses a structured Args list plus a dict for allowed combinations. It avoids prose while still conveying the action-per-argument relationships.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has multiple actions and 5 parameters, and while the description maps parameters to actions, it lacks information about what each action does (especially 'analyze'), whether updates overwrite existing fields, and any prerequisites such as authentication. Given an output schema exists, return values are covered, but overall action context is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds value by defining each parameter's role and the allowed_args_for_action constraint matrix, which is missing from the input schema. Since schema coverage is 0%, this extra context is essential and helps the agent avoid invalid combinations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses 'Manage LinkedIn profiles' as a clear verb+resource, and the Args section enumerates four specific actions. However, it doesn't differentiate this from sibling tools that also target profile sub-resources (experience, skills, education), so the purpose is clear but not sibling-distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an allowed_args_for_action mapping, which tells the agent which parameters apply to each action. Yet it offers no guidance on when to choose this tool over alternatives (e.g., use experience tool to update work history), and no explicit when-not-to-use or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

serverC

Manage the MCP server.

Args: action: The server action to perform ('restart'), reason: Optional reason for the restart,

allowed_args_for_action = { "restart": ["reason"] }

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
reasonNoUser requested restart

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It fails to mention side effects (e.g., disconnecting sessions), permissions required, or reversibility of the restart. 'Manage' implies control but lacks detail about what the restart entails or what the agent should expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly concise, but the inclusion of a code block for allowed_args_for_action is slightly redundant and interrupts flow. The main sentence is short, and the argument list is helpful. Overall, it earns its place without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only one action and one optional reason, so the description covers the main inputs. However, it omits any description of the output schema (though present) and ignores behavioral context like whether the restart is disruptive. The main description is vague; a clearer statement like 'Restart the MCP server' would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no descriptions for properties (0% coverage), so the tool description must clarify parameter meanings. It explains that 'action' is the server action ('restart') and 'reason' is optional. This adds some value beyond the raw schema, but it largely restates the parameter names and schema constraints (const, default).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Manage the MCP server' and then specifies the action 'restart', making it clear the tool is for restarting the server. It is distinct from sibling tools (e.g., create_linkedin_post, job) which handle content or career data. However, the verb 'Manage' is somewhat broad; the intent is clearer after reading the argument details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no prerequisites, and no mention of exclusions. The description only defines the action and parameters, not the context in which restarting the server is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skillsA

Manage skills on your LinkedIn profile.

Args: action: 'add' or 'delete', skill_name: Name of the skill (e.g. 'Python', 'Machine Learning'),

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
skill_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Manage skills' and lists arguments; it does not disclose side effects (e.g., idempotency on delete, whether adding an existing skill fails), permission requirements, or rate limits. The description is not misleading but is minimal and adds little beyond what the schema already shows.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using only two lines, and structured with an 'Args' block that clearly lists parameters. Every word contributes value; there is no redundant information or filler. It is front-loaded with the main purpose and follows with parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (two parameters) and an output schema exists, so return values are likely covered elsewhere. However, for a mutation tool with no annotations, the description lacks any mention of behavioral implications like error conditions (e.g., deleting a non-existent skill) or idempotency. It also fails to provide any usage context relative to sibling tools. The description is adequate for basic invocation but not complete for nuanced decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the schema provides no descriptions for properties. The description compensates by explaining 'action' as 'add or delete' and giving examples for 'skill_name' ('Python', 'Machine Learning'). This adds meaningful context beyond the raw enum and string types, helping the agent understand the expected values and their semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Manage skills on your LinkedIn profile' with specific actions 'add' or 'delete'. It distinguishes from sibling tools like experience, education, and profile by targeting specifically the skills section of a LinkedIn profile. The scope is clear and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention prerequisites, edge cases, or when to prefer other sibling tools. The only usage indication is the action parameter, which is more about parameter selection than contextual usage. No explicit exclusion or alternative references are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tailor_resumeA

Generate a resume tailored to a specific job posting.

Args: profile_id: LinkedIn profile ID or 'me' for self job_id: LinkedIn job ID to tailor the resume for template: Template name (modern, professional) output_format: Output format (html, md, pdf)

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
templateNomodern
profile_idYes
output_formatNohtml

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must carry the burden of behavioral disclosure. It does not mention any side effects, access requirements, or transformation behavior beyond the generic 'generate' verb. There is no discussion of how the resume is tailored or whether the operation modifies stored data, making it insufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with a one-sentence purpose followed by a bulleted argument list. Every word contributes, and the format is easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core purpose and parameters, and an output schema exists to explain return values. However, it omits broader contextual details such as prerequisites, integration with other tools like list_templates, and any limitations of the tailoring process, leaving some gaps for an agent operating in a complex workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The Args section supplements the schema by explaining the meaning of each parameter, such as 'profile_id: LinkedIn profile ID or ''me'' for self' and providing valid options for template and output_format (html, md, pdf). This adds semantic value beyond the bare schema, which has no descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Generate a resume tailored to a specific job posting,' which clearly identifies the action (generate) and the object (resume) with a distinguishing scope (tailored to a job posting). This differentiates it from sibling tools like generate_resume and generate_cover_letter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use tailor_resume versus other resume-related tools. It neither mentions specific use cases nor explicitly excludes alternatives. The only clue is the phrase 'tailored to a specific job posting,' but no explicit comparison or context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (e.g., interact_with_post vs create_linkedin_post, job vs application). Some minor overlap exists between generate_resume and tailor_resume, but descriptions clarify the distinction. Profile and its sub-section tools (experience, skills, education) are logically separated but could be slightly ambiguous.

Naming Consistency2/5

Naming conventions are mixed: some tools are verb_noun (create_linkedin_post, generate_resume, list_templates), while others are bare nouns (job, profile, company, experience, skills, education, server, application). This inconsistency makes the tool set feel less predictable, even though the noun tools share a pattern of action-based arguments.

Tool Count5/5

With 14 tools, the server covers a broad but well-scoped set of LinkedIn features (posts, jobs, profiles, resumes, applications). The count is within the ideal 3-15 range and each tool addresses a meaningful function without redundancy.

Completeness4/5

The server covers core LinkedIn workflows: profile management (experience, skills, education), job search/apply, post creation/interaction, and resume/cover letter generation. Minor gaps exist, such as no post deletion or edit, and no direct messages/connections, but these are not critical for the apparent job-seeker focus.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Fully featured MCP server that provides automation tools for LinkedIn, supporting browser-based scraping and API-based operations for content management, media uploads, and reactions.
    6
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Self-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.
    58
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for programmable LinkedIn automation via Playwright, offering 20 tools for profile management, messaging, feed interaction, and job searching through real browser automation.
    29
    MIT

Latest Blog Posts

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/mdnaimul22/linkedin-mcp-pro-max'

If you have feedback or need assistance with the MCP directory API, please join our Discord server