Skip to main content
Glama

Agent Tools API

list_jobs

List open jobs at companies on Greenhouse, Lever, Ashby, Workable or SmartRecruiters from a careers URL or "ats:slug" (for example "greenhouse:airbnb"). Use when the user asks who is hiring, what roles a company has open, or to find remote or engineering roles at a named company. Optional filters: keyword, location, remote, department, postedSince, withSalary. Returns normalized jobs (title, department, locations with ISO country codes, remote, workplace type, compensation, description, apply URL, dates); a board that cannot be read comes back as a type "error" record.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
remoteNoKeep only remote jobs when true
keywordNoKeep jobs whose title or description mentions this text
locationNoKeep jobs whose location text or city contains this, or whose country matches this name or ISO code
companiesYesCareers page URLs or "ats:slug" tokens, e.g. ["greenhouse:airbnb", "https://jobs.lever.co/spotify"]
departmentNoKeep jobs in a department matching this text
withSalaryNoKeep only jobs that publish a salary figure when true
postedSinceNoISO date; keep jobs posted or updated on or after it
maxJobsPerCompanyNoCap on jobs returned per company after filtering (default 1000)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/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 and does meaningful work: it discloses that a board that cannot be read returns a 'error'-typed record rather than failing the call, and it enumerates the normalized output shape. That error-record behavior is exactly the kind of nuance an agent could not guess. It omits any auth, rate-limit, or caching notes, which keeps it from a 5.

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 definition is front-loaded: purpose and input format first, usage triggers second, filters and return shape last. Every sentence carries information and the parenthetical example clarifies the slug syntax efficiently. It is slightly dense with the ATS enumeration and the return-field list, which keeps it just under maximal conciseness.

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 an 8-parameter read tool with no output schema and no annotations, the description covers the important ground: input format, use cases, available filters, normalized return fields, and degraded-mode behavior. The one gap is that the default per-company cap and the pagination/truncation behavior are not addressed in prose; otherwise an agent has what it needs to call this correctly.

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 every parameter already has a documented meaning in the schema and the baseline is 3. The description lists the filter names (keyword, location, remote, department, postedSince, withSalary) but adds no syntax or semantics beyond what the schema fields already state; it does not even mention maxJobsPerCompany.

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 ('List open jobs') and immediately bounds the scope to five named ATS providers. It also states the accepted input forms ('careers URL or "ats:slug"') with a concrete example, so an agent knows exactly what the tool operates on. Siblings (get_transcript, read_x_post, etc.) are unrelated, so no differentiation is needed.

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 gives explicit trigger conditions: 'Use when the user asks who is hiring, what roles a company has open, or to find remote or engineering roles at a named company.' That is clear context for invoking the tool. It stops short of a 5 because it names no exclusions or alternative tools for cases like a non-supported ATS, leaving the agent to infer the boundary.

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