Skip to main content
Glama
Matthew3957

ai-toolkit

by Matthew3957

ats_sweep_boards

Read-onlyIdempotent

Sweep multiple ATS job boards in one call to fetch postings, detect per-board failures, and track changes since a previous sweep.

Instructions

Sweep many job boards in one call — the watchlist sweep, batched.

boards is a list of up to 50 objects, each {"company": "Arize AI", "platform": "greenhouse", "slug": "arizeai"}. company is both echoed back on that board's result and compared against the board's own reported name, so a slug that has drifted to a different company shows up as NAME_MISMATCH rather than as plausible-looking jobs. The other arguments work exactly as in ats_fetch_board and apply to every board; limit_per_board caps postings returned per board (default 25). include_descriptions defaults off here because it multiplies the size of every Greenhouse request in the sweep — turn it on when you are passing keywords and the hits need to see description text. There is deliberately no full_descriptions here: a sweep is for breadth, and untruncated postings across many boards would not fit in a context window. Go deep on one board with ats_fetch_board.

One board failing never fails the sweep. Every board comes back with its own status and detail; the ones that failed carry an empty jobs list and an explanation, and results stay in the order you passed them so they line up with your roster. The summary counts boards read versus failed and total matching postings — check it against the number of boards you sent before drawing conclusions from the results, and never fill in a board that reported a failure.

Boards are fetched a few at a time with polite pacing, so a large sweep takes tens of seconds rather than being instant.

Seen-state. Every sweep returns a state snapshot — boards keyed platform:slug, each with its postings keyed by stable job id (with first_seen dates) and a running history of board totals. Save it (e.g. as a JSON file next to your other career records) and pass it back as previous_state on the next sweep to get changes: new_jobs and gone_jobs since that run, board_status_changes, total_deltas (a per-company hiring-velocity signal), and new_boards for roster additions (whose postings are deliberately not counted as new jobs). A board that fails to read carries its previous jobs forward rather than reporting them all gone, and boards in previous_state that this sweep didn't include ride along verbatim — so a roster split into batches (e.g. to fit a time limit) can write each batch's returned state straight back without erasing the others; retire a board by deleting its key from the saved state file, not just by dropping it from the roster. State is relative to the filters used — keep filters stable between runs, or expect filter_changed: true warning that the diff reflects the filter, not the market. Use response_format="json" when round-tripping state; the markdown rendering shows the changes but not the snapshot.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
boardsYes
keywordsNo
title_filterNo
updated_sinceNo
previous_stateNo
limit_per_boardNo
response_formatNomarkdown
include_compensationNo
include_descriptionsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this as read-only/idempotent/non-destructive, and the description adds substantial behavior beyond that: partial-failure semantics, status/detail per board, result ordering, state snapshots and diffs, pacing/timing, and response_format behavior. No contradiction with annotations exists.

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 text is long, but each block earns its place given the batched/stateful complexity: roster format, failure behavior, state round-tripping, filtering caveats, and response_format. It is front-loaded with the core purpose and uses bold labels and an example to keep it scannable.

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?

For a 9-parameter, stateful sweep tool, the description covers invocation, defaults, per-board failure semantics, state diff mechanics, filter stability, batch composition, and output format. With an output schema present, it does not need to re-enumerate return fields, and nothing an agent needs 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?

With 0% schema description coverage, the description carries most of the semantic burden. It thoroughly explains boards (including the company/slug mismatch check), limit_per_board, include_descriptions, response_format, and previous_state, and points to ats_fetch_board for the filter arguments. A couple of parameters (include_compensation, updated_since) are only covered by that sibling reference rather than explicitly, which is a minor gap.

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?

Opens with a specific verb and resource—'Sweep many job boards in one call'—then distinguishes itself from ats_fetch_board by scope ('batched', 'for breadth'). An agent can immediately tell this is the multi-board complement to the single-board sibling.

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?

Explicitly states when to use the sweep vs. going deep on one board ('Go deep on one board with ats_fetch_board'), and explains when to enable include_descriptions. It also calls out that full_descriptions is deliberately absent and that filters/state should be kept stable, giving concrete selection guidance.

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