Skip to main content
Glama

Search LinkedIn Jobs

search_linkedin_jobs
Read-onlyIdempotent

Searches public LinkedIn job listings by keyword (field), with optional location, posting date, job type, experience level, work model and company filters, and returns up to 20 listings as the source sends them (job_position, company_name, job_location, job_link and other fields). Public listings only, nothing behind a LinkedIn login. Not for postings from many job sites: use search_jobs. A search with no matches is charged; errors are not. Required: field.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "field": "<field>"
    },
    "name": "search_linkedin_jobs"
  }
}

Input Schema

NameRequiredDescriptionDefault
pageNoOne-based result page, integer at least 1, e.g. 2; default 1. No option surcharge; 5 credits per successful request.
fieldYesRequired job title or company keyword, e.g. "Python developer"; no default. No option surcharge; 5 credits per successful request.
geoidNoLinkedIn numeric location ID as a string, copied from a LinkedIn jobs URL (geoId=...); default "92000000" (worldwide). No option surcharge; 5 credits per successful request.
sort_byNoPosting-date filter: day, week or month, e.g. "week" for the past week; omitted means no date filter. No option surcharge; 5 credits per successful request.
job_typeNoEmployment filter: temporary, contract, volunteer, full_time or part_time, e.g. "full_time"; omitted means all types. No option surcharge; 5 credits per successful request.
locationNoLocation text, e.g. "London" or "Berlin, Germany"; omit for worldwide jobs. No option surcharge; 5 credits per successful request.
exp_levelNoExperience filter: internship, entry_level, associate, mid_senior_level or director, e.g. "entry_level"; omitted means all levels. No option surcharge; 5 credits per successful request.
work_typeNoWork model: at_work (on site), remote or hybrid, e.g. "remote"; omitted means all models. No option surcharge; 5 credits per successful request.
filter_by_companyNoLinkedIn numeric company ID as a string, copied from a LinkedIn company or jobs URL, e.g. "1441"; omitted means all companies. No option surcharge; 5 credits per successful request.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • changedInput schema / properties / exp_level / description
      Previous value: -"Experience filter: internship, entry_level, associate, mid_senior_level or director; omitted means all levels. No option surcharge; 5 credits per successful request."New value: +"Experience filter: internship, entry_level, associate, mid_senior_level or director, e.g. \"entry_level\"; omitted means all levels. No option surcharge; 5 credits per successful request."
    • addedInput schema / properties / exp_level / enum
      Added value: +[
      +  "internship",
      +  "entry_level",
      +  "associate",
      +  "mid_senior_level",
      +  "director"
      +]
    • removedInput schema / properties / exp_level / minLength
      Removed value: -1
    • changedInput schema / properties / field / description
      Previous value: -"Required job title or company keyword, e.g. Python developer; no default. No option surcharge; 5 credits per successful request."New value: +"Required job title or company keyword, e.g. \"Python developer\"; no default. No option surcharge; 5 credits per successful request."
    • changedInput schema / properties / filter_by_company / description
      Previous value: -"LinkedIn company ID; omitted means all companies. No option surcharge; 5 credits per successful request."New value: +"LinkedIn numeric company ID as a string, copied from a LinkedIn company or jobs URL, e.g. \"1441\"; omitted means all companies. No option surcharge; 5 credits per successful request."
    • changedInput schema / properties / geoid / description
      Previous value: -"LinkedIn location ID; default 92000000 (worldwide). No option surcharge; 5 credits per successful request."New value: +"LinkedIn numeric location ID as a string, copied from a LinkedIn jobs URL (geoId=...); default \"92000000\" (worldwide). No option surcharge; 5 credits per successful request."
    • changedInput schema / properties / job_type / description
      Previous value: -"Employment filter: temporary, contract, volunteer, full_time or part_time; omitted means all types. No option surcharge; 5 credits per successful request."New value: +"Employment filter: temporary, contract, volunteer, full_time or part_time, e.g. \"full_time\"; omitted means all types. No option surcharge; 5 credits per successful request."
    • addedInput schema / properties / job_type / enum
      Added value: +[
      +  "temporary",
      +  "contract",
      +  "volunteer",
      +  "full_time",
      +  "part_time"
      +]
    • removedInput schema / properties / job_type / minLength
      Removed value: -1
    • changedInput schema / properties / location / description
      Previous value: -"Location text, e.g. London; omit for worldwide jobs. No option surcharge; 5 credits per successful request."New value: +"Location text, e.g. \"London\" or \"Berlin, Germany\"; omit for worldwide jobs. No option surcharge; 5 credits per successful request."
    • changedInput schema / properties / page / description
      Previous value: -"One-based result page, integer at least 1; default 1. No option surcharge; 5 credits per successful request."New value: +"One-based result page, integer at least 1, e.g. 2; default 1. No option surcharge; 5 credits per successful request."
    • changedInput schema / properties / sort_by / description
      Previous value: -"Posting-date filter: day, week or month; omitted means no date filter. No option surcharge; 5 credits per successful request."New value: +"Posting-date filter: day, week or month, e.g. \"week\" for the past week; omitted means no date filter. No option surcharge; 5 credits per successful request."
    • addedInput schema / properties / sort_by / enum
      Added value: +[
      +  "day",
      +  "week",
      +  "month"
      +]
    • removedInput schema / properties / sort_by / minLength
      Removed value: -1
    • changedInput schema / properties / work_type / description
      Previous value: -"Work model: at_work, remote or hybrid; omitted means all models. No option surcharge; 5 credits per successful request."New value: +"Work model: at_work (on site), remote or hybrid, e.g. \"remote\"; omitted means all models. No option surcharge; 5 credits per successful request."
    • addedInput schema / properties / work_type / enum
      Added value: +[
      +  "at_work",
      +  "remote",
      +  "hybrid"
      +]
    • removedInput schema / properties / work_type / minLength
      Removed value: -1
  2. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, open-world, idempotent and non-destructive, but the description adds behavioral facts annotations cannot express: results are capped at 20 and returned 'as the source sends them', no login-gated listings appear, and billing semantics ('a search with no matches is charged; errors are not'). That is meaningful operational context; only the pagination-vs-result-cap interaction is left implicit.

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?

Three dense sentences with the core purpose front-loaded, then scope caveat, then sibling routing. No filler, though the sentence enumerating optional filters is somewhat redundant with the schema and slightly lengthens the read.

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 9 parameters and no output schema, the description usefully sketches the return payload (job_position, company_name, job_location, job_link and other fields) and notes the 20-item cap. The only gap is that the 'page' parameter and its relationship to the result cap are not explained in prose, which an agent might need for multi-page retrieval.

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?

Schema description coverage is 100%, so the schema already documents every parameter including enums and defaults, establishing the baseline of 3. The description only paraphrases the optional filters in prose ('posting date, job type, experience level, work model and company filters') and omits geoid entirely, so it adds little beyond what is already structured.

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?

States a specific verb and resource (searches public LinkedIn job listings) plus the scope of result set (up to 20 listings) and the required keyword parameter. It explicitly distinguishes itself from the sibling search_jobs by limiting scope to LinkedIn only, so an agent can choose between them without opening either schema.

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

Usage Guidelines5/5

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

Names the alternative tool ('Not for postings from many job sites: use search_jobs') along with the condition that selects it, and adds an eligibility boundary ('Public listings only, nothing behind a LinkedIn login'). It also restates the required parameter, so there is no inference needed before calling.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources