Find companies hiring for a role and geo, qualify them, and watch them for changes.
Connect Remote server
claude mcp add --transport http hiring-signals https://mcp.reqbeat.com/mcp --header "X-API-Key: <X_API_KEY>"
{
"mcpServers": {
"hiring-signals": {
"url": "https://mcp.reqbeat.com/mcp",
"headers": {
"X-API-Key": "<X_API_KEY>"
}
}
}
}
{
"servers": {
"hiring-signals": {
"type": "http",
"url": "https://mcp.reqbeat.com/mcp",
"headers": {
"X-API-Key": "<X_API_KEY>"
}
}
}
}
Settings > Connectors > Add custom connector
URL: https://mcp.reqbeat.com/mcp
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools 15 found in our last check
is_hiringWHEN an agent already holds a company and needs to qualify it -- the cheap gate before spending a richer call. LinkedIn-excluded (ATS tenants plus public job boards and aggregators) and freshness-floored. Takes the integer `company_id` from an earlier result, not a company name…
get_open_reqsThe company's current active reqs, deduped across boards -- LinkedIn-excluded: ATS tenants plus public job boards and aggregators; each row's `boards` names its source. Freshness-floored. Each row's `first_seen` is our first observation of the req, not the employer's posting dat…
hiring_pulseOne number set for one company: how many reqs it opened in the last 30 days, a `velocity` ratio of that against the 30 days before it, a `direction` of up / flat / down between the two, a surge flag, and `momentum` -- postings published per week, a flow rather than a stock. Use…
who_is_hiring_forWHEN an agent needs to FIND the companies worth working -- the sourcing step, before it knows which companies exist. Reverse who's-hiring-for {title, geo} search: companies with active reqs matching `q`/`geo`/`since`, deduped by company, keyset-paginated via `cursor`. `q` is fre…
search_jobsFlat, role-granular job search -- the individual open roles across companies matching `function` / `geo` (country) / `since`, one row per logical req (each with its own `company_id` + `req_key`), LinkedIn-excluded (ATS tenants plus public job boards and aggregators; each row's `…
get_roleOne open role's detail, addressed by the `company_id` + `req_key` pair every `search_jobs` row already carries -- the follow-up call for a role you hold an identifier for, instead of re-pulling the whole company with `get_open_reqs`. Scoped exactly as `search_jobs` is: LinkedIn-…
find_qualified_reqsWHEN an agent already knows its ideal customer profile and wants the matching open roles as rows it can act on: several countries, an industry, a headcount band and title keywords in ONE call, instead of a search followed by a lookup per company. `criteria` takes up to three gro…
pre_action_briefEverything an agent needs before acting on one company, in one bounded round-trip instead of five: the hiring pulse, its top open reqs deduped across boards, first-hire-by-function events, hardest-to-fill (reposted) reqs and ATS-vendor migrations, pre-joined and each section cap…
get_changesThe change feed, not a search: ledger events -- a req opened, re-observed, reposted or closed -- with `event_seq > since`, ascending, plus `next_cursor`. Replay with `next_cursor` instead of polling or re-searching; an empty page bills nothing and one `change` unit is metered pe…
find_companyWHEN you hold a company's website or name but not the `company_id` every company-scoped tool takes (`is_hiring`, `get_open_reqs`, `hiring_pulse`, `pre_action_brief`, `watch_company`). Pass exactly one of `domain` or `name`; both or neither is an error naming that rule. `domain`…
register_webhookRegister the delivery target a watch fires to, and get back the `webhook_endpoint_id` `watch_company` needs -- call this first if you do not already hold one. Idempotent: registering the same `url` twice returns the same id, so retrying is safe and never leaves you with two endp…
watch_companySubscribe to a company's hiring events on a registered webhook -- `webhook_endpoint_id` must belong to the same customer as the authenticated key. Meters one `watch` unit. `event_types` names which events fire it, at least one of: `opened` (a req seen for the first time), `reobs…
list_watchesWHEN you need to see what you are subscribed to -- before adding a watch, or to find the `id` `cancel_watch` takes. Returns your live watches newest first, cancelled ones excluded: {} -> {"watches": [{"id": ..., "company_id": ..., "event_types": [...], "webhook_endpoint_id": ...…
cancel_watchWHEN a watch should stop firing. Takes the `id` `watch_company` returned (or `list_watches` lists): {"watch_id": 42} -> {"id": 42, "canceled": true}. Idempotent -- cancelling a watch you already cancelled succeeds again. An id that is not one of your watches is an error, identic…
write_outcomeWHEN a company you reached through a signal converts -- a reply, a meeting, a closed deal -- report it back. Takes the `company_id`, a short `outcome` label of your choosing (e.g. "meeting_booked"), the `observed_at` time it happened and, optionally, the `req_key` of the role th…
Headers
| Name | Description |
|---|---|
X-API-KeyRequired, secret | Reqbeat plane API key. Required to call a tool: without it a call returns a signup link, not data. |
Details
| Endpoint | https://mcp.reqbeat.com/mcp (Streamable HTTP) |
| First published | 9 Oct 2026 |
| Last updated | 9 Oct 2026 |
| Registry name | com.reqbeat/hiring-signals |
More data and analytics servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
