Overview
The data comes from the BLS public API: Current Population Survey series for the unemployment rate, participation rate, labor force, employed and unemployed, and Current Employment Statistics series for total nonfarm, private and eleven supersector payrolls. A collector runs on the 5th to 8th of each month to catch the first-Friday release and stores one record per month, with the newest also kept as the current report.
BLS publishes counts in thousands, and the API multiplies them by 1,000 so `totalEmployed`, `nonfarmPayrolls.total` and every `bySector` value are whole numbers of people. `summary.unemploymentRate` and `summary.laborForceParticipation` are percentages as published. `summary.jobsChange` is this month's total nonfarm payrolls minus last month's, so it is the headline jobs number, and `jobsChangeDirection` reads growth, decline or unchanged from its sign.
`topSector` is the sector with the largest employment that month; it measures size, not growth, so it rarely changes from month to month. The `formatted` strings abbreviate to K, M or B with a sign on `jobsChange`, so a loss reads -33.0K.
Omit `date` for the latest stored month. A paid `date` takes YYYY-MM; longer values such as 2025-10-01 are cut to their first seven characters. A month that BLS has not released, or that predates the stored series, returns a 404.
Live Test US Employment Grounding Data Source →
The tool
Once your client is connected to the VerveContext server, this appears in its tool list as USEmploymentGroundingData. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "USEmploymentGroundingData",
"arguments": {}
}Connecting
One server URL covers every source in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervecontext": {
"url": "https://api.vervecontext.com/v1/mcp"
}
}
}https://api.vervecontext.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
dateOptionalPremium | string | Optional date in YYYY-MM format for historical lookup. Omit for current data. date |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"yearMonth": "2024-01",
"year": 2024,
"month": 1,
"jobsChangeDirection": "growth",
"summary": {
"unemploymentRate": 3.7,
"laborForceParticipation": 62.5,
"totalEmployed": 161152000,
"totalUnemployed": 6124000,
"laborForce": 167276000,
"jobsChange": 353000
},
"nonfarmPayrolls": {
"total": 157245000,
"private": 133567000
},
"bySector": {
"mining": 645000,
"construction": 8123000,
"manufacturing": 12987000,
"tradeTransportUtilities": 29456000,
"information": 2987000,
"financialActivities": 9234000,
"professionalBusiness": 22876000,
"educationHealth": 25678000,
"leisureHospitality": 16789000,
"otherServices": 5892000,
"government": 23678000
},
"topSector": "Trade, Transport & Utilities",
"formatted": {
"totalEmployed": "161.15M",
"totalUnemployed": "6.12M",
"laborForce": "167.28M",
"jobsChange": "+353.0K",
"nonfarmPayrolls": "157.25M"
}
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
yearMonth | string | 2024-01 | Report date in YYYY-MM format (e.g. 2024-01) |
year | number | 2024 | Year of the employment report |
month | number | 1 | Month of the employment report (1-12) |
jobsChangeDirection | string | growth | Direction of job change: 'growth', 'decline', or 'unchanged' |
summary | object | {…} | Headline labor-market figures: unemployment, participation, employment totals and the monthly jobs change |
summary.unemploymentRate | number | 3.7 | National unemployment rate as percentage |
summary.laborForceParticipation | number | 62.5 | Labor force participation rate as percentage |
summary.totalEmployedPremium | number | 161152000 | Total number of employed persons |
summary.totalUnemployedPremium | number | 6124000 | Total number of unemployed persons |
summary.laborForcePremium | number | 167276000 | Total labor force size (sum of employed and unemployed persons) |
summary.jobsChange | number | 353000 | Net change in nonfarm payroll jobs from the prior month; positive for growth, negative for decline, 0 for no change |
nonfarmPayrolls | object | {…} | Nonfarm payroll employment, total and private sector |
nonfarmPayrolls.totalPremium | number | 157245000 | Total number of employees on nonfarm payrolls |
nonfarmPayrolls.privatePremium | number | 133567000 | Number of employees on private-sector (non-government) nonfarm payrolls |
bySector | object | {…} | Employment by industry sector |
bySector.miningPremium | number | 645000 | Number of persons employed in the mining and logging sector |
bySector.constructionPremium | number | 8123000 | Number of persons employed in the construction sector |
bySector.manufacturingPremium | number | 12987000 | Number of persons employed in the manufacturing sector |
bySector.tradeTransportUtilitiesPremium | number | 29456000 | Number of persons employed in the trade, transportation & utilities sector |
bySector.informationPremium | number | 2987000 | Number of persons employed in the information sector |
bySector.financialActivitiesPremium | number | 9234000 | Number of persons employed in the financial activities sector |
bySector.professionalBusinessPremium | number | 22876000 | Number of persons employed in the professional & business services sector |
bySector.educationHealthPremium | number | 25678000 | Number of persons employed in the education & health services sector |
bySector.leisureHospitalityPremium | number | 16789000 | Number of persons employed in the leisure & hospitality sector |
bySector.otherServicesPremium | number | 5892000 | Number of persons employed in the other services sector |
bySector.governmentPremium | number | 23678000 | Number of persons employed in the government sector |
topSectorPremium | string | Trade, Transport & Utilities | Sector with highest employment count |
formatted | object | {…} | Employment figures as abbreviated strings (e.g. 160.97M) |
formatted.totalEmployedPremium | string | 161.15M | Human-readable format of total employed (e.g 161.15M) |
formatted.totalUnemployedPremium | string | 6.12M | Human-readable format of total unemployed (e.g 6.12M) |
formatted.laborForcePremium | string | 167.28M | Human-readable format of labor force size |
formatted.jobsChangePremium | string | +353.0K | Human-readable format of jobs change (e.g +353.0K) |
formatted.nonfarmPayrollsPremium | string | 157.25M | Human-readable format of nonfarm payrolls |
Why ground on it
A model can produce something that looks like this answer from its training data, and be confidently out of date or simply wrong. This source returns the current value in a shape you can check, which is the difference between an answer you can cite and one you have to hedge.
Point an evaluation at yearMonth: it is the field most worth pinning a claim to, and it is either present and current or absent — never plausibly invented.
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This source is not part of VerveContext. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 2 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Economic Monitoring
- Track monthly employment trends as a key economic indicator
- Labor Market Analysis
- Analyze employment by sector for industry research
- Investment Research
- Factor employment data into economic and market analysis
- Policy Research
- Study employment trends for economic policy research
Other ways to use US Employment Grounding Data
Set up US Employment Grounding Data on VerveContext, or reach the same source a different way. Your VerveContext account and credits work on all of them — one key, one balance.
Related
More in Finance: