Skip to main content
Glama

Greenhouse, Lever & Ashby Jobs + Salary

Server Details

Live jobs from Greenhouse, Lever, Ashby, Workable, Recruitee and Teamtailor, with normalised salary.

Ownership verified
Status
Healthy
Uptime
94.7% over 40 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.6/5.0

Scored across 5 tools

Disambiguation3/5

The four Apify plumbing tools are pairwise distinguishable (abort vs. inspect a run, dataset rows vs. key-value record), so an agent can tell them apart. However, the single jobs-scraper tool is described as 'retrieves its output results,' which blurs the boundary with get-dataset-items — it's unclear whether calling the scraper returns rows directly or just starts a run whose output must then be fetched. The mix of one domain tool with four generic platform tools also makes the set's overall intent murky.

Naming Consistency3/5

Four tools follow a clean kebab-case verb_noun pattern (abort-actor-run, get-actor-run, get-dataset-items, get-key-value-store-record). The fifth is a namespace-mangled identifier (meridianlabs--greenhouse-lever-ashby-jobs-scraper) that breaks both the verb-first convention and the casing pattern. Readable, but inconsistent.

Tool Count3/5

Five tools is on the thin side for a server that advertises multi-platform job scraping with salary filtering. Four of the five are generic Apify runtime helpers rather than job-domain tools, so the effective surface is a single scraping entry point plus plumbing.

Completeness2/5

For a jobs+salary server there is no tool to list supported companies/boards, filter or query previously scraped jobs, or compare salaries — everything hinges on one scraper call plus raw dataset retrieval. Run inspection and abort are covered, but the job/salary domain itself is barely surfaced beyond a single invocation.

Available Tools

5 tools
abort-actor-runAbort Actor runA
DestructiveIdempotent
Inspect

Abort an Actor run that is currently starting or running. For runs with status SUCCEEDED, FAILED, ABORTING, ABORTED, or TIMED-OUT, this call has no effect. The results will include the updated run details after the abort request.

USAGE:

  • Use when you need to stop a run that is taking too long or misconfigured.

USAGE EXAMPLES:

  • user_input: Abort run y2h7sK3Wc

  • user_input: Gracefully abort run y2h7sK3Wc

NameRequiredDescriptionDefault
runIdYesThe ID of the Actor run to abort.
gracefullyNoIf true, the Actor run will abort gracefully with a 30-second timeout.

Output Schema

NameRequiredDescription
tipNoAdvisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key
runIdYesActor run ID
statsNoRun statistics
statusYesRun status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED
actorIdYesStable Apify Actor ID from the run record
summaryYesPast-tense summary of the run state
exitCodeNoActor process exit code; populated for terminal states (especially FAILED)
nextStepYesOne primary follow-up action with identifiers interpolated
storagesYesDataset and key-value store metadata, keyed by alias. "default" is always the primary entry.
actorNameNo"username/actor-name"
startedAtNoISO timestamp when the run started
finishedAtNoISO timestamp when the run finished (terminal states only)
statusMessageNoPass-through from Apify run.statusMessage
apifyConsoleUrlNoPersonalized Apify Console link to the run; present only for Console sessions

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the no-effect-on-terminal-states rule, which is exactly what makes the idempotent hint meaningful, plus the fact that updated run details come back. It omits auth/permission requirements and any rate-limit behavior.

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-loaded with the core action and the state constraint, and every prose sentence earns its place. The 'USAGE EXAMPLES' block of raw user_input lines is mostly decorative and pads the definition slightly.

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, return values need not be spelled out, and the description still notes that updated run details are returned. For a two-parameter mutation with full annotation coverage, only auth requirements are unaddressed, which is a minor gap.

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 both parameters and the 30-second graceful-abort timeout are already documented in the schema. The description only gestures at 'gracefully' via an example, adding no syntax or semantic meaning beyond the schema. Baseline 3 applies.

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?

Specific verb (Abort) plus resource (Actor run) and a state qualifier ('currently starting or running'), which immediately distinguishes it from siblings like call-actor and get-actor-run. An agent can select it without opening the schema.

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?

Explicit when-to-use ('stop a run that is taking too long or misconfigured') and an explicit no-op condition (terminal statuses such as SUCCEEDED, FAILED, ABORTED, TIMED-OUT). It does not name an alternative tool or describe prerequisites, so it falls short of a 5.

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

get-actor-runGet Actor runA
Read-onlyIdempotent
Inspect

Get detailed information about a specific Actor run.

