Skip to main content
Glama
Sabari2005

LinkedIn MCP Server

by Sabari2005

linkedin_apply_to_job

Submit LinkedIn Easy Apply applications: auto-fills required questions from your answers or remembered defaults, and halts at questions it can't confidently answer so you can review before submission.

Instructions

Apply to a job through LinkedIn Easy Apply. Reads each step of the form, answers questions from the answers you supply, from previously remembered answers, or from safe defaults — and by default STOPS rather than guessing at a required question it cannot answer confidently. Check the unanswered field in the result and re-invoke with those answers supplied. This submits a real application to a real employer, so confirm intent with the user first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jobYesWhich job: a numeric job id, a urn:li:jobPosting:… URN, or a linkedin.com/jobs/view/… URL. All three are accepted.
phoneNoPhone number, for the near-universal phone field.
answersNoAnswers to screening questions, keyed by question text or a distinctive substring of it, e.g. {"years of experience with Python": "5", "require sponsorship": "No"}.
resumePathNoPath to a resume file (PDF/DOC/DOCX, max 2MB). Omit to use whichever resume LinkedIn has on file.
followCompanyNoWhether to leave LinkedIn's "follow this company" box ticked. Defaults to leaving it as-is.
stopOnUnknownNoDefault true: refuse to submit if a required question cannot be answered confidently. Set false to let the server fall back to best-effort defaults — only do this if the user accepts the risk of an imperfect answer.
coverLetterPathNoPath to a cover letter file, when the form accepts one.
rememberAnswersNoStore answers for reuse in later applications. Defaults to true.
Behavior5/5

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

The description discloses critical behavioral traits: it reads each step, may use safe defaults, stops rather than guessing on unknown required questions, and submits a real application to a real employer. It also mentions the `unanswered` field in results and the need for user confirmation. This goes beyond the annotations (which only indicate non-read-only and open-world) and does not contradict them.

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 four tightly written sentences, front-loaded with the primary action. Every sentence adds value: purpose, behavior, actionable guidance on handling `unanswered`, and a safety warning. There is no fluff or redundancy, making it highly concise and well-structured.

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?

Despite having no output schema, the description hints at the result's `unanswered` field, which is essential for the workflow. It covers the main flow (apply, handle unknowns, confirm intent) but does not elaborate on potential errors, success criteria, or all output fields. Given the tool's complexity (8 params, nested objects, real-world side effects), it is mostly complete but leaves some ambiguity about the exact result structure.

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 covers 100% of parameters with detailed descriptions, so the baseline is 3. The description adds minor context: it clarifies how `answers` and `rememberAnswers` interact (supplied vs previously remembered), and that `stopOnUnknown` defaults to true (stopping behavior). This is helpful but not extensive, so it remains at baseline.

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 opens with a specific verb and resource: 'Apply to a job through LinkedIn Easy Apply.' It further explains the process (reads form, answers questions, submits) and clearly distinguishes from siblings like bulk apply or get application history. The purpose is unambiguous and covers the tool's core functionality.

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?

The description provides clear usage context: apply to a single job via Easy Apply, answers can come from supply, memory, or defaults, and it warns to confirm intent with the user first. It also instructs on re-invoking after checking the `unanswered` field. However, it does not explicitly mention alternatives or when not to use it (e.g., for bulk applications, use `linkedin_apply_to_jobs_bulk`), so slightly below a 5.

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

Install Server

Other Tools

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/Sabari2005/linkedin-mcp-server'

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