# Morning Lead List

> Build a morning call list of companies that just started hiring, from live Reqbeat hiring signals. Use when the user asks who started hiring, wants a prospect list by role/geo/industry, a daily signal pull, surge detection, or "who should I call today".

- Skill: `reqbeat-growth/morning-lead-list` (Agent Skill)
- Install (CLI): `npx skillmds@latest add reqbeat-growth/morning-lead-list`
- Raw SKILL.md: https://api.skillmd.com/api/skills/reqbeat-growth/morning-lead-list/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: reqbeat-growth (https://skillmd.com/u/reqbeat-growth)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/reqbeat-growth/morning-lead-list

---


# Morning lead list

Turn "who started hiring X this week" into a clean, deduplicated lead list with buying-trigger context attached.

## API basics

Base URL `https://api.reqbeat.com`. Auth header: `X-API-Key` (read from `$RB_KEY` or `$REQBEAT_API_KEY`; never print the key). All responses are JSON.

Primary endpoint:

```
GET /v1/reqs/search?role={role}&geo={country}&limit={n}
```

Filters: `role` (free text), `geo` (FULL country name, URL-encoded: `United%20Kingdom`, `United%20States` — full names resolve most reliably), `since`, `industry`, `headcount_band`, `exclude_agencies` (true when selling to employers, false when the targets ARE agencies), `limit`, `cursor` for pagination.

Company detail endpoints (per `company_id`): `/v1/companies/{id}/hiring-pulse`, `/open-reqs`, `/enrichment`, `/first-hire`, `/repost-pain`, `/pre-action-brief`.

Keyless demo (for users without a key yet): POST to `https://mcp.reqbeat.com/mcp` with headers `Content-Type: application/json` AND `Accept: application/json, text/event-stream`, JSON-RPC tool `who_is_hiring_for` with `{role, geo, limit}`.

## Reading the response

Each company row carries a `pulse` object with precomputed intelligence — use it, do not recompute:

- `is_surge: true` + `direction: "up"` = hottest tier, lead with these
- `velocity` and `new_roles_30d` = hiring speed, useful for ranking
- `momentum` = weekly buckets, quote in outreach ("from 8 to 78 open roles in a week")
- `coverage_status: "ats_direct_hit"` = data came straight from the company's ATS, highest confidence
- `matched_reqs[]` = the actual roles: use `raw_title` (human text), `first_seen` (recency claim), `boards` (source), `country_code`

## Output format

Produce a table sorted by heat (surge first, then velocity):

| company | domain | matched role | first_seen | open reqs | surge | why it matters |

Rules:

1. Dedupe by `company_id`. If `company_domain` is null, mark the row `needs-domain` — it cannot be enriched or emailed until resolved (try `/v1/companies/{id}/enrichment`, then manual lookup).
2. `title` can be null; fall back to `raw_title`.
3. Always report the pull timestamp (`as_of`) and the exact query used, so the list is reproducible.
4. Paginate with `next_cursor` until the requested list size or the well runs dry; say which happened.
5. Never fabricate rows. An empty result is an empty result: report it and suggest widening role text or dropping filters one at a time to find which filter zeroed it.

## Prospecting recipes

- **Morning list:** role + geo + limit 25, keep surge/up rows, output table + one-line trigger per row.
- **Agency-in-buying-mode** (selling TO recruitment agencies): search BD/business development/consultant roles with `exclude_agencies=false`, keep companies whose names look like agencies (Recruitment, Search, Talent, Staffing, Resourcing) — an agency hiring revenue people is an agency short of clients.
- **Niche spike:** same role query on consecutive days; diff against yesterday's list (ask for it or store one); new entrants are the "reason to care this morning" rows.
- **Watch instead of poll:** offer `POST /v1/watches` with criteria + `POST /v1/webhooks` when the user wants push instead of a daily pull.

## Budget behavior

Check `/v1/usage` when a session does many calls; tell the user their call count. Prefer one `limit=25` call over five `limit=5` calls.

## Incremental pulls (new since server.json v1.0)

For a true morning diff, the MCP server also ships `get_changes`: a ledger of hiring events with since-cursor pagination. Instead of re-searching and deduplicating, pull only what changed since your last cursor and append it to the list. Store the cursor between runs.