Returns run result: status, storages (datasets/keyValueStores alias map), stats, summary, nextStep.

  • summary describes the past (e.g. "SUCCEEDED in 22s. 47 items; 3 fields available.").

  • nextStep prescribes one primary follow-up action with identifiers interpolated (e.g. "Use get-dataset-items with datasetId=...").

  • waitSecs (0–45, default 30) waits up to that many seconds for terminal status before returning.

USAGE:

  • Use to check the status of a run started by any Actor-running tool.

  • Pass waitSecs > 0 to block until terminal (or until the cap elapses).

USAGE EXAMPLES:

  • user_input: Show details of run y2h7sK3Wc

  • user_input: Wait for run y2h7sK3Wc to finish

NameRequiredDescriptionDefault
runIdYesThe ID of the Actor run.
waitSecsNoMaximum seconds to wait for the run to reach a terminal state (SUCCEEDED, FAILED, ABORTED, TIMED-OUT). 0 returns immediately with the current status. Cap: 45. Default: 30.

Output Schema

NameRequiredDescription
tipNoAdvisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key
runIdYesActor run ID
statsNoRun statistics
statusYesRun status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED
actorIdYesStable Apify Actor ID from the run record
summaryYesPast-tense summary of the run state
exitCodeNoActor process exit code; populated for terminal states (especially FAILED)
nextStepYesOne primary follow-up action with identifiers interpolated
storagesYesDataset and key-value store metadata, keyed by alias. "default" is always the primary entry.
actorNameNo"username/actor-name"
startedAtNoISO timestamp when the run started
finishedAtNoISO timestamp when the run finished (terminal states only)
statusMessageNoPass-through from Apify run.statusMessage
apifyConsoleUrlNoPersonalized Apify Console link to the run; present only for Console sessions

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, but the description adds real behavioral context beyond them: the summary vs. nextStep semantics, and that waitSecs blocks for up to 45s (default 30) before returning the current state. This is substantive added value, though it doesn't cover error/failure modes.

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-loaded with the core purpose, then segmented into Returns/USAGE/EXAMPLES blocks. Every line carries information, though the two usage examples are somewhat redundant with the USAGE prose, adding minor length.

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?

With an output schema present and 100% parameter coverage, the description need only orient the agent, which it does fully: purpose, when to use, wait semantics, and concrete invocation examples. Nothing needed to call it correctly is missing.

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 the baseline is 3, but the description goes further by framing waitSecs as a blocking/wait mechanism with its cap and default, and by describing what runId's run produces. Slight above-baseline value over the schema text.

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?

States a specific verb and resource ('Get detailed information about a specific Actor run') and enumerates the returned result fields (status, storages, stats, summary, nextStep). It does not explicitly distinguish itself from siblings like call-actor or abort-actor-run, so it falls just short of the 5 benchmark.

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 USAGE block names the condition ('check the status of a run started by any Actor-running tool') and explains when to pass waitSecs > 0 to block until terminal. It gives clear context but stops short of explicit exclusions or naming the sibling to use for other run operations.

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

get-dataset-itemsGet dataset itemsA
Read-onlyIdempotent
Inspect

Get items (rows) from a dataset — the output/results produced by an Actor run. Returns the rows themselves, not dataset metadata, counts, or a schema. When the user provides a datasetId and asks to retrieve results, output, data, or rows, call this tool directly. Default limit is 20. Use clean=true to skip empty items and hidden fields.

USAGE:

  • Use when you need to read data from a dataset (all items or only selected fields).

USAGE EXAMPLES:

  • user_input: Retrieve results from dataset abc123

  • user_input: Get only metadata.url and title from dataset username~my-dataset

