Skip to main content
Glama

Resume Booster Job Board

Server Details

Job search over employers' own hiring systems. Search with no key; a free key opens every read tool.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
campbellaabbott-rgb/resumebooster-mcp
GitHub Stars
0
Server Listing
Resume Booster Job Board

TDQS

A4.4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search, get details, batch get, status checks, apply, key management, analytics, and debugging. The aliases fetch/search are explicitly documented as compatibility shims, not separate functions. No two tools could be confused for the same action.

Naming Consistency5/5

All tool names follow a consistent lowercase snake_case convention with a clear verb_noun pattern (check_apply_support, get_jobs, request_application) or a noun denoting a specific resource (board_stats, key_status). The two aliases (fetch, search) are intentional and well-documented, not deviations.

Tool Count4/5

15 tools is on the higher end but still reasonable for a job board server that covers search, retrieval, application, key management, employer analytics, and debugging. Each tool has a specific role, and none feel redundant. The count is slightly above the typical sweet spot but not excessive.

Completeness5/5

The tool surface covers the full lifecycle for an agent: search jobs, get details (single/batch), verify availability, check apply eligibility, submit applications, track status, manage keys, and even debug search behavior. Employer analytics and resume fitting add advanced capabilities. No obvious gaps exist for the server's stated purpose.

Available Tools

15 tools
application_statusApplication statusA
Read-onlyIdempotent
Inspect

Status of applications the key owner's agent has requested — queued, submitted, refused (with the refusing gate named), or failed. Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMost recent N, default 20, max 50.

Output Schema

ParametersJSON Schema
NameRequiredDescription
fixNo
errorNoOnly when this key is not linked to an account.
queuedNoRequests waiting for the hourly preparer, newest first.
statusKeyNoWhat each status word means.
applicationsNoPrepared packets and their outcome, newest first.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, openWorld, and non-destructive behavior. The description adds useful context beyond annotations by enumerating the statuses returned and disclosing the auth requirement ('Needs a key or a sign-in'), which is material for invocation.

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?

The description is two short sentences with no filler. The core meaning—what statuses are included—is front-loaded, and the auth note is an essential second sentence.

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?

Given the low parameter count, rich annotations, and existing output schema, the description provides the key information an agent needs: what data is shown and that authentication is required. It stops short of explicitly steering the agent away from sibling tools, but the scope is clear enough for most cases.

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?

There is only one optional parameter, limit, and schema description coverage is 100%, so the schema fully documents it. The description adds no additional meaning about parameter syntax, defaults, or constraints beyond what the schema already provides.

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 clearly identifies the resource as the status of applications requested by the key owner's agent, and lists the possible statuses. It is distinguishable from sibling tools like request_application and key_status, though it lacks an explicit verb such as 'retrieves' or 'returns'.

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?

The description implies when to use this tool—when checking the status of requested applications—and notes the auth prerequisite. However, it does not explicitly contrast it with alternatives like key_status or request_application, so an agent must infer the right context.

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

board_statsBoard statisticsA
Read-onlyIdempotent
Inspect

Live board statistics from cache (cheap to call): servable and tracked posting totals, the count of company job boards with open roles (boards, not employers — one employer can run several), the category set, freshness stamp. Answers with no key too, with a withKey block saying what a free key adds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
withKeyNoPresent on an unkeyed call: where a free key comes from and what it adds.
categoriesYesThe category slugs search_jobs accepts.
refreshedAtNoWhen the cache these figures come from was last written.
trackedPostingsNoEvery posting the board holds, including ones outside the serving rules.
servablePostingsYesPostings the board serves right now: not withdrawn, dated within the freshness window. Null when the pass did not compute it.
openCompanyBoardsYesCompany job boards with at least one servable posting. BOARDS, not employers — read openCompanyBoardsBasis.
freshnessWindowDaysYes
openCompanyBoardsBasisYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, and the description adds valuable behavior beyond these: it is served from cache, cheap to call, includes a freshness stamp, and behaves differently without a key by returning a withKey block. This gives an agent a realistic expectation of cost, freshness, and auth-dependent output.

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?

The description is a single dense, information-rich sentence with no filler. Every clause adds meaningful guidance: cache-backed, cheap, specific metrics, board-vs-employer disambiguation, freshness stamp, and keyless behavior. The key facts are front-loaded and the length is appropriate for the content.

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 zero-parameter tool with an output schema available, the description is complete. It covers the data scope, the source and cost profile, the keyless mode, and the presence of a freshness stamp. There are no missing prerequisites, inputs, or behavioral caveats that an agent would need to invoke this tool correctly.

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?

The tool has zero parameters and the schema confirms this, so parameter semantics are trivially complete. The description does not need to explain any parameter meaning and does not attempt to. A baseline of 4 is appropriate for a parameterless tool.

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 uses a specific verb with a clear resource: 'Live board statistics from cache' and enumerates exactly what is included (posting totals, board counts, category set, freshness stamp). It also disambiguates 'boards, not employers' to prevent a common misinterpretation. This clearly distinguishes board_stats from the sibling employer-oriented stats tools.

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 description gives practical usage context: it is 'cheap to call' and serves data from cache, implying it is appropriate for quick or repeated statistics lookups. It also clarifies that it 'answers with no key too,' which helps an agent know it works without authentication. It does not explicitly name alternative tools or exclusion conditions, but for a zero-parameter read-only stats tool this is sufficiently clear.

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

check_apply_supportCheck apply supportA
Read-onlyIdempotent
Inspect

Whether the apply agent can submit an application for this job on the user's behalf, and what that requires. Jobs on non-supported systems still return their direct applyUrl for the human to use. For whether THIS KEY may apply at all, call key_status — this tool answers about the job, not the key. Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobIdYes
vendorYesThe hiring-system prefix of the id, e.g. 'greenhouse'. Null when the id carries none.
applyUrlNoThe employer's own apply page. ABSENT when the board could not read the posting.
agentReadyYesTrue when the posting's hiring system is one the apply agent can submit to.
requirementsYesWhat applying through the agent needs — or, on a non-supported system, the one line saying the human applies at applyUrl.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description adds useful behavioral context: non-supported systems still return the direct applyUrl for human use, the tool answers about the job rather than the key, and authentication is required. These details are not redundant with the readOnlyHint/idempotentHint/destructiveHint 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?

Three sentences, each earning its place: main purpose, fallback behavior, and alternative-tool routing plus prerequisite. The key scope differentiation is front-loaded and the entire description is free of filler.

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 a rich annotation set and an output schema present, the description covers what is needed to invoke the tool correctly: purpose, scope, job-vs-key distinction, fallback behavior, and authentication requirement. Nothing essential is missing for this level of complexity.

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?

The schema provides no description for the single 'id' parameter, so the description must compensate. The text makes clear that the id refers to the job being checked ('this job'), especially by contrasting with key_status. It does not explicitly state the id's source or format, but for a single-parameter check tool, this is sufficient.

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 clearly states that the tool determines whether the apply agent can submit an application for a specific job on the user's behalf, and explicitly distinguishes it from key_status by noting this tool answers about the job, not the key. This gives a specific verb, resource, and scope that separates it from siblings.

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?

The description explicitly tells the agent when to use key_status instead: 'For whether THIS KEY may apply at all, call key_status.' It also clarifies the tool's scope and prerequisite ('Needs a key or a sign-in'), making the usage context unambiguous.

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

check_jobs_openCheck which jobs are still openA
Read-onlyIdempotent
Inspect

Are these postings still on the board? Answers up to 200 ids in one call — the tool for re-verifying a saved shortlist before acting on it, instead of spending a metered get_job per posting. Returns open:{id:boolean} plus the closed ids, and names the basis of the answer: it reads the board's index (a closed posting is one the employer's feed stopped listing), not the employer's site at this instant, and it is a weaker test than get_job's — read basis before reporting a posting as live to a person. Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesJob ids from search_jobs. Up to 200 per call; anything past that is named in notChecked rather than silently dropped.

Output Schema

ParametersJSON Schema
NameRequiredDescription
openYesOne entry per id checked.
basisYesWhat 'open' means in this answer.
closedNoThe ids that are no longer on the board.
checkedNo
openCountNo
notCheckedNo
closedCountNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds crucial behavioral context beyond these: it reads the board's index rather than the employer's live site, and it is explicitly a weaker test than get_job. This informs the agent of the tool's limitations and the need to check the `basis` field, which annotations alone cannot convey.

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 description is well-structured and front-loaded with the core purpose, but it is slightly verbose. The phrase 'instead of spending a metered get_job per posting' is valuable guidance but could be integrated more compactly. Overall, it earns its place with no fluff, but a tighter phrasing would push it to 5.

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?

The description covers the return format (open:{id:boolean} plus closed ids and basis), the caveat about basis, the prerequisite key/sign-in, and the tool's relationship to get_job. With an output schema present, it still provides essential behavioral context. Nothing an agent needs to decide when and how 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a description for the `ids` parameter (from search_jobs, max 200, notChecked behavior) and has 100% schema description coverage. The description restates the 200-id limit but adds no new semantic detail beyond what the schema specifies. Per the rubric, with high schema coverage, baseline 3 is appropriate.

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 direct question and a clear statement of what the tool does: 'Are these postings still on the board? Answers up to 200 ids in one call'. It identifies the resource (job postings) and the action (checking open status), and explicitly contrasts with the sibling get_job, making differentiation unambiguous.

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?

The description provides explicit when-to-use guidance: 'the tool for re-verifying a saved shortlist before acting on it, instead of spending a metered get_job per posting.' It also flags a key caution: 'it is a weaker test than get_job's — read `basis` before reporting a posting as live to a person,' and states the prerequisite 'Needs a key or a sign-in.' This is thorough and actionable.

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

employer_growthDid this employer's board grow?A
Read-onlyIdempotent
Inspect

Did this employer's board serve more roles than it did 7 days earlier? One row per companyToken (up to 20 per call), judged by the board itself from our own daily observation and passed through untouched: grew, no-growth, or unknown — and unknown ALWAYS carries unknown_reason (a feed bigger than one visit can read, a board too new or too small for a rate, a gap in our own series, a pool that was replaced rather than grown…): an unknown is a reading we could not take, never a no. The bars the verdict uses: at least 10 roles served at the window's start; then BOTH at least 4 more roles AND at least 25% more, on a board tracked for at least 21 days, with every read in the window whole. Per BOARD (a vendor tenant), never summed across an employer's boards; more roles served is roles opened net of roles that came down — not a headcount and not a hire. This tool never ranks employers, and no list of growing employers exists here or anywhere on the board. Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyTokensYescompanyToken values from job cards or search_jobs. Up to 20; more is refused with the count named.

Output Schema

ParametersJSON Schema
NameRequiredDescription
barsYesWhat the verdict measured against — for reading a row, never for re-judging one.
askedNo
basisYes
employersYesOne row per token asked, in the order asked. A token with no daily series answers unknown with its reason.

TDQS

A4.4/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations. It explains that 'unknown' is a result when a reading couldn't be taken, and it details the exact business logic (thresholds, per-board scope, net roles served). This transparency helps the agent understand edge cases and the meaning of outputs.

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 description is dense with useful details but is somewhat long. It front-loads the main question and then provides necessary nuances. While every sentence adds value, the structure could be more scannable, e.g., with bullet-point style, but the prose is efficient overall.

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?

The tool is complex with multiple conditions and edge cases (e.g., unknown_reason), and the description covers all critical aspects: thresholds, board vs. employer, net roles, and the meaning of unknown. The output schema likely details the return format, so return values need no explanation.

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?

The schema already provides a complete description for companyTokens (from job cards or search_jobs, up to 20). The description adds no additional parameter-specific insight beyond what the schema states, but since schema coverage is 100%, a baseline of 3 is appropriate.

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 answers the exact question 'Did this employer's board grow?' by defining the judgment criteria (more roles served, thresholds of 10, 4, and 25%, 21-day tracking). It clearly distinguishes itself from sibling tools like board_stats or employer_hiring_record by focusing on board growth versus other statistics.

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 says this tool 'never ranks employers' and that no list of growing employers exists, which clarifies when not to use it. It does not explicitly name alternative tools for ranking or listing, but the context about scope (per board, not summed) provides clear usage guidance.

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

employer_hiring_recordAn employer's hiring record on this boardA
Read-onlyIdempotent
Inspect

For each employer handle (companyToken, up to 20 per call), that employer's own record on this board: open_roles now, closed_90d (postings we watched come off this board in the last 90 days, re-lists excluded), superseded_90d (the re-lists, a floor), the two medians from the employer's own stated dates (lower bounds), tracking_days (how long we have watched THIS board, capped at 90) and feed_total (what its feed advertised at the last check). A takedown is not a hire — a filled role, a cancelled one and a withdrawn one look identical from here — and it is a record of one BOARD, never summed across an employer's boards, never a headcount. A board with no closure observed answers record:'unknown' with the reason, never a verdict about the employer: on a board bigger than one visit can read, no closure is observable to us until we complete a provable full pass and then watch a role go after it, so silence there is about our instrument. Every row carries its basis. Every row also carries layoff_filing — the newest layoff filing joined to that employer by a hand-curated alias or an exact multi-token name match, a US state WARN notice or an SEC 8-K Item 2.05 disclosure, printed as a filing (filer verbatim, its dates with their bases, count, state or form, link), read hourly from SEC EDGAR and nightly from state notices, null when none qualifies within 90 days, and no part of record or any verdict; layoff_basis on the response says what it is and is not. Pair with employer_growth for the other half of what the site calls "Actively hiring". Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyTokensYescompanyToken values from job cards or search_jobs (a vendor tenant, e.g. 'acme' or 'gici~wd5~Careers'). Up to 20; more is refused with the count named.

Output Schema

ParametersJSON Schema
NameRequiredDescription
askedNo
basisYes
employersYesOne row per token asked, in the order asked. A token the board does not carry still answers, as unknown.
layoff_readYes"ok" when the filing reader answered for every employer; otherwise "unread: <fault>" and every layoff_filing on this response is null for that reason, never because nothing qualified. The record is unaffected either way.
window_daysNo
layoff_basisYesWhat layoff_filing is and is not, beside every row's record.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/idempotent annotations, the description discloses subtle non-obvious behaviors: re-lists are excluded from closed_90d, superseded_90d is a floor, dates are lower bounds, tracking_days is capped at 90, and a takedown is explicitly not a hire. It also explains the 'unknown' record semantics as an instrument limitation rather than an employer verdict, and details layoff_filing's sources, freshness, and scope. This is far more than the annotations alone convey and is consistent with them.

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 description is long, but the complexity of the data semantics justifies most of the length, and the core record fields are front-loaded before the caveats. Some repetition ('Every row carries...' and the 'no part of record or any verdict' clauses) makes it slightly denser than necessary, but every sentence carries real information.

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 complex tool with one parameter and an output schema, the description covers input limits, field semantics, unknown states, data sources, freshness, limitations about what a takedown means, and required authentication. It even names the complementary tool. Nothing essential for selecting or invoking the tool correctly is left unresolved.

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?

The only parameter, companyTokens, is already fully described in the schema with minItems, maxItems, and an example, and schema description coverage is 100%. The description reinforces 'up to 20 per call' and calls companyToken an employer handle, but it does not add materially new parameter semantics beyond what the schema already provides. Baseline 3 is appropriate.

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 names a specific resource (an employer's record on this board) and enumerates the exact fields returned, from open_roles now through feed_total, so an agent knows precisely what the tool produces. It also distinguishes itself from employer_growth by positioning that tool as the other half of 'Actively hiring', which separates the two in purpose.

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 description clearly says 'Pair with employer_growth for the other half of what the site calls Actively hiring', giving a concrete complementary alternative. It also explains when the data is meaningful (board-level, not headcount, not summed across boards), but it does not explicitly enumerate exclusions for sibling tools like board_stats or check_jobs_open.

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

fetchFetch (alias of get_job, in ChatGPT's research shape)A
Read-onlyIdempotent
Inspect

An ALIAS of get_job in the fixed shape ChatGPT's deep-research and company-knowledge connectors call: one id in (from search), {id,title,text,url,metadata} out. text is the posting's full description; metadata carries the job card's structured fields (pay, experience, location, workMode, postedAt, companyToken, agentReady). A dead id answers with what the board knows — a watched closure, an aged-out stub, or not found — in text and metadata, never a stale card. Any other client should call get_job.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesA job id from search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
noteNo
textYesThe description, or the board's one-line reason when there is none.
titleYesNull when there is no posting to return; read metadata.closed / agedOut / notFound.
metadataYesThe compact job card without the description; on a dead id, the board's closed/agedOut/notFound record.

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the annotations (readOnly, openWorld, idempotent), the description discloses important behavior for dead ids: it returns what the board knows (watched closure, aged-out stub, or not found) in text and metadata, never a stale card. This adds meaningful behavioral context not present in the annotations or schema.

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 description is dense but well-structured: it leads with the alias relationship, specifies the exact I/O shape, explains dead-id behavior, and closes with routing guidance. Every sentence adds distinct value, though the density makes it slightly less scannable than a minimal two-sentence description.

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 single-parameter alias tool, the description covers all necessary runtime knowledge: where the id comes from, the exact output structure and fields, behavior for dead ids, and when to use the alternative get_job. With annotations covering safety and an output schema present, nothing critical is missing.

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 coverage is 100% for the single 'id' parameter, so the baseline is 3. The description merely repeats 'from search' without adding format constraints or additional semantics, though it does reinforce the required input source.

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 explicitly states this is an alias of get_job with a fixed input/output shape (one id in, {id,title,text,url,metadata} out), and distinguishes it from the sibling get_job by naming the specific client context (ChatGPT deep-research and company-knowledge connectors) and directing other clients to call get_job. An agent can immediately tell what this tool does and how it differs from siblings.

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?

It explicitly says when to use this alias (when you are one of the ChatGPT connector shapes), the input source (id from search), and when not to use it ('Any other client should call get_job'). This is clear routing guidance with a named alternative.

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

fit_resumeScore a résumé against the boardA
Read-onlyIdempotent
Inspect

Score a résumé against open jobs, for an agent holding a CV: reads the occupation out of resumeText (or uses query if given), searches the board for it, and scores up to 20 results 0-100 with the matched and missing terms per job. PAID — needs a paid API key, exactly like POST /v1/fit on the data API, or a live Agent Pass on the key's account; a free key gets an in-band refusal naming where to upgrade. A null fit means the posting has no stored description to score. Returns the terms it read from the CV so the agent can pick a different one and call again with query. Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoJobs to score, 1-20 (default 20).
queryNoOptional job title to search instead of the one read from the résumé.
remoteNo
countryNo
locationNo
resumeTextYesThe candidate's résumé as plain text (100+ characters).

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsYes
noteNo
queryNoWhat was actually searched. Null when no occupation was recognised.
termsYesThe occupations read out of the résumé, best first.
totalNoExact match count. ABSENT with countUnavailable:true when the board refuses to guess.
hasMoreNo
didYouMeanNo
nextOffsetNoPass back as `offset` for the next page.
excludedTermsNo
intentFiltersNoWords read out of the query as filters.
ignoredFiltersNoFilters the board could NOT apply. Results answer a wider question than was asked.
agenciesExcludedNoRow-selecting: disclosed agency inventory is hidden from this page.
countUnavailableNoThe board could not count this query exactly — do not report a total.
salaryStatedOnlyNoRow-selecting: this page excludes the ~87% of postings with no stated pay.

TDQS

A4/5.0
Behavior4/5

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

The description adds substantial behavioral detail beyond the annotations: it discloses the PAID requirement and the in-band refusal for free keys, explains that a null fit indicates missing stored description, and mentions it returns the CV terms read. These details are not in the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) and enrich agent understanding. While it doesn't cover every edge case, it goes well beyond a bare statement, so a 4 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?

The description is a single dense paragraph but every sentence contributes meaningful information: the core behavior, payment constraints, null semantics, and retry guidance. It is front-loaded with the primary purpose and then elaborates. Though somewhat long, it avoids fluff and is well-structured. It could be trimmed slightly but is not verbose, earning a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters and an output schema, the description covers the core logic but leaves gaps. It explains the main flow (read occupation, search, score) and the output hints (null fit, returned terms), but does not clarify how optional parameters like remote, country, and location influence the search. The presence of an output schema reduces the need to describe return format, but the lack of explanation for these optional parameters, combined with their missing schema descriptions, makes the overall definition incomplete for an agent to confidently use all features. Thus a 3.

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 only 50% (limit and resumeText have descriptions; query, remote, country, location do not). The description clarifies resumeText (reads occupation from it) and query (alternative to resumeText), and implies limit (up to 20 results). However, it does not explain the remote, country, and location parameters at all, leaving them undocumented in both schema and description. Since the coverage is low and the description does not fully compensate for the missing parameters, a 3 is reasonable.

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 clearly states a specific action: 'Score a résumé against open jobs' and elaborates on the mechanism (reads occupation from resumeText or query, searches board, scores 0-100). This differentiates it from sibling tools like search or get_jobs by focusing on matching a CV to jobs, not merely retrieving or listing them. The verb 'score' and resource 'résumé against the board' are unambiguous.

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 description provides clear context: it is intended 'for an agent holding a CV' and explains the prerequisite of a paid key or sign-in. It also implies a usage loop by stating it returns terms so the agent can retry with a query. However, it does not explicitly mention alternatives or when not to use it (e.g., when you just need a job list), though that is implicitly obvious from the purpose. This gives clear context without explicit exclusions, warranting a 4.

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

get_jobGet one jobA
Read-onlyIdempotent
Inspect

Full detail for one job id (from search_jobs), including the complete description text and when the employer's feed last confirmed it open. A resumebooster.work/jobs?job= link's id is this argument (and fetch's, check_apply_support's and request_application's). For several ids at once, use get_jobs — it costs ONE call against the daily quota instead of one per posting. Needs a key or a sign-in. With neither, call fetch with the same id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe job id, e.g. 'greenhouse:acme:12345'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNovendor:employer:externalId — the id every other tool takes.
jobNoPresent and null when there is no posting to return; read `closed` / `agedOut` / `notFound` beside it.
noteNo
titleNo
agencyNoPresent and true when the posting comes from a staffing/recruiting agency.
closedNoThe board watched this posting come down: title, company, closedAt.
salaryNoThe employer's own pay text, verbatim and unparsed.
agedOutNoPast the 30-day freshness cap.
companyNo
countryNoISO-2.
applyUrlNo
categoryNo
locationNo
minYearsNoYears of experience the posting asks for. ABSENT when it names none (~71%).
notFoundNoNo posting with this id — never on this board, or gone long enough that nothing is remembered.
postedAtNoThe employer's own date, ISO-8601. Null when the feed carries none — never the date we first saw it.
workModeNoStated or inferred from title/location; null when neither says.
agentReadyNoTrue when request_application can submit to this hiring system.
departmentNoThe employer's own team name. ABSENT when the posting carries none.
descriptionNoThe posting's full text, truncated at 24,000 characters with a [truncated] marker.
recheckedAtNoWhen the employer's feed was last fetched and still carried this employer's board.
companyTokenNoThe employer handle; pass it back in search_jobs `companies`.
salaryPeriodNoThe period the employer stated: hour, month, year. ABSENT when unstated (~89% of the board).
employmentTypeNo
experienceBandNoABSENT when the posting's seniority could not be read.
salaryCurrencyNoISO-4217, as stated. ABSENT when unstated.
salaryMaxAnnualNoAnnual USD-equivalent ceiling. ABSENT when unstated.
salaryMinAnnualNoAnnual USD-equivalent floor, parsed by the board. ABSENT when the posting states no pay — absence is not zero.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already signal read-only, idempotent, non-destructive behavior. The description adds valuable context beyond those annotations: the exact output contents, the need for a key/sign-in, quota implications, and the fallback path to fetch when unauthenticated.

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?

Three dense sentences, each earning its place. The main purpose is front-loaded, and quota/auth/fallback details are grouped without redundancy.

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 simple one-parameter, read-only tool with an output schema, this description covers sources of the id, what the response contains, auth requirements, quota behavior, and alternatives. 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?

The schema already fully documents the id parameter with an example. The description adds meaningful extra context by explaining that the argument is the same id found in resumobooster.work/jobs links and is shared with fetch, check_apply_support, and request_application.

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: returns full detail for one job id, including description text and feed confirmation time. It clearly distinguishes itself from get_jobs by focusing on a single id rather than many.

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 says when to use this tool (one job id), when to use the alternative instead (several ids -> get_jobs, saving quota), and what to do without auth (call fetch). This is actionable routing guidance.

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

get_jobsGet several jobsA
Read-onlyIdempotent
Inspect

Full detail for up to 10 job ids in ONE call — the shortlist form of get_job. Each id answers with a card plus its description; ids that closed, aged out or were never on this board come back in unavailable with the reason named, so one dead id never costs you the other nine. Set includeDescription=false for cards and freshness only (much smaller, and no vendor fetch). Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesJob ids from search_jobs. Up to 10 per call — each one is a separate detail read that may fetch the employer's page.
includeDescriptionNoDefault true. Descriptions are capped at 8,000 characters here; call get_job for the whole text of one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsYes
returnedNo
requestedNo
notFetchedNoIds past the per-call cap — sent, not read. Call again with these.
unavailableYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive hints. The description adds valuable context: auth requirement, graceful handling of dead ids with reason reporting, and the performance implication of includeDescription=false (no vendor fetch). This goes beyond what annotations provide.

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?

A single paragraph of three sentences, no filler. The purpose is front-loaded, and each sentence earns its place. Slightly dense but efficient; no structural waste.

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?

Given the tool's modest complexity (2 params, output schema provided), the description covers purpose, differentiation, edge cases, and auth. It doesn't detail return structure, but that's adequately handled by the output schema. No critical missing information.

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. The description enriches both parameters: 'ids' are explained via the resilience behavior, and 'includeDescription' gets a usage nuance ('cards and freshness only, much smaller') that complements the schema's character cap note. It adds meaning beyond the schema's dry field descriptions.

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 clearly states the operation: 'Full detail for up to 10 job ids in ONE call' and explicitly frames it as 'the shortlist form of get_job', instantly distinguishing it from the sibling tool. The verb and resource are specific, and the scope is bounded.

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 description implies when to use this tool (multiple job ids) versus get_job (single full description), and gives a concrete usage tip: 'Set includeDescription=false for cards and freshness only'. However, it does not explicitly state exclusions or prerequisites beyond 'Needs a key or a sign-in', so it stops short of full when-not guidance.

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

key_statusThis key's limits and powersA
Read-onlyIdempotent
Inspect

What THIS key is and may do: tier, requests left this minute, calls left today (both including this call), whether fit_resume (and engine=ranked on the data API) answers on it, and whether the apply tools would — with any blocker named: account link, Agent plan or live pass, mandate, résumé on file. On an Agent Pass: when the clock ends and how many applications are left (a pass starts at the first call other than this one). Call it first in a keyed session, and after any 'quota' or 'rate' refusal. Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
docsNo
passYesThe account's pass, if any. Every figure is read off the pass row; nothing here is a constant.
rateYes
applyYes
quotaYes
countedNo
featuresYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond that: counts include the current call, an Agent Pass starts at the first call other than this one, and it names specific blockers. This gives the agent meaningful behavioral detail.

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 description is dense but every clause adds relevant information, and the key purpose is front-loaded. It is somewhat run-on and hard to parse due to dashes and nested clauses, but there is no fluff or repetition beyond the title echo.

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?

Given the output schema exists, the description does not need to explain return values. It covers what the tool reports, when to call it, and access prerequisites. The main limitation is the awkward prose, which may make some details easy to miss, but nothing critical appears absent.

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?

The tool has zero parameters and schema coverage is 100%, so there is nothing to clarify. The description still notes access requirements (key or sign-in), which is useful but not parameter-specific. Baseline for zero-parameter tools is appropriately strong.

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 clearly states what the tool reports: the API key's tier, remaining requests and calls, whether fit_resume and apply tools would work, and blocker details. It differentiates itself from siblings like application_status and check_apply_support by focusing on the key itself rather than job or application state.

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 description explicitly says to call it first in a keyed session and after quota/rate refusals. It does not discuss when not to use it or name alternatives, but the use case is clearly specified.

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

request_applicationRequest an applicationA
DestructiveIdempotent
Inspect

Ask the board's apply agent to submit an application to this job on behalf of the key's owner. Needs an account key (mint one at https://resumebooster.work/agents), an active Agent plan OR a live Agent Pass (bought signed-in at https://resumebooster.work/agents/pass), and a mandate set in Account — call key_status first: it says which of the three is missing, and on a pass how many applications and how much time are left. Every application passes the same gates as the signed-in flow, including the honesty classifier: answers are drawn from the owner's own profile and never invented. Ask the person for a yes on this specific job id before calling. Needs a key or a sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional note stored with the request (not sent to the employer).
jobIdYesThe job id from search_jobs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
fixNoRefused only: what would change the answer.
noteNo
errorNoRefused only: what the gate said.
jobIdNo
titleNo
fitPctNoKeyword fit of the résumé on file to this posting, 0-100; null when the posting has no text to score.
companyNo
warningNoAccepted but flagged: below the release floor, or a system the agent prepares for rather than submits to.
acceptedYesFalse when a gate refused; true when the request is in the agent's queue (or already was).
refusedByNoRefused only: the gate — key, jobId, mandate, resume, plan (no Agent plan and no live pass), pass (the pass has no applications left or its clock ended), posting, scope-country, scope-category, scope-age, scope-salary.
queueStatusNoWith alreadyQueued: the existing row's status.
alreadyQueuedNoAccepted only: this job was already in the queue — nothing duplicated, and on a pass nothing spent.
whatHappensNextNo
passApplicationsLeftNoAccepted on a pass: applications left on it after this one. Null when a subscription funded the request.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations (which declare destructiveHint=true, readOnlyHint=false, etc.), the description discloses that every application passes the same gates as the signed-in flow including an honesty classifier, that answers are drawn from the owner's profile and never invented, and that it requires a key or sign-in. It also hints at consumption by mentioning key_status reports how many applications are left. This goes well beyond the structured fields.

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 description is dense but every sentence carries essential information: the action, prerequisites, the need to call key_status, consent requirement, and the honesty classifier behavior. It's front-loaded with the action and then the required steps. Slightly long, but no filler; a 4 is warranted for being thorough without being verbose.

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?

Given the tool's complexity (mutation, external effects, prerequisites), the description covers everything an agent needs: what to do first (key_status), what to confirm (consent), what resources are required (key/plan/pass/mandate), and the behavioral guarantees (honesty classifier, profile-based answers). With an output schema present, return format is not required. The description is complete for correct invocation.

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?

The schema already provides 100% coverage with descriptions for both parameters: jobId is 'The job id from search_jobs' and note is 'Optional note stored with the request (not sent to the employer).' The description doesn't add extra parameter-specific guidance (e.g., format or usage of jobId), but with full schema coverage, the baseline of 3 is appropriate.

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 states a specific verb and resource: 'Ask the board's apply agent to submit an application to this job on behalf of the key's owner.' This clearly distinguishes it from siblings like application_status or check_apply_support, which are read/check tools. The core action is unambiguous.

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?

The description provides explicit pre-call steps: 'call key_status first' to determine missing prerequisites, and 'Ask the person for a yes on this specific job id before calling.' It also enumerates required conditions (key, active plan/pass, mandate), effectively telling the agent when and how to use the tool. It doesn't name alternatives but gives a clear workflow.

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

search_jobsSearch jobsA
Read-onlyIdempotent
Inspect

Search the live job board (postings pulled directly from employers' own hiring systems, 30-day freshness cap; board_stats carries the live totals). Returns compact job cards — including the board's own parsed pay (salaryMinAnnual/salaryMaxAnnual/salaryPeriod), experience band and minYears, so pay and seniority never have to be re-read out of prose — plus the board's honesty disclosures: exact totals when knowable (countUnavailable otherwise), filters it could not honour (ignoredFilters), words it read as filters (intentFilters), and spelling suggestions. Set agentReadyOnly=true to see only jobs the apply agent can submit to directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoDefault relevance.
limitNoRows per page, 1-60. Default 20.
queryNoSearch terms. Supports exclusions: 'engineer -senior'.
offsetNoPaging offset — pass back the previous response's nextOffset.
remoteNoOnly remote-friendly roles.
vendorNoComma list of hiring-system vendors (greenhouse, lever, ashby, …), max 8.
countryNoISO-2 codes, comma-separated, max 5. E.g. 'US,GB'.
categoryNoComma list of category slugs (see board_stats for the live set), max 3.
locationNoCity/state/metro, e.g. 'texas', 'NYC', 'berlin'.
maxYearsNoOnly roles asking for at most N years of experience.
payBasisNoRestrict to hourly or salaried pay.
workModeNoComma list of: remote, hybrid, onsite.
companiesNoScope to specific employers: a comma list of companyToken values from job cards (or from the site's employer pages). An employer the board does not carry simply matches nothing; tokens the board drops are named in ignoredFilters.
salaryMaxNoAnnual USD-equivalent salary ceiling.
salaryMinNoAnnual USD-equivalent salary floor. Note: only ~13% of postings state pay.
departmentNoSubstring match on the employer's own department/team text.
experienceNoComma list of seniority bands the POSTING asks for: entry, mid, senior, expert. Rows whose band could not be read are excluded — use maxYears for the candidate's own side of the question.
maxAgeDaysNoOnly postings from the last N days (1-30).
postedAfterNoISO-8601 instant; only postings the EMPLOYER dated after it. Undated rows fall out of this window (unlike maxAgeDays, which falls back to when the board first saw a posting), so this is the strict form of 'new'.
hasStatedPayNoOnly postings that state a salary (excludes the ~87% that don't).
agentReadyOnlyNoOnly jobs the apply agent can submit to on the user's behalf.
employmentTypeNoComma list of: full_time, part_time, contract, temporary, internship.
excludeAgenciesNoHide postings from staffing/recruiting agencies (their job cards carry agency:true). Agencies are served by default; this is an opt-in narrowing.
includeUnstatedPayNoWIDENS an active salaryMin/salaryMax band to also admit postings that state no pay at all. Inert with no band set (unpriced rows are already included). The response says salaryStatedOnly when a band is narrowing without it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsYes
totalNoExact match count. ABSENT with countUnavailable:true when the board refuses to guess.
hasMoreNo
didYouMeanNo
nextOffsetNoPass back as `offset` for the next page.
excludedTermsNo
intentFiltersNoWords read out of the query as filters.
ignoredFiltersNoFilters the board could NOT apply. Results answer a wider question than was asked.
agenciesExcludedNoRow-selecting: disclosed agency inventory is hidden from this page.
countUnavailableNoThe board could not count this query exactly — do not report a total.
salaryStatedOnlyNoRow-selecting: this page excludes the ~87% of postings with no stated pay.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark this read-only and non-destructive, so the description's extra detail is additive, not redundant. It discloses the 30-day freshness cap, parsed pay/experience fields so prose parsing is unnecessary, and honesty mechanics (countUnavailable when totals are unknowable, ignoredFilters, intentFilters, spelling suggestions). This gives an agent a realistic model of response behavior not inferable from schema alone.

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?

The three-sentence description is dense but each clause earns its place: core purpose and source, return-card content and honesty disclosures, and the agentReadyOnly flag. It is front-loaded with the search action before going into output details, and it avoids repeating the schema.

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 24-parameter tool with no required parameters, an output schema, and read-only annotations, the description supplies the missing operational context: data freshness, sourcing, strictness of filters (ignoredFilters/intentFilters), and the agent-ready subset. Nothing an agent needs in order to decide whether to call this tool is absent.

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 even with minimal parameter prose in the tool description. The description adds useful context for output fields like salaryMinAnnual/salaryMaxAnnual and agentReadyOnly, but it does not explain parameter values beyond what each schema property already says.

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, resource, and scope: 'Search the live job board', with source ('employers' own hiring systems') and a 30-day freshness cap. It also names the related sibling board_stats as the carrier of live totals, which helps an agent tell this tool apart from other board tools. The return-card and disclosure content further clarify exactly what this tool produces.

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 description makes the use case clear: search the live job board and get compact job cards, with an agentReadyOnly flag for direct submittable jobs. It notes that board_stats carries live totals, a useful pointer to an alternative for aggregate numbers. It does not, however, explicitly contrast search_jobs with sibling search/get_jobs/debug_search.

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
    • Changedemployer_hiring_record5 fields changed
      • addedOutput schema / properties / employers / items / properties / layoff_filing
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "The newest qualifying layoff filing joined to this employer, or null when none qualifies. A fact about the employer on one date, beside the record and no part of it.",
        +  "properties": {
        +    "effective_date": {
        +      "description": "The date the WARN notice gives for the separations; null when it gives none or on an SEC filing.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "event_basis": {
        +      "type": "string"
        +    },
        +    "event_date": {
        +      "description": "The filing's own date: the WARN notice date or the 8-K report date. Named by event_basis.",
        +      "type": "string"
        +    },
        +    "event_type": {
        +      "description": "What the WARN notice says it is, as the state classifies it; null on an SEC filing.",
        +      "enum": [
        +        "closure",
        +        "layoff",
        +        "relocation",
        +        "unknown",
        +        null
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "filer": {
        +      "description": "The employer as the source names it, verbatim — never the board's own display name.",
        +      "type": "string"
        +    },
        +    "form": {
        +      "description": "The SEC form (an amendment never appears); null on a WARN notice.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "headcount": {
        +      "description": "Positions the 8-K states, as parsed; null when it states none or on a WARN notice.",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "more_n": {
        +      "description": "Further qualifying filings for this employer beyond this newest one.",
        +      "type": "integer"
        +    },
        +    "pct": {
        +      "description": "Workforce share the 8-K states, as parsed; null when it states none or on a WARN notice.",
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "public_basis": {
        +      "type": "string"
        +    },
        +    "public_date": {
        +      "description": "When it became public: the SEC file date or the state's received/processed/posted stamp. Named by public_basis.",
        +      "type": "string"
        +    },
        +    "read_at": {
        +      "description": "When we read it. Our stamp, never a date basis for the filing.",
        +      "type": "string"
        +    },
        +    "relation": {
        +      "description": "filer: the filer is this board's employer. subsidiary_site: the filer is the parent company of this board's employer.",
        +      "enum": [
        +        "filer",
        +        "subsidiary_site"
        +      ],
        +      "type": "string"
        +    },
        +    "site": {
        +      "description": "The notice's site as the state lists it; null when not stated or on an SEC filing.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source": {
        +      "description": "state_warn: a US state WARN notice. sec_8k_205: an SEC 8-K Item 2.05 disclosure.",
        +      "enum": [
        +        "sec_8k_205",
        +        "state_warn"
        +      ],
        +      "type": "string"
        +    },
        +    "source_name": {
        +      "description": "SEC EDGAR, or the state agency as it names itself.",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "The filing itself, at the source.",
        +      "type": "string"
        +    },
        +    "state": {
        +      "description": "Two-letter state of a WARN notice; null on an SEC filing.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "workers": {
        +      "description": "Positions the WARN notice states at that site. Null on an SEC filing — never zero.",
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "relation",
        +    "filer",
        +    "event_date",
        +    "event_basis",
        +    "public_date",
        +    "public_basis",
        +    "state",
        +    "site",
        +    "workers",
        +    "event_type",
        +    "effective_date",
        +    "pct",
        +    "headcount",
        +    "form",
        +    "source_url",
        +    "source_name",
        +    "read_at",
        +    "more_n"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / employers / items / required
        Previous value: -[
        -  "company_token",
        -  "record",
        -  "basis"
        -]New value: +[
        +  "company_token",
        +  "record",
        +  "basis",
        +  "layoff_filing"
        +]
      • addedOutput schema / properties / layoff_basis
        Added value: +{
        +  "description": "What layoff_filing is and is not, beside every row's record.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / layoff_read
        Added value: +{
        +  "description": "\"ok\" when the filing reader answered for every employer; otherwise \"unread: <fault>\" and every layoff_filing on this response is null for that reason, never because nothing qualified. The record is unaffected either way.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "employers",
        -  "basis"
        -]New value: +[
        +  "employers",
        +  "basis",
        +  "layoff_basis",
        +  "layoff_read"
        +]
  2. 15 tool updates
    • First observedapplication_status
    • First observedboard_stats
    • First observedcheck_apply_support
    • First observedcheck_jobs_open
    • First observeddebug_search
    • First observedemployer_growth
    • First observedemployer_hiring_record
    • First observedfetch
    • First observedfit_resume
    • First observedget_job
    • First observedget_jobs
    • First observedkey_status
    • First observedrequest_application
    • First observedsearch
    • First observedsearch_jobs

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables real-time job search across thousands of companies' open roles from Greenhouse, Lever, Ashby, and SmartRecruiters, with full-text filtering and company-specific queries, no API key required.
    2
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables searching live, normalized job postings from 30+ ATS feeds and job boards, with tools for job search, source listing, pricing plans, and Upwork jobs.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Live tech-hiring intelligence for AI agents. Search 130K+ open jobs collected daily from ~500 tech companies' own career sites — plus company hiring profiles, tech stacks, salary benchmarks, and skill trends. Five tools work with no account.
    31
    122 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural-language job search and aggregation from multiple recruitment websites with zero configuration, providing filtered results and standardized output for AI assistants.
    26 npm
    ISC
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.