Skip to main content
Glama

Jobs Data MCP (SteadyScrape)

steady-scrape/ats-job-feed

steady-scrape--ats-job-feed
Destructive

This tool calls the Actor "steady-scrape/ats-job-feed" and retrieves its output results. Actor description: Career page jobs scraper: every open job from company career sites on Greenhouse, Lever, Ashby, Workday, Oracle HCM, BambooHR, Workable, SmartRecruiters and 6 more ATS, as one JSON feed with salary, location, remote and apply link. New/removed job alerts. $1.50 per 1,000 jobs.

Input Schema

NameRequiredDescriptionDefault
keywordsNoKeep only jobs whose title contains at least one of these words or phrases (case-insensitive substring match, e.g. 'engineer', 'product manager'). Leave empty to keep all titles.
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** Required. One entry per company career board. The ATS platform is auto-detected from the URL. [Description truncated] Example values: ["https://job-boards.greenhouse.io/stripe","https://jobs.lever.co/spotify","https://jobs.ashbyhq.com/ramp","https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"]
locationsNoKeep only jobs with at least one location matching any of these: city, region/state, country name or ISO 3166-1 alpha-2 country code (e.g. 'London', 'California', 'Canada', 'US'). Leave empty for all locations. Combine with 'Remote only' for remote jobs in a given country.
maxRetriesNoHow many times to retry a request after HTTP 429, 5xx or a timeout, with exponential backoff. Example values: 4
remoteOnlyNoIf true, keep only remote jobs (flagged remote by the ATS, workplace type REMOTE, or 'Remote' in the location).
departmentsNoKeep only jobs whose department or team contains any of these (case-insensitive substring, e.g. 'engineering', 'sales', 'marketing'). Workday boards do not expose departments, so this filter removes all Workday jobs when set.
maxConcurrencyNoMaximum number of HTTP requests in flight at once across all boards. The default of 5 is polite and fast enough for most runs. Example values: 5
stateStoreNameNoName of the key-value store that keeps delivered job IDs for 'Only new jobs'. Runs that share a name share history. Use a different name for each independent feed or alert. Example values: "ats-job-feed-state"ats-job-feed-state
emitRemovedJobsNoOnly used with 'Only new jobs'. If true, jobs that disappeared from a board since the last run are output as free records with changeType='removed', firstSeenAt and removedDetectedAt. Requires a complete board listing (for Workday: no cap or keyword pre-filter).
excludeKeywordsNoDrop jobs whose title contains any of these words or phrases (case-insensitive substring match, e.g. 'intern', 'senior').
firstRunEmitsAllNoOnly used with 'Only new jobs'. When a board is seen for the first time: true (default) outputs all its current jobs once; false records them silently as a baseline so you only get jobs posted later. Example values: true
postedWithinDaysNoKeep only jobs posted in the last N days (e.g. 7). Jobs without a posted date are kept. Leave empty for any date.
maxJobsPerCompanyNoMaximum number of jobs returned per board, after filters. With 'Only new jobs' it caps new jobs per board per run (held-back jobs come in later runs). Leave empty for no cap. Use a small value (e.g. 10-100) for quick tests and to control cost ($0.0015 per job). On the Apify Free plan, the first 50 job results per account are free while the monthly free pool lasts; after that the normal price applies. Example values: 25
includeDescriptionNoIf true (default), each job includes the full description as HTML (descriptionHtml) and plain text (descriptionText). Set false for a smaller, faster dataset with metadata only. Example values: true
onlyNewSinceLastRunNoIf true, the Actor remembers which job IDs it already delivered per board (in the named key-value store below) and outputs only jobs not delivered before, marked changeType='new'. Use for scheduled job alerts and change feeds. If false (default), every matching job is returned on every run.

Output Schema

NameRequiredDescriptionDefault
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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / department / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionHtml / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionText / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
  2. Changed3 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / department / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionHtml / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionText / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
  3. Changed3 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / department / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionHtml / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionText / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
  4. Changed3 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / department / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionHtml / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionText / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
  5. Changed3 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / department / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionHtml / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionText / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
  6. Changed3 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / department / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionHtml / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionText / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
  7. Changed3 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / department / type
      Previous value: -[
      -  "null",
      -  "string"
      -]New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionHtml / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionText / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +[
      +  "null",
      +  "string"
      +]
  8. Changed4 schema fields changed
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / department / type
      Previous value: -"string"New value: +[
      +  "null",
      +  "string"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionHtml / type
      Previous value: -"null"New value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / descriptionText / type
      Previous value: -"null"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / postedOnText
      Added value: +{
      +  "type": "string"
      +}
  9. First observed

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context the annotations cannot: the per-job pricing ($1.50 per 1,000 jobs), the 14-ATS scope, and change-alert support via new/removed job detection. It does not explain the run lifecycle implied by waitSecs (cap-then-poll), nor the shared key-value-store semantics behind 'only new' mode, both of which matter behaviorally.

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?

Two sentences, front-loaded with the actor's purpose, ATS coverage, output shape and price. The only waste is the opening 'calls the Actor ... and retrieves its output results' clause, which restates the tool name without adding information.

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 16 parameters, a full output schema, and rich annotations, the description need not explain parameters or return values, and it covers scope, source coverage and cost well. The remaining gap is sibling differentiation (career-jobs-search vs remote-jobs-api) and the waitSecs/async polling workflow, which an agent must infer from the schema.

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 all 16 parameters are already documented in detail, including accepted URL/slug forms, filter semantics, and Workday caveats. The description contributes no parameter meaning beyond that, which is the expected baseline when the schema does the work.

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 scrapes open jobs from company career sites across named ATS platforms (Greenhouse, Lever, Ashby, Workday, Oracle HCM, etc.) into one JSON feed with salary, location, remote flag and apply link. It is clear what the tool does, but the opening sentence ('calls the Actor ... and retrieves its output results') is generic wrapper boilerplate that repeats the name, and nothing in the description itself separates it from the sibling career-jobs-search or remote-jobs-api tools.

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?

Usage is only implied: the ATS list and the 'job alerts'/'new-removed' mention suggest per-company board scraping rather than keyword search. The explicit 'it does not search all companies by keyword' differentiation lives in the input schema's top-level description, not in the tool description, so an agent comparing against career-jobs-search gets no routing advice from the description itself.

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.