NameRequiredDescriptionDefault
descNoIf true, results are returned in reverse order (newest to oldest).
omitNoComma-separated list of fields to exclude from results.
cleanNoIf true, returns only non-empty items and skips hidden fields (starting with #). Shortcut for skipHidden=true and skipEmpty=true.
limitNoMaximum number of items to return. Default is 20.
fieldsNoComma-separated list of fields to include in results. Fields in output are sorted as specified. Use dot notation for nested objects (e.g. "metadata.url"); the server auto-flattens parent prefixes.
offsetNoNumber of items to skip at the start. Default is 0.
flattenNoComma-separated list of fields to flatten (e.g. flatten="metadata" turns {"metadata":{"url":"x"}} into {"metadata.url":"x"}). Normally derived automatically from dot-notation in `fields`; specify only as a diagnostic override.
datasetIdYesDataset ID, name (resolved against your own datasets), or full name as username~name.

Output Schema

NameRequiredDescription
itemsYesDataset items
limitYesLimit used for pagination
offsetYesOffset used for pagination
summaryYesSummary of the result
nextStepYesOne follow-up action with tool name
datasetIdYesDataset ID
itemCountYesNumber of items returned
totalItemCountYesTotal items in dataset
apifyConsoleUrlNoPersonalized Apify Console link to the dataset; present only for Console sessions

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), so the description adds value by disclosing the default limit of 20, what clean=true does, and that results are the raw rows. Return-shape details are largely deferred to the existing output schema, which is appropriate.

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-loaded with the core purpose and the anti-scope sentence, followed by short usage notes and examples. Slightly redundant in repeating the limit default and the clean flag across sections, but nothing wasteful enough to hurt.

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 read tool with full schema coverage and an output schema, the description supplies the purpose, trigger, and key defaults an agent needs. Pagination interaction (offset/limit) and flatten behavior are left to the schema, which is reasonable given the output schema exists.

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 all eight parameters in depth. The description only restates the default limit and clean=true semantics, adding little beyond the structured fields; baseline 3 applies.

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 ('Get items (rows) from a dataset') and immediately delimits scope by saying it returns rows themselves, not metadata, counts, or schema. An agent can distinguish the intent without opening the schema.

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?

Gives a clear trigger ('When the user provides a datasetId and asks to retrieve results, output, data, or rows, call this tool directly') plus a usage section and two concrete examples. It lacks explicit when-not guidance relative to any alternative, but the sibling list contains no competing dataset-read tool.

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

get-key-value-store-recordGet key-value store recordA
Read-onlyIdempotent
Inspect

Get the value stored under a specific key in a key-value store — a single record, not a listing of all keys. Requires the exact key name. The response preserves the original Content-Encoding; most clients handle decompression automatically.

USAGE:

  • Use when you need to retrieve a specific record (JSON, text, or binary) from a store.

USAGE EXAMPLES:

  • user_input: Get record INPUT from store abc123

  • user_input: Get record data.json from store username~my-store

NameRequiredDescriptionDefault
recordKeyYesKey of the record to retrieve.
keyValueStoreIdYesKey-value store ID, name (resolved against your own key-value stores), or full name as username~name.

Output Schema

NameRequiredDescription
keyYesRecord key
valueYesThe stored value (JSON, text, or binary)
summaryYesSummary of the result
contentTypeNoMIME type of the stored value
keyValueStoreIdYesKey-value store ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered elsewhere. The description earns credit for adding behavioral context beyond that: the 'requires the exact key name' precondition and the note that the response preserves the original Content-Encoding, which most clients decompress automatically — a real return-value trait callers would otherwise trip over.

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 key facts — scope, exact-key requirement, encoding caveat — are front-loaded in three tight sentences. The subsequent USAGE and USAGE EXAMPLES blocks are somewhat redundant with the first paragraph, costing a little efficiency.

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?

A two-parameter read tool whose annotations, 100% schema coverage, and output schema already cover safety, inputs, and return shape. The description closes the remaining gap with the Content-Encoding behavior, which is exactly the non-obvious detail an agent needs.

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%, including the keyValueStoreId resolution rules (name vs. username~name) and minLength constraints in the schema itself. The description only reinforces that the key must be exact, adding little semantics beyond what the schema already documents, so the baseline 3 applies.

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 ('Get the value stored under a specific key in a key-value store') and preemptively scopes it against a listing tool: 'a single record, not a listing of all keys.' An agent can immediately tell this is a point lookup, not an enumeration.

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?

It says when to use it ('when you need to retrieve a specific record (JSON, text, or binary)') and includes two concrete usage examples showing the store identifier formats. However, it never states when NOT to use it or names an alternative/sibling for enumeration, so the guidance is implied rather than comparative.

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

meridianlabs--greenhouse-lever-ashby-jobs-scrapermeridianlabs/greenhouse-lever-ashby-jobs-scraperA
Destructive
Inspect

This tool calls the Actor "meridianlabs/greenhouse-lever-ashby-jobs-scraper" and retrieves its output results. Actor description: Track new job postings at any company on Greenhouse, Lever, Ashby, Workable, Recruitee or Teamtailor, with salary as min, max, currency and period. Filter to jobs posted in the last 24 hours or by minimum salary. Paste URLs, domains or names. $2 per 1,000 jobs; unsupported companies free.

