MCP tool

who_is_hiring_for

WHEN an agent needs to FIND the companies worth working -- the sourcing step, before it knows which companies exist. Reverse who's-hiring-for {role, geo} search: companies with active reqs matching `role`/`geo`/`since`, deduped by company, keyset-paginated via `cursor`. `role` is free text matched against the posting title, not an id. `geo` is resolved to a stored country before matching; an unresolvable one is an explicit error, never a quietly partial page. `limit` is bounded -- page through the full set with `cursor` instead of raising it. Billed per company returned (~0.10 USD each) -- an empty result bills nothing. role="backend engineer", geo="USA" -> the companies with matching active reqs, each with its pulse and its matched reqs. geo="Atlantis" -> an explicit unresolvable-country error rather than an empty page. No key yet? On the hosted HTTP endpoint the first calls are free: pass `plane_api_key` as an empty string and the search runs on a shared demo credential -- a smaller page, billed to nobody -- until a per-IP limit is reached, after which the answer becomes a signup link whose minted key finishes this exact search. On any other transport a blank key answers with that signup link straight away. Already holding a company_id and only need a yes/no? Use `is_hiring`.

Read from com.reqbeat/hiring-signals v1.0.0 on July 30, 2026 at 12:01 UTC · Refreshed every 3 hours

Connect

Reqbeat Hiring Signals is a remote MCP server over streamable HTTP. Paste this into your client's server config, replacing the placeholder with your own key:

{
  "url": "https://mcp.reqbeat.com/mcp",
  "headers": {
    "X-API-Key": "YOUR_REQBEAT_API_KEY"
  }
}

Endpoint https://mcp.reqbeat.com/mcp, authenticated with the X-API-Key request header.

Input schema

{
  "properties": {
    "role": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Role"
    },
    "geo": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Geo"
    },
    "since": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Since"
    },
    "cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cursor"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    },
    "idempotency_key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Idempotency Key"
    },
    "plane_api_key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Plane Api Key"
    }
  },
  "title": "who_is_hiring_forArguments",
  "type": "object"
}

Calling it

Request

{
  "name": "who_is_hiring_for",
  "arguments": {
    "role": "backend engineer",
    "geo": "USA",
    "limit": 5,
    "plane_api_key": ""
  }
}

Response

Captured against the live server on this build — not written by hand, and not an example. Run the request above and you get the same shape.

{
  "content": [
    {
      "type": "text",
      "text": "{\n  \"status\": \"signup_required\",\n  \"reason\": \"no_api_key\",\n  \"signup_url\": \"/v1/account/email/signup?pending_call=351305e1d897a9e1a85c7760e56851e98b44bae6c2171ee0fd47496ec53cb76a&surface=mcp\",\n  \"pending_call\": \"351305e1d897a9e1a85c7760e56851e98b44bae6c2171ee0fd47496ec53cb76a\",\n  \"message\": \"This tool needs your own plane API key. Sign up at `signup_url` -- the emailed link mints a free key and, when `pending_call` is set, finishes this exact call on it.\"\n}"
    }
  ],
  "isError": false
}