Skip to main content
Glama

Job Spotter: Search current job listings

jobspotter_search_jobs
Read-onlyIdempotent

Job Spotter. Search current job listings. For requests like "find remote Python jobs", "marketing jobs in New York", "junior data analyst jobs posted this week", "senior software engineer jobs in London", "nurse jobs in Manchester". Job words go in what and the place in where. Everyday phrasing in what also works: level words (junior, senior), "remote", "in " and "this week" are picked out. The say line credits listings from Remotive, Himalayas, Jobicy and Remote OK to their source.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoWhich page of results, 1 to 20. Default 1. Use 2 for "show me more".
sortNoSort: relevance (default), date (newest first) or pay (highest first).
whatNoJob title, skill or field, for example "python developer" or "marketing". Required unless where is given.
levelNoLevel: entry (junior, graduate, intern), mid or senior. With entry, jobs asking for more than 2 years of experience are left out and the answer adds apprenticeship and graduate routes.
limitNoHow many results, 1 to 10. Default 10.
shiftNoShift: day, evening, night, weekend or flexible.
whereNoA city (New York, Austin, TX, London, Birmingham, UK), a US state (Texas), a UK county or region (Kent, Yorkshire), a UK postcode, a city or country abroad (Bangalore, Dublin, Dubai, Sydney, India), a country (USA, UK, Germany), "remote", or remote in a country ("remote US").
companyNoOnly jobs at this company, for example "Tesco".
countryNoUS or UK, when the place exists in both (Birmingham, Manchester, Cambridge) and the user's country is known. Optional.
excludeNoWords the advert must not contain, comma separated, for example "sales, commission".
includeNoWords the advert must contain, comma separated, for example "python, aws".
benefitsNoBenefits the advert must mention, comma separated, for example "pension, private healthcare".
employerNoEmployer: direct for jobs posted by the employer itself, or agency for recruitment agencies.
job_typeNoJob type: full time, part time, contract, temporary or internship.
educationNoEducation: degree for jobs asking for a degree, or no degree for jobs that don't.
work_typeNoWork type: remote, hybrid or on-site.
salary_maxNoHighest yearly pay, in the local currency.
salary_minNoLowest yearly pay, in the local currency, for example 40000 or 40k. Jobs that list no pay are left out when set.
radius_milesNoHow far from the place, in miles, 1 to 100 (boards that support distance).
visa_sponsorshipNoSet to yes for jobs whose advert says visa sponsorship is offered.
posted_within_daysNoOnly jobs posted in the last N days, 1 to 90. Default 30. 7 means this week.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / level / description
      Previous value: -"Level: entry (junior, graduate, intern), mid or senior."New value: +"Level: entry (junior, graduate, intern), mid or senior. With entry, jobs asking for more than 2 years of experience are left out and the answer adds apprenticeship and graduate routes."
  2. Changed16 schema fields changed
    • addedInput schema / properties / benefits
      Added value: +{
      +  "description": "Benefits the advert must mention, comma separated, for example \"pension, private healthcare\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / company
      Added value: +{
      +  "description": "Only jobs at this company, for example \"Tesco\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / education
      Added value: +{
      +  "description": "Education: degree for jobs asking for a degree, or no degree for jobs that don't.",
      +  "enum": [
      +    "degree",
      +    "no degree"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / employer
      Added value: +{
      +  "description": "Employer: direct for jobs posted by the employer itself, or agency for recruitment agencies.",
      +  "enum": [
      +    "direct",
      +    "agency"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / exclude
      Added value: +{
      +  "description": "Words the advert must not contain, comma separated, for example \"sales, commission\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / include
      Added value: +{
      +  "description": "Words the advert must contain, comma separated, for example \"python, aws\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / job_type
      Added value: +{
      +  "description": "Job type: full time, part time, contract, temporary or internship.",
      +  "enum": [
      +    "full time",
      +    "part time",
      +    "contract",
      +    "temporary",
      +    "internship"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / page
      Added value: +{
      +  "description": "Which page of results, 1 to 20. Default 1. Use 2 for \"show me more\".",
      +  "maximum": 20,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / radius_miles
      Added value: +{
      +  "description": "How far from the place, in miles, 1 to 100 (boards that support distance).",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / salary_max
      Added value: +{
      +  "description": "Highest yearly pay, in the local currency.",
      +  "type": "string"
      +}
    • addedInput schema / properties / salary_min
      Added value: +{
      +  "description": "Lowest yearly pay, in the local currency, for example 40000 or 40k. Jobs that list no pay are left out when set.",
      +  "type": "string"
      +}
    • addedInput schema / properties / shift
      Added value: +{
      +  "description": "Shift: day, evening, night, weekend or flexible.",
      +  "enum": [
      +    "day",
      +    "evening",
      +    "night",
      +    "weekend",
      +    "flexible"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sort
      Added value: +{
      +  "description": "Sort: relevance (default), date (newest first) or pay (highest first).",
      +  "enum": [
      +    "relevance",
      +    "date",
      +    "pay"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / visa_sponsorship
      Added value: +{
      +  "description": "Set to yes for jobs whose advert says visa sponsorship is offered.",
      +  "enum": [
      +    "yes"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / where / description
      Previous value: -"A city (New York, Austin, TX, London, Birmingham, UK), a US state (Texas), a UK county or region (Kent, Yorkshire), a UK postcode, a country (USA, UK, Germany), \"remote\", or remote in a country (\"remote US\")."New value: +"A city (New York, Austin, TX, London, Birmingham, UK), a US state (Texas), a UK county or region (Kent, Yorkshire), a UK postcode, a city or country abroad (Bangalore, Dublin, Dubai, Sydney, India), a country (USA, UK, Germany), \"remote\", or remote in a country (\"remote US\")."
    • addedInput schema / properties / work_type
      Added value: +{
      +  "description": "Work type: remote, hybrid or on-site.",
      +  "enum": [
      +    "remote",
      +    "hybrid",
      +    "on-site"
      +  ],
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / level / description
      Previous value: -"entry (junior, graduate, intern), mid or senior."New value: +"Level: entry (junior, graduate, intern), mid or senior."
    • changedInput schema / properties / posted_within_days / description
      Previous value: -"Only jobs posted in the last N days, 1 to 90. Default 30. Use 7 for \"this week\"."New value: +"Only jobs posted in the last N days, 1 to 90. Default 30. 7 means this week."
  4. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, so safety profile is covered. The description adds that level words, 'remote', 'in <city>' and 'this week' are automatically parsed, and credits listing sources (Remotive, Himalayas, Jobicy, Remote OK). Doesn't describe pagination behavior beyond what schema covers.

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?

Front-loads purpose and then provides examples. The final sentence about source crediting is less critical but still informative. Slightly long example list, but each sentence earns its place.

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?

Complete for a search tool: how to form queries, what slots to use, what's auto-parsed, and where results come from. With no output schema, it doesn't describe return format, but annotations and typical search semantics make that minor. Could mention pagination but schema covers it.

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 coverage is 100%, so parameters are fully documented. The description adds value beyond the schema by explaining natural-language slot-filling ('what' for job words, 'where' for place) and that 'this week' maps to posted_within_days. Baseline 3, but slot-mapping context is a genuine addition.

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 (search) and resource (current job listings). The example queries reinforce scope. The sibling list is large but mostly non-overlapping; adjacent tools like jobspotter_similar_jobs or jobspotter_jobs_for_me aren't explicitly disambiguated, though 'current job listings' via natural-language query is distinct.

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 example queries show when to use it by mapping everyday phrasing to slots (what/where). No explicit when-not-to-use guidance vs siblings like jobspotter_similar_jobs or jobspotter_whats_hiring. Clear implied usage context.

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.