NameRequiredDescriptionDefault
modeNoMonitor mode remembers which jobs it delivered (stable IDs in a named key-value store in your account) and saves, and charges, only jobs that are new or changed since the last run, plus free 'closed' notices for jobs that disappeared. The first monitor run sees every job as new. Schedule it daily for a hiring-signal feed. Example values: "all"all
systemsNoLeave empty for all six. Companies on other systems get a free 'not_supported' status row.
waitSecsNoMax seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget.
companiesYes**REQUIRED** One per line: a job-board URL (https://jobs.lever.co/company), a careers page URL, a domain (company.com) or a company name. The hiring system is detected automatically. Every company gets a free status row saying what was found; companies on unsupported systems (Workday, iCIMS, ...) are reported, never charged. Example values: ["https://job-boards.greenhouse.io/tubitv","https://jobs.lever.co/genbio","https://jobs.ashbyhq.com/revenuecat","https://qualifyzegmbh.recruitee.com/","https://ube-careers.teamtailor.com/jobs","flowx.ai","https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"]
locationsNoKeep jobs whose location, city or region contains one of these, or whose country code matches a 2-letter code, e.g. US, Germany, London, Remote.
minSalaryNoDrop jobs that pay less than this, in the currency and pay period chosen below, e.g. 120000 USD per year. Each job's normalised salary is converted: other currencies at the European Central Bank's daily reference rates (fetched once per run), other pay periods on a full-time basis (1 year = 12 months = 52 weeks = 260 days = 2,080 hours). Jobs with no salary listed are kept unless you switch on the option below. Dropped jobs are not charged.
remoteOnlyNoKeep only jobs the hiring system marks (or the location states) as fully remote. Hybrid jobs are not remote.
monitorNameNoOnly used in monitor mode. Runs with the same name share one memory of delivered jobs; use a different name for each separate watch list (letters, digits, hyphens). Example values: "default"default
failOnErrorsNoUseful for schedules: the run is marked failed (so Apify can alert you) if a board could not be fetched, or a board URL you gave no longer exists. Failed companies are never charged.
titleKeywordsNoKeep only jobs whose title contains one of these words or phrases (whole words, case-insensitive), e.g. engineer, product manager. Filters apply after the board is fetched; only saved jobs are charged.
maxConcurrencyNoHow many companies to work on at once. Requests to the same hiring system are always spaced out politely (robots.txt and crawl delays are obeyed), so more parallelism mostly helps mixed lists. Example values: 5
onlyWithSalaryNoKeep only jobs with a salary (from the hiring system's pay field or the ad text).
minSalaryPeriodNoOnly used with a minimum salary. Hourly, daily, weekly and monthly pay is converted on a full-time basis (2,080 hours, 260 days, 52 weeks, 12 months a year). Example values: "year"year
postedWithinDaysNoKeep only jobs first published in the last N days. Jobs without a publish date are dropped when this is set, unless you switch on 'Keep jobs without a posted date'.
maxJobsPerCompanyNoSave at most this many jobs per company (after filters). Leave empty for all. A simple way to cap cost. Example values: 10
minSalaryCurrencyNoOnly used with a minimum salary. Jobs paid in other currencies are converted to this one before comparing. Example values: "USD"USD
postedWithinHoursNoKeep only jobs published in the last N hours, e.g. 24 for the last day, 168 for the last week. Uses each hiring system's publish date (the posted_at field): Greenhouse first_published (its updated_at when that is missing), Lever createdAt (Lever publishes no separate publish date), Ashby publishedAt, Workable published_on (a date without a time, so a job dated the day the window starts counts as inside it), Recruitee published_at, Teamtailor pubDate. If you also set days, both must pass. [Description truncated]
includeCompanyRowsNoOn: one free row per company (record_type 'company') alongside the job rows. Off: the dataset holds job rows only; the status rows are still saved in the run's key-value store as COMPANIES. Example values: true
includeDescriptionNoPersonal email addresses and phone numbers are removed from descriptions either way. 'None' gives structured fields only (title, location, salary...). Same price. Example values: "text"text
minSalaryAppliesToNoOnly used with a minimum salary. Example with a minimum of 120,000: a job paying 100,000 to 140,000 is kept with 'Top' and dropped with 'Bottom'. The headline range is used (the salary min and max fields). Example values: "top"top
excludeTitleKeywordsNoDrop jobs whose title contains any of these, e.g. intern, senior.
minSalaryExcludeUnknownNoOnly used with a minimum salary. Off (default): jobs with no salary listed, or whose pay can't be compared (no currency or pay period, or a salary flagged 'suspect' as a likely typo), are kept, so you don't miss roles that don't publish pay. On: they are dropped and not charged.
keepJobsWithoutPostedDateNoOnly used with a 'posted within' filter. Off: jobs whose hiring system gives no publish date are dropped (they can't be shown to be recent). On: they are kept.

Output Schema

NameRequiredDescription
tipNoAdvisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key
runIdYesActor run ID
statsNoRun statistics
statusYesRun status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED
actorIdYesStable Apify Actor ID from the run record
summaryYesPast-tense summary of the run state
exitCodeNoActor process exit code; populated for terminal states (especially FAILED)
nextStepYesOne primary follow-up action with identifiers interpolated
storagesYesDataset and key-value store metadata, keyed by alias. "default" is always the primary entry.
actorNameNo"username/actor-name"
startedAtNoISO timestamp when the run started
finishedAtNoISO timestamp when the run finished (terminal states only)
statusMessageNoPass-through from Apify run.statusMessage
apifyConsoleUrlNoPersonalized Apify Console link to the run; present only for Console sessions

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag a non-read-only, destructive, open-world operation, and the description adds genuinely useful context beyond them: the cost model ($2 per 1,000 jobs, unsupported companies free). It does not explain the run/wait semantics, but that is covered in the waitSecs schema field, and nothing contradicts the annotations.

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?

Two sentences, front-loaded with what the tool does, then the capabilities, then the pricing model. No filler and nothing redundant.

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 23 parameters, an output schema, and fully documented schema fields, the description only needs to convey purpose, input forms and cost, which it does. Monitor mode and the many salary/filter interactions are left entirely to the schema, which is acceptable given its 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?

Schema description coverage is 100%, so the baseline is 3. The description echoes a few key concepts (company identifiers as URLs/domains/names, salary as min, max, currency and period, recency filtering) but adds no syntax or behavior beyond what the schema already documents in more detail.

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 a specific verb and resource: it calls the named Actor and retrieves its output, and the embedded Actor blurb defines the scope as job postings on Greenhouse, Lever, Ashby, Workable, Recruitee and Teamtailor. That is distinct from the sibling tools (run management, dataset/key-value retrieval), though the link to those siblings is not spelled out.

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?

It gives usable input guidance ('paste URLs, domains or names') and use-case framing ('track new job postings', 'filter to jobs posted in the last 24 hours or by minimum salary'), which implies when to reach for it. However, there is no explicit statement of when to use this versus get-dataset-items or get-actor-run, and no preconditions or exclusions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
  2. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "null",
        -  "number"
        -]New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "null",
        -  "number"
        -]New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
  3. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
  4. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "null",
        -  "number"
        -]New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "null",
        -  "number"
        -]New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
  5. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
  6. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "null",
        -  "number"
        -]New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "null",
        -  "number"
        -]New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
  7. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
  8. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "null",
        -  "number"
        -]New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "null",
        -  "number"
        -]New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
  9. 1 tool update
    • Changedmeridianlabs--greenhouse-lever-ashby-jobs-scraper7 fields changed
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / board_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / company / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / country / type
        Previous value: -[
        -  "null",
        -  "string"
        -]New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_matching_filters / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / jobs_on_board / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +[
        +  "null",
        +  "number"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / source_url / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]
      • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / system / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +[
        +  "null",
        +  "string"
        +]

Publisher details

Operator
Meridian Labs · Publisher source
Vendor relationship
Independent
Trust center
Not available
Restrictions
Requires an Apify account: sign in with Apify OAuth or pass an Apify API token as a Bearer header. Pay per result, billed to the caller's Apify account.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Live open jobs from companies' own Greenhouse, Lever and Ashby boards via their official public APIs, with publish-verified dates, age, long-open and repost signals, filters and change tracking.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Live normalized remote-job data across 5 boards — one keyless endpoint, one schema, skill fit-score. No API key required. Tools: search jobs by skills + salary floor, live market stats, and computed salary bands.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables querying open job postings directly from company applicant-tracking systems (Greenhouse, Ashby, Lever), finding a company's job board, listing and comparing roles, and accessing salary data, all without scraping or API keys.
    3
    181 PyPI
    1
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to search, filter, and apply to salary-transparent tech jobs across nine job boards in eight countries, with salary, remote, and tech filters plus application tracking.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources