Resume Booster Job Board
REMOTE · BWHDAZBOTPBLIHDXCMHO.SUPABASE.CO · SCANNED SEP 20
Job search over employers' own hiring systems. Search with no key; a free key opens every read tool.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (request_application). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability78
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4322 tokens (~240/item across 18 items; 15 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
- Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the Resume Booster Job Board MCP server?
Resume Booster Job Board is a hosted endpoint at https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · bwhdazbotpblihdxcmho.supabase.co
claude mcp add --transport http work-resumebooster-jobs 'https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp'
{
"mcpServers": {
"work-resumebooster-jobs": {
"url": "https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp"
}
}
} {
"servers": {
"work-resumebooster-jobs": {
"type": "http",
"url": "https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp"
}
}
} [mcp_servers.work-resumebooster-jobs] url = "https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"work-resumebooster-jobs": {
"type": "remote",
"url": "https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp",
"enabled": true
}
}
} openclaw mcp add work-resumebooster-jobs --url 'https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp' --transport streamable-http
mcp_servers:
work-resumebooster-jobs:
url: "https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp" {
"McpServers": {
"work-resumebooster-jobs": {
"Transport": "http",
"Url": "https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp"
}
}
} assistant mcp add work-resumebooster-jobs -t streamable-http -u 'https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp'
{
"mcpServers": {
"work-resumebooster-jobs": {
"type": "http",
"url": "https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 0
- Tool “employer_hiring_record” rewrote its description, which is the text the model reads security
- Stability: unverified → 0.03 ▲ functional
- Server version: 2026-09-04.7 → 2026-09-04.8 functional
- 18 Sept 26 66
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=supabase.co | CN=WE1,O=Google Trust Services,C=US | 26 Aug 2026 | 24 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | 7c35296a896c0a6f13f8495266045d45 |
| SANs: supabase.co, *.supabase.co | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of bwhdazbotpblihdxcmho.supabase.co. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| co. | present | 7786 | 8 | Verified |
| supabase.co. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains; preload |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp | Verified | 200 | |
| http (plaintext) | http://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp | HTTPS enforced | 301 | https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
application_status Application status ~59
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Most recent N, default 20, max 50. |
| Name | Type | Req | Description |
|---|---|---|---|
| applications | array | – | Prepared packets and their outcome, newest first. |
| error | string | – | Only when this key is not linked to an account. |
| fix | string | – | – |
| queued | array | – | Requests waiting for the hourly preparer, newest first. |
| statusKey | object | – | What each status word means. |
No examples provided.
board_stats Board statistics ~71
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | yes | The category slugs search_jobs accepts. |
| freshnessWindowDays | integer | yes | – |
| note | string | – | – |
| openCompanyBoards | integer|null | yes | Company job boards with at least one servable posting. BOARDS, not employers — read openCompanyBoardsBasis. |
| openCompanyBoardsBasis | string | yes | – |
| refreshedAt | string|null | – | When the cache these figures come from was last written. |
| servablePostings | integer|null | yes | Postings the board serves right now: not withdrawn, dated within the freshness window. Null when the pass did not compute it. |
| trackedPostings | integer|null | – | Every posting the board holds, including ones outside the serving rules. |
| withKey | object | – | Present on an unkeyed call: where a free key comes from and what it adds. |
No examples provided.
check_apply_support Check apply support ~86
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| agentReady | boolean | yes | True when the posting's hiring system is one the apply agent can submit to. |
| applyUrl | string | – | The employer's own apply page. ABSENT when the board could not read the posting. |
| jobId | string | yes | – |
| requirements | array | yes | What applying through the agent needs — or, on a non-supported system, the one line saying the human applies at applyUrl. |
| vendor | string|null | yes | The hiring-system prefix of the id, e.g. 'greenhouse'. Null when the id carries none. |
No examples provided.
check_jobs_open Check which jobs are still open ~164
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | Job ids from search_jobs. Up to 200 per call; anything past that is named in notChecked rather than silently dropped. |
| Name | Type | Req | Description |
|---|---|---|---|
| basis | string | yes | What 'open' means in this answer. |
| checked | integer | – | – |
| closed | array | – | The ids that are no longer on the board. |
| closedCount | integer | – | – |
| notChecked | array | – | – |
| open | object | yes | One entry per id checked. |
| openCount | integer | – | – |
No examples provided.
debug_search Explain a search ~775
Explain WHY a search returns what it does — the board's own decision trace merged with the run's outcome. Shows the parsed query (terms, exclusions, intent-lifts, alias expansions), which filters were applied vs IGNORED and why, the route and retriever chosen, the ranking regime (ranked/ring-merged/deep-page and the seam), plus the real run's route, timings, count basis and any fallback. Use this when a search returns surprising, empty, or mis-ranked results — it turns 'why?' into one call. Takes the SAME arguments as search_jobs. Needs a key or a sign-in.
| Name | Type | Req | Description |
|---|---|---|---|
| agentReadyOnly | boolean | – | Only jobs the apply agent can submit to on the user's behalf. |
| category | string | – | Comma list of category slugs (see board_stats for the live set), max 3. |
| companies | string | – | Scope 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 drop… |
| country | string | – | ISO-2 codes, comma-separated, max 5. E.g. 'US,GB'. |
| department | string | – | Substring match on the employer's own department/team text. |
| employmentType | string | – | Comma list of: full_time, part_time, contract, temporary, internship. |
| excludeAgencies | boolean | – | Hide postings from staffing/recruiting agencies (their job cards carry agency:true). Agencies are served by default; this is an opt-in narrowing. |
| experience | string | – | Comma 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. |
| hasStatedPay | boolean | – | Only postings that state a salary (excludes the ~87% that don't). |
| includeUnstatedPay | boolean | – | WIDENS 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… |
| limit | number | – | Rows per page, 1-60. Default 20. |
| location | string | – | City/state/metro, e.g. 'texas', 'NYC', 'berlin'. |
| maxAgeDays | number | – | Only postings from the last N days (1-30). |
| maxYears | number | – | Only roles asking for at most N years of experience. |
| offset | number | – | Paging offset — pass back the previous response's nextOffset. |
| payBasis | string | – | Restrict to hourly or salaried pay. |
| postedAfter | string | – | ISO-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 fo… |
| query | string | – | Search terms. Supports exclusions: 'engineer -senior'. |
| remote | boolean | – | Only remote-friendly roles. |
| salaryMax | number | – | Annual USD-equivalent salary ceiling. |
| salaryMin | number | – | Annual USD-equivalent salary floor. Note: only ~13% of postings state pay. |
| sort | string | – | Default relevance. |
| vendor | string | – | Comma list of hiring-system vendors (greenhouse, lever, ashby, …), max 8. |
| workMode | string | – | Comma list of: remote, hybrid, onsite. |
| Name | Type | Req | Description |
|---|---|---|---|
| decision | object | yes | The board's own explain trace for this query: parsed terms, filters applied or ignored and why, route, retriever and ranking regime. Its keys are the board's and change as the board's decisions do. |
| outcome | object | yes | – |
No examples provided.
employer_growth Did this employer's board grow? ~266
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.
| Name | Type | Req | Description |
|---|---|---|---|
| companyTokens | array | yes | companyToken values from job cards or search_jobs. Up to 20; more is refused with the count named. |
| Name | Type | Req | Description |
|---|---|---|---|
| asked | integer | – | – |
| bars | object | yes | What the verdict measured against — for reading a row, never for re-judging one. |
| basis | string | yes | – |
| employers | array | yes | One row per token asked, in the order asked. A token with no daily series answers unknown with its reason. |
No examples provided.
employer_hiring_record An employer's hiring record on this board ~433
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.
| Name | Type | Req | Description |
|---|---|---|---|
| companyTokens | array | yes | companyToken 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| asked | integer | – | – |
| basis | string | yes | – |
| employers | array | yes | One row per token asked, in the order asked. A token the board does not carry still answers, as unknown. |
| layoff_basis | string | yes | What layoff_filing is and is not, beside every row's record. |
| layoff_read | string | yes | "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 u… |
| window_days | integer | – | – |
No examples provided.
fetch Fetch (alias of get_job, in ChatGPT's research shape) ~135
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A job id from search. |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| metadata | object | yes | The compact job card without the description; on a dead id, the board's closed/agedOut/notFound record. |
| note | string | – | – |
| text | string | yes | The description, or the board's one-line reason when there is none. |
| title | string|null | yes | Null when there is no posting to return; read metadata.closed / agedOut / notFound. |
| url | string | yes | – |
No examples provided.
fit_resume Score a résumé against the board ~233
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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | – |
| limit | integer | – | Jobs to score, 1-20 (default 20). |
| location | string | – | – |
| query | string | – | Optional job title to search instead of the one read from the résumé. |
| remote | boolean | – | – |
| resumeText | string | yes | The candidate's résumé as plain text (100+ characters). |
| Name | Type | Req | Description |
|---|---|---|---|
| agenciesExcluded | boolean | – | Row-selecting: disclosed agency inventory is hidden from this page. |
| countUnavailable | boolean | – | The board could not count this query exactly — do not report a total. |
| didYouMean | string | – | – |
| excludedTerms | array | – | – |
| hasMore | boolean | – | – |
| ignoredFilters | array | – | Filters the board could NOT apply. Results answer a wider question than was asked. |
| intentFilters | array | – | Words read out of the query as filters. |
| jobs | array | yes | – |
| nextOffset | integer | – | Pass back as `offset` for the next page. |
| note | string | – | – |
| query | string|null | – | What was actually searched. Null when no occupation was recognised. |
| salaryStatedOnly | boolean | – | Row-selecting: this page excludes the ~87% of postings with no stated pay. |
| terms | array | yes | The occupations read out of the résumé, best first. |
| total | integer|null | – | Exact match count. ABSENT with countUnavailable:true when the board refuses to guess. |
No examples provided.
get_job Get one job ~131
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=<id> 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The job id, e.g. 'greenhouse:acme:12345'. |
| Name | Type | Req | Description |
|---|---|---|---|
| agedOut | object | – | Past the 30-day freshness cap. |
| agency | boolean | – | Present and true when the posting comes from a staffing/recruiting agency. |
| agentReady | boolean | – | True when request_application can submit to this hiring system. |
| applyUrl | string|null | – | – |
| category | string|null | – | – |
| closed | object | – | The board watched this posting come down: title, company, closedAt. |
| company | string|null | – | – |
| companyToken | string|null | – | The employer handle; pass it back in search_jobs `companies`. |
| country | string|null | – | ISO-2. |
| department | string | – | The employer's own team name. ABSENT when the posting carries none. |
| description | string | – | The posting's full text, truncated at 24,000 characters with a [truncated] marker. |
| employmentType | string|null | – | – |
| experienceBand | string | – | ABSENT when the posting's seniority could not be read. |
| id | string | – | vendor:employer:externalId — the id every other tool takes. |
| job | null | – | Present and null when there is no posting to return; read `closed` / `agedOut` / `notFound` beside it. |
| location | string|null | – | – |
| minYears | integer | – | Years of experience the posting asks for. ABSENT when it names none (~71%). |
| notFound | boolean | – | No posting with this id — never on this board, or gone long enough that nothing is remembered. |
| note | string | – | – |
| postedAt | string|null | – | The employer's own date, ISO-8601. Null when the feed carries none — never the date we first saw it. |
| recheckedAt | string | – | When the employer's feed was last fetched and still carried this employer's board. |
| salary | string|null | – | The employer's own pay text, verbatim and unparsed. |
| salaryCurrency | string | – | ISO-4217, as stated. ABSENT when unstated. |
| salaryMaxAnnual | number | – | Annual USD-equivalent ceiling. ABSENT when unstated. |
| salaryMinAnnual | number | – | Annual USD-equivalent floor, parsed by the board. ABSENT when the posting states no pay — absence is not zero. |
| salaryPeriod | string | – | The period the employer stated: hour, month, year. ABSENT when unstated (~89% of the board). |
| title | string|null | – | – |
| workMode | string|null | – | Stated or inferred from title/location; null when neither says. |
No examples provided.
get_jobs Get several jobs ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | Job ids from search_jobs. Up to 10 per call — each one is a separate detail read that may fetch the employer's page. |
| includeDescription | boolean | – | Default true. Descriptions are capped at 8,000 characters here; call get_job for the whole text of one. |
| Name | Type | Req | Description |
|---|---|---|---|
| jobs | array | yes | – |
| notFetched | array | – | Ids past the per-call cap — sent, not read. Call again with these. |
| requested | integer | – | – |
| returned | integer | – | – |
| unavailable | array | yes | – |
No examples provided.
key_status This key's limits and powers ~133
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| apply | object | yes | – |
| counted | string | – | – |
| docs | string | – | – |
| features | object | yes | – |
| key | object | yes | – |
| pass | object | yes | The account's pass, if any. Every figure is read off the pass row; nothing here is a constant. |
| quota | object | yes | – |
| rate | object | yes | – |
No examples provided.
request_application Request an application ~192
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.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | The job id from search_jobs. |
| note | string | – | Optional note stored with the request (not sent to the employer). |
| Name | Type | Req | Description |
|---|---|---|---|
| accepted | boolean | yes | False when a gate refused; true when the request is in the agent's queue (or already was). |
| alreadyQueued | boolean | – | Accepted only: this job was already in the queue — nothing duplicated, and on a pass nothing spent. |
| company | string | – | – |
| error | string | – | Refused only: what the gate said. |
| fitPct | number|null | – | Keyword fit of the résumé on file to this posting, 0-100; null when the posting has no text to score. |
| fix | string | – | Refused only: what would change the answer. |
| jobId | string | – | – |
| note | string | – | – |
| passApplicationsLeft | integer|null | – | Accepted on a pass: applications left on it after this one. Null when a subscription funded the request. |
| queueStatus | string | – | With alreadyQueued: the existing row's status. |
| refusedBy | string | – | Refused 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… |
| title | string | – | – |
| warning | string | – | Accepted but flagged: below the release floor, or a system the agent prepares for rather than submits to. |
| whatHappensNext | string | – | – |
No examples provided.
search Search (alias of search_jobs, in ChatGPT's research shape) ~145
An ALIAS of search_jobs in the fixed shape ChatGPT's deep-research and company-knowledge connectors call: one query string in, {results:[{id,title,url}]} out. Every result's id is the job id fetch and every other tool take; url is the employer's own apply page when the board holds one, else the posting's page on the site. Same board, same ranking, same limit as an unkeyed search_jobs (10 rows); the disclosures ride beside the results. Any other client should call search_jobs, which takes every filter.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Free text — title, skills, a place, exclusions with a leading minus. |
| Name | Type | Req | Description |
|---|---|---|---|
| agenciesExcluded | boolean | – | Row-selecting: disclosed agency inventory is hidden from this page. |
| countUnavailable | boolean | – | The board could not count this query exactly — do not report a total. |
| didYouMean | string | – | – |
| excludedTerms | array | – | – |
| hasMore | boolean | – | – |
| ignoredFilters | array | – | Filters the board could NOT apply. Results answer a wider question than was asked. |
| intentFilters | array | – | Words read out of the query as filters. |
| nextOffset | integer | – | Pass back as `offset` for the next page. |
| note | string | – | – |
| results | array | yes | – |
| salaryStatedOnly | boolean | – | Row-selecting: this page excludes the ~87% of postings with no stated pay. |
| total | integer|null | – | Exact match count. ABSENT with countUnavailable:true when the board refuses to guess. |
No examples provided.
search_jobs Search jobs ~778
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agentReadyOnly | boolean | – | Only jobs the apply agent can submit to on the user's behalf. |
| category | string | – | Comma list of category slugs (see board_stats for the live set), max 3. |
| companies | string | – | Scope 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 drop… |
| country | string | – | ISO-2 codes, comma-separated, max 5. E.g. 'US,GB'. |
| department | string | – | Substring match on the employer's own department/team text. |
| employmentType | string | – | Comma list of: full_time, part_time, contract, temporary, internship. |
| excludeAgencies | boolean | – | Hide postings from staffing/recruiting agencies (their job cards carry agency:true). Agencies are served by default; this is an opt-in narrowing. |
| experience | string | – | Comma 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. |
| hasStatedPay | boolean | – | Only postings that state a salary (excludes the ~87% that don't). |
| includeUnstatedPay | boolean | – | WIDENS 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… |
| limit | number | – | Rows per page, 1-60. Default 20. |
| location | string | – | City/state/metro, e.g. 'texas', 'NYC', 'berlin'. |
| maxAgeDays | number | – | Only postings from the last N days (1-30). |
| maxYears | number | – | Only roles asking for at most N years of experience. |
| offset | number | – | Paging offset — pass back the previous response's nextOffset. |
| payBasis | string | – | Restrict to hourly or salaried pay. |
| postedAfter | string | – | ISO-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 fo… |
| query | string | – | Search terms. Supports exclusions: 'engineer -senior'. |
| remote | boolean | – | Only remote-friendly roles. |
| salaryMax | number | – | Annual USD-equivalent salary ceiling. |
| salaryMin | number | – | Annual USD-equivalent salary floor. Note: only ~13% of postings state pay. |
| sort | string | – | Default relevance. |
| vendor | string | – | Comma list of hiring-system vendors (greenhouse, lever, ashby, …), max 8. |
| workMode | string | – | Comma list of: remote, hybrid, onsite. |
| Name | Type | Req | Description |
|---|---|---|---|
| agenciesExcluded | boolean | – | Row-selecting: disclosed agency inventory is hidden from this page. |
| countUnavailable | boolean | – | The board could not count this query exactly — do not report a total. |
| didYouMean | string | – | – |
| excludedTerms | array | – | – |
| hasMore | boolean | – | – |
| ignoredFilters | array | – | Filters the board could NOT apply. Results answer a wider question than was asked. |
| intentFilters | array | – | Words read out of the query as filters. |
| jobs | array | yes | – |
| nextOffset | integer | – | Pass back as `offset` for the next page. |
| salaryStatedOnly | boolean | – | Row-selecting: this page excludes the ~87% of postings with no stated pay. |
| total | integer|null | – | Exact match count. ABSENT with countUnavailable:true when the board refuses to guess. |
No examples provided.
What is the Resume Booster Job Board MCP server?
Resume Booster Job Board is an MCP server listed in the public MCP registry as work.resumebooster/jobs. Job search over employers' own hiring systems. Search with no key; a free key opens every read tool. This page covers its hosted endpoint (https://bwhdazbotpblihdxcmho.supabase.co/functions/v1/agent-mcp).
Is the Resume Booster Job Board MCP server safe to use?
Resume Booster Job Board scores 66 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Resume Booster Job Board MCP server expose?
Resume Booster Job Board exposes 15 tools: search_jobs, get_job, get_jobs, check_jobs_open, check_apply_support, and 10 more. Their descriptions and schemas cost roughly 3,766 tokens of context every time the server is loaded.
Does the Resume Booster Job Board MCP server require authentication?
No. We connected to Resume Booster Job Board without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Resume Booster Job Board MCP server still maintained?
Resume Booster Job Board is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.