# BLS Economic Indicators MCP Server (`andrew_avina/bls-economic-mcp`) Actor

Official government economic data in your AI assistant â€” no more hallucinated statistics.

- **URL**: https://apify.com/andrew\_avina/bls-economic-mcp.md
- **Developed by:** [Andrew Avina](https://apify.com/andrew_avina) (community)
- **Categories:** MCP servers, Business
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## bls-economic-mcp

**Official government economic data in your AI assistant â€” no more hallucinated statistics.**

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-brightgreen)](https://apify.com/store)
[![Pricing](https://img.shields.io/badge/Pricing-from%20%240.50%2F1k%20results-blue)](https://apify.com/pricing)
[![Data Source](https://img.shields.io/badge/Data-Bureau%20of%20Labor%20Statistics-orange)](https://www.bls.gov)
[![Category](https://img.shields.io/badge/Category-Economics%20%2F%20Finance-purple)](https://apify.com/store)
[![MCP Ready](https://img.shields.io/badge/MCP-Server%20Ready-red)](https://modelcontextprotocol.io)

---

### What Is This?

When an AI assistant is asked "what is the current unemployment rate?" or "how much has inflation changed over the last year?", it has two options: hallucinate a number from training data, or tell the user it doesn't know. Neither is acceptable for professional use. The Bureau of Labor Statistics publishes the authoritative source for US economic statistics â€” unemployment, CPI, payrolls, wages, inflation, job openings, producer prices, and productivity â€” updated on a fixed monthly release calendar. But BLS's public API requires knowing series IDs, handling registration keys, and writing pagination logic before you get a single data point.

This actor provides a named-indicator interface to BLS time series data â€” request `unemployment_rate` or `cpi_all_urban` by name, or supply raw BLS series IDs directly for advanced use cases. Supports **change calculations** (1-month, 3-month, and 12-month percent change) computed automatically from the series history. Returns structured output with series ID, human-readable label, date, value, and unit â€” ready to display, analyze, or feed a downstream model. All data comes directly from the BLS public API and reflects the most recent published release.

It runs in **Batch mode** for economic data pipelines and dashboards, and **MCP server mode** for live economic data inside Claude Desktop or any MCP-compatible AI assistant. Economists and financial analysts use it to pull current and historical macro data on demand. News organizations use it to verify statistics before publication. AI developers use it to ground their assistants in real, cited government data â€” eliminating hallucinated statistics from economic conversations entirely.

---

### Who Uses This

**Financial Analysts and Portfolio Managers**
You're preparing a macro briefing for an investment committee. You need current unemployment, CPI, core CPI, and nonfarm payrolls â€” all from the most recent BLS release â€” in a single structured pull. You also need 12-month change calculations to show the trend. This actor returns all of it in one batch call, labeled and dated, in under 5 seconds.

**AI Developer / Chatbot Builder**
You're building an AI assistant for a financial services firm. The assistant needs to answer questions about current economic conditions using real data. Without a live data integration, your assistant will either hallucinate or refuse to answer. This actor's MCP interface gives your agent access to official BLS statistics on demand â€” every answer is grounded in the actual published figure, with the date of the release.

**Economists and Research Analysts**
You need 10 years of monthly CPI data to run an inflation analysis, plus JOLTS job openings data for a labor market model. BLS's public data query tool works but requires navigating a multi-step form. This actor returns both series in a single structured call â€” ready to load into Python, R, or a spreadsheet without any data cleaning.

**News Organizations and Economic Journalists**
Your style guide requires that every economic statistic be sourced and verified before publication. When a reporter references "the unemployment rate" or "year-over-year inflation," you need a fast way to check the actual BLS figure and the release date. This actor gives your fact-checking desk a live lookup with source attribution in seconds.

**Enterprise Procurement and Compensation Teams**
You need current Employment Cost Index (ECI) and Producer Price Index (PPI) data to benchmark salary adjustments and vendor contract escalators. These are official BLS series with specific release schedules. This actor gives you the latest values with date stamps â€” no navigating the BLS website, no waiting for an analyst to pull it.

---

### Key Features

| Feature | Detail |
|---|---|
| Named indicators | Request data by common name â€” no BLS series ID required |
| Raw series ID support | Supply any BLS series ID directly for advanced queries |
| Coverage | Unemployment, CPI (all items + core), Nonfarm Payrolls, Average Hourly Earnings, JOLTS (job openings, hires, quits), PPI, ECI, Productivity, Real Earnings |
| Change calculations | 1-month, 3-month, 12-month percent change computed automatically |
| Historical depth | Up to 20 years of monthly data (series-dependent) |
| Multi-series | Fetch up to 25 series in a single call |
| Date filtering | Specify start/end year to limit time range |
| Frequency | Monthly, quarterly, and annual series all supported |
| Data source | BLS Public Data API v2 (official) |
| MCP server mode | Live tool-use in Claude Desktop, Claude Code, any MCP client |
| Batch mode | One-shot pipeline runs for dashboards and reports |
| Unit labels | All values include unit (rate %, thousands of persons, index, $/hour, etc.) |

---

### Quick Start

#### Batch Mode â€” Named Indicators

**Input:**
```json
{
  "mode": "batch",
  "indicators": [
    "unemployment_rate",
    "cpi_all_urban",
    "cpi_core",
    "nonfarm_payrolls",
    "average_hourly_earnings"
  ],
  "calculate_changes": ["1m", "12m"],
  "periods": 13
}
````

**Output:**

```json
[
  {
    "series_id": "LNS14000000",
    "series_label": "Unemployment Rate, Seasonally Adjusted",
    "indicator_name": "unemployment_rate",
    "unit": "percent",
    "latest": {
      "year": "2025",
      "period": "M04",
      "date": "2025-04-01",
      "value": 4.2
    },
    "changes": {
      "change_1m": -0.1,
      "change_1m_pct": -2.33,
      "change_12m": 0.3,
      "change_12m_pct": 7.69
    },
    "history": [
      {"date": "2025-04-01", "value": 4.2},
      {"date": "2025-03-01", "value": 4.3},
      {"date": "2025-02-01", "value": 4.2},
      {"date": "2025-01-01", "value": 4.1}
    ]
  },
  {
    "series_id": "CUSR0000SA0",
    "series_label": "CPI for All Urban Consumers (CPI-U), Seasonally Adjusted",
    "indicator_name": "cpi_all_urban",
    "unit": "index (1982-84=100)",
    "latest": {
      "year": "2025",
      "period": "M04",
      "date": "2025-04-01",
      "value": 316.8
    },
    "changes": {
      "change_1m": 0.2,
      "change_1m_pct": 0.06,
      "change_12m": 9.2,
      "change_12m_pct": 2.99
    }
  }
]
```

#### Batch Mode â€” Raw Series IDs

**Input:**

```json
{
  "mode": "batch",
  "series_ids": ["JTS000000000000000JOL", "JTS000000000000000HIL", "JTS000000000000000QUL"],
  "start_year": 2020,
  "end_year": 2025,
  "calculate_changes": ["12m"]
}
```

#### MCP Server Mode

```json
{
  "mcpServers": {
    "bls-economic": {
      "command": "npx",
      "args": [
        "apify-actor-mcp",
        "--actor-id", "your-username/bls-economic-mcp",
        "--token", "YOUR_APIFY_TOKEN"
      ]
    }
  }
}
```

Then in Claude: *"What is the current US unemployment rate and how has it changed over the last 12 months? Use official BLS data."*

***

### MCP Tools Exposed

#### `get_economic_indicators`

Fetch current values and history for named economic indicators.

```json
{
  "tool": "get_economic_indicators",
  "arguments": {
    "indicators": ["unemployment_rate", "cpi_all_urban", "nonfarm_payrolls"],
    "calculate_changes": ["1m", "3m", "12m"],
    "periods": 24
  }
}
```

#### `get_series`

Fetch any BLS time series by series ID â€” for advanced users who know specific BLS identifiers.

```json
{
  "tool": "get_series",
  "arguments": {
    "series_ids": ["CES0000000001", "LNS14000000"],
    "start_year": 2015,
    "end_year": 2025
  }
}
```

#### `get_inflation_detail`

Return a full inflation breakdown â€” CPI all items, core CPI, shelter, food at home, energy, and new/used vehicles â€” for the current month and 12-month change.

```json
{
  "tool": "get_inflation_detail",
  "arguments": {
    "calculate_changes": ["1m", "12m"]
  }
}
```

#### `get_labor_market_snapshot`

Return a comprehensive labor market summary â€” unemployment, participation rate, payrolls, AHE, JOLTS â€” in a single call optimized for briefing documents.

```json
{
  "tool": "get_labor_market_snapshot",
  "arguments": {
    "periods": 12,
    "calculate_changes": ["1m", "12m"]
  }
}
```

#### `get_historical_series`

Return a long historical series (up to 20 years) for a single named indicator.

```json
{
  "tool": "get_historical_series",
  "arguments": {
    "indicator": "cpi_all_urban",
    "start_year": 2005,
    "end_year": 2025
  }
}
```

***

### Named Indicator Reference

| Indicator Name | BLS Series ID | Description | Frequency |
|---|---|---|---|
| `unemployment_rate` | LNS14000000 | Unemployment Rate, Seasonally Adjusted | Monthly |
| `labor_force_participation` | LNS11300000 | Labor Force Participation Rate, SA | Monthly |
| `cpi_all_urban` | CUSR0000SA0 | CPI-U, All Items, Seasonally Adjusted | Monthly |
| `cpi_core` | CUSR0000SA0L1E | CPI-U, All Items Less Food & Energy, SA | Monthly |
| `cpi_shelter` | CUSR0000SAH1 | CPI-U, Shelter | Monthly |
| `cpi_food_at_home` | CUSR0000SAF11 | CPI-U, Food at Home | Monthly |
| `cpi_energy` | CUSR0000SA0E | CPI-U, Energy | Monthly |
| `ppi_final_demand` | WPUFD49104 | PPI, Final Demand | Monthly |
| `nonfarm_payrolls` | CES0000000001 | Total Nonfarm Payrolls, SA (thousands) | Monthly |
| `private_payrolls` | CES0500000001 | Private Nonfarm Payrolls, SA | Monthly |
| `average_hourly_earnings` | CES0500000003 | Avg Hourly Earnings, Private, SA ($/hr) | Monthly |
| `average_weekly_hours` | CES0500000002 | Avg Weekly Hours, Private, SA | Monthly |
| `jolts_job_openings` | JTS000000000000000JOL | JOLTS Job Openings (thousands) | Monthly |
| `jolts_hires` | JTS000000000000000HIL | JOLTS Hires (thousands) | Monthly |
| `jolts_quits` | JTS000000000000000QUL | JOLTS Quits (thousands) | Monthly |
| `eci_wages` | CIU2010000000000A | Employment Cost Index, Wages & Salaries | Quarterly |
| `productivity_nonfarm` | PRS85006092 | Nonfarm Business Productivity, SA | Quarterly |
| `real_earnings_weekly` | LES1252881500Q | Real Avg Weekly Earnings, SA | Monthly |

***

### Input Schema

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `"batch"` | `"batch"` or `"mcp"` |
| `indicators` | array | â€” | Named indicator strings (see table above) |
| `series_ids` | array | â€” | Raw BLS series IDs (alternative to named indicators) |
| `start_year` | integer | current year - 3 | Start year for historical data |
| `end_year` | integer | current year | End year for historical data |
| `periods` | integer | `13` | Number of periods to return (most recent N) |
| `calculate_changes` | array | `[]` | Change calculations: `"1m"`, `"3m"`, `"12m"` |
| `seasonally_adjusted` | boolean | `true` | Return SA series where available; set `false` for NSA |
| `include_annotations` | boolean | `true` | Include BLS footnotes and preliminary flags |
| `bls_api_key` | string | â€” | Optional BLS API key (increases rate limit from 25 to 500 req/day) |

***

### Use Case Recipes

#### Recipe 1: Monthly Macro Briefing Package

Complete economic snapshot for an investment committee deck:

```json
{
  "indicators": [
    "unemployment_rate",
    "labor_force_participation",
    "nonfarm_payrolls",
    "average_hourly_earnings",
    "cpi_all_urban",
    "cpi_core",
    "jolts_job_openings",
    "ppi_final_demand"
  ],
  "calculate_changes": ["1m", "12m"],
  "periods": 13
}
```

**Outcome:** Complete macro dashboard with current values and 12-month change for every major indicator â€” formatted and ready for a slide deck or executive briefing.

#### Recipe 2: Inflation Component Breakdown

Detailed CPI decomposition for a research note:

```json
{
  "indicators": [
    "cpi_all_urban",
    "cpi_core",
    "cpi_shelter",
    "cpi_food_at_home",
    "cpi_energy"
  ],
  "calculate_changes": ["1m", "3m", "12m"],
  "periods": 25
}
```

**Outcome:** 2-year monthly history with all change metrics â€” shows which components are driving headline inflation. Use `get_inflation_detail` tool in MCP mode for a pre-packaged version.

#### Recipe 3: Labor Market Historical Analysis

10-year monthly unemployment and payrolls for an academic paper:

```json
{
  "indicators": ["unemployment_rate", "nonfarm_payrolls", "labor_force_participation"],
  "start_year": 2015,
  "end_year": 2025,
  "seasonally_adjusted": true
}
```

**Outcome:** 10 years of monthly data spanning COVID, recovery, and post-pandemic tightening â€” ready to import into R or Python for analysis.

#### Recipe 4: Wage Pressure Monitoring

Track Employment Cost Index and Average Hourly Earnings together for compensation benchmarking:

```json
{
  "indicators": ["eci_wages", "average_hourly_earnings", "real_earnings_weekly"],
  "calculate_changes": ["3m", "12m"],
  "periods": 20
}
```

**Outcome:** Wage trend data from two complementary BLS measures â€” use for contract escalator negotiations, salary planning, or macroeconomic research.

***

### Connecting to Claude Desktop / Claude Code

**Claude Desktop:**

```json
{
  "mcpServers": {
    "bls-economic": {
      "command": "npx",
      "args": [
        "apify-actor-mcp",
        "--actor-id", "your-username/bls-economic-mcp",
        "--token", "apify_api_YOURTOKEN"
      ],
      "env": {}
    }
  }
}
```

**Claude Code:**

```json
{
  "mcpServers": {
    "bls-economic": {
      "command": "npx",
      "args": ["apify-actor-mcp", "--actor-id", "your-username/bls-economic-mcp", "--token", "apify_api_YOURTOKEN"]
    }
  }
}
```

**The key benefit in MCP mode:** Claude will stop guessing at economic statistics. Instead of a hallucinated figure from training data, every economic claim is backed by a live BLS pull with the exact release date. Responses read as: *"According to the BLS, the unemployment rate for April 2025 was 4.2%, up 0.3 percentage points from April 2024."* â€” sourced, dated, and accurate.

Sample prompts once connected:

- *"What is the current US unemployment rate?"*
- *"How much has inflation changed over the last 12 months? Break it down by CPI component."*
- *"Pull the last 2 years of JOLTS job openings data."*
- *"What's the current Employment Cost Index and how does it compare to a year ago?"*

***

### Pricing

| Volume | Price |
|---|---|
| First 1,000 results | $0.50 |
| 1,001 â€“ 50,000 results | $0.40/1k |
| 50,000+ results | $0.30/1k |

**Note:** Each named indicator per batch call counts as one result-row per time period returned. A 13-period pull of 8 indicators = 104 rows.

**ROI context:** Bloomberg Economic data terminal access costs $2,000â€“$5,000/month. Economic data subscriptions from Haver Analytics, Refinitiv, or Moody's Analytics run similar figures. This actor provides BLS's own official data â€” the primary source those platforms aggregate â€” at a fraction of the cost. For an AI assistant that answers 50 economic questions per day with live data, monthly cost is under $5.

***

### Data Source and Freshness

- **Primary:** BLS Public Data API v2 â€” `api.bls.gov/publicAPI/v2/timeseries/data/`
- **Data authority:** Bureau of Labor Statistics, US Department of Labor â€” the primary source for US employment, inflation, and wage statistics
- **Update frequency:** Data reflects the most recent BLS published release; the actor queries BLS directly on each request (no cached intermediary)
- **Release calendar:** BLS publishes on a fixed monthly schedule (e.g., CPI releases on the 2nd or 3rd week; Employment Situation on the first Friday of the month)
- **Preliminary flags:** First-release figures are flagged as preliminary where BLS marks them; revisions are reflected as BLS publishes them
- **Series availability:** Not all series extend the full 20 years; series start dates vary by indicator

***

### Technical Notes

- By default, the actor uses the unauthenticated BLS API (25 requests/day limit). For high-volume batch use, supply your own free BLS API key via the `bls_api_key` input field â€” registration is free at [bls.gov/developers](https://www.bls.gov/developers/)
- Named indicators map to the seasonally adjusted series by default; set `seasonally_adjusted: false` to request NSA series (note: not all indicators have NSA variants)
- Change calculations are computed from the series history â€” `1m` is value vs. prior month, `12m` is value vs. same period prior year
- Quarterly series (ECI, Productivity) return fewer data points per year; `periods: 13` for a quarterly series returns ~3 years of data
- The `value` field is always a float in the indicator's native unit (percent, index, thousands, $/hour)
- Preliminary data flags are included in the `annotations` field when `include_annotations: true`
- BLS rate limits apply; the actor implements automatic retry with backoff for 429 responses

***

### Support

- **Issues:** File a GitHub issue on the actor repository
- **Apify Community:** [community.apify.com](https://community.apify.com)
- **BLS Public Data API docs:** [www.bls.gov/developers/api\_signature\_v2.htm](https://www.bls.gov/developers/api_signature_v2.htm)
- **BLS series finder:** [www.bls.gov/data](https://www.bls.gov/data/)
- **BLS release calendar:** [www.bls.gov/schedule/news\_release/releaseCalendar.htm](https://www.bls.gov/schedule/news_release/releaseCalendar.htm)
- **Free BLS API key registration:** [data.bls.gov/registrationEngine](https://data.bls.gov/registrationEngine/)

# Actor input Schema

## `indicators` (type: `array`):

Human-readable indicator names. Supported: unemployment, cpi, inflation, payrolls, wages, labor\_force, employment, cpi\_core, core\_inflation, cpi\_food, cpi\_energy, ppi, eci, job\_openings, jolts, productivity. Leave empty to fetch a full snapshot of all major indicators.

## `seriesIds` (type: `array`):

Direct BLS series IDs for advanced use. Examples: LNS14000000 (national unemployment), LASST060000000000003 (California unemployment), CES3000000001 (manufacturing payrolls). See bls.gov/data for the full series catalog.

## `startYear` (type: `integer`):

First year of data to retrieve. BLS data goes back to the 1940s for some series; most useful series start 1970s-1990s.

## `endYear` (type: `integer`):

Last year of data to retrieve. Set to current year for most recent data.

## `includeCalculations` (type: `boolean`):

When enabled, each data point includes 1-month, 3-month, and 12-month net and percent changes. Useful for trend analysis and YoY/MoM comparisons.

## `blsApiKey` (type: `string`):

Optional BLS API registration key. Without a key: 25 queries/day, max 10 series per query, 20 years of data. With a key (free to register at bls.gov/developers): 500 queries/day, 50 series per query, net/percent change calculations. Register at https://data.bls.gov/registrationEngine/

## `serveMcp` (type: `boolean`):

When enabled, starts an MCP-compatible HTTP server on port 4321. Connect your AI assistant (Claude, GPT, etc.) to http://<actor-run-url>:4321 to query BLS economic data in real time during conversations.

## Actor input object example

```json
{
  "indicators": [],
  "seriesIds": [],
  "startYear": 2019,
  "endYear": 2024,
  "includeCalculations": true,
  "serveMcp": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("andrew_avina/bls-economic-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("andrew_avina/bls-economic-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call andrew_avina/bls-economic-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=andrew_avina/bls-economic-mcp",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BLS Economic Indicators MCP Server",
        "description": "Official government economic data in your AI assistant â€” no more hallucinated statistics.",
        "version": "0.1",
        "x-build-id": "J3CxmYSnCFyN3CX65"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/andrew_avina~bls-economic-mcp/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-andrew_avina-bls-economic-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/andrew_avina~bls-economic-mcp/runs": {
            "post": {
                "operationId": "runs-sync-andrew_avina-bls-economic-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/andrew_avina~bls-economic-mcp/run-sync": {
            "post": {
                "operationId": "run-sync-andrew_avina-bls-economic-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "indicators": {
                        "title": "Named Indicators",
                        "type": "array",
                        "description": "Human-readable indicator names. Supported: unemployment, cpi, inflation, payrolls, wages, labor_force, employment, cpi_core, core_inflation, cpi_food, cpi_energy, ppi, eci, job_openings, jolts, productivity. Leave empty to fetch a full snapshot of all major indicators.",
                        "default": []
                    },
                    "seriesIds": {
                        "title": "Raw BLS Series IDs (Advanced)",
                        "type": "array",
                        "description": "Direct BLS series IDs for advanced use. Examples: LNS14000000 (national unemployment), LASST060000000000003 (California unemployment), CES3000000001 (manufacturing payrolls). See bls.gov/data for the full series catalog.",
                        "default": []
                    },
                    "startYear": {
                        "title": "Start Year",
                        "minimum": 1940,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "First year of data to retrieve. BLS data goes back to the 1940s for some series; most useful series start 1970s-1990s.",
                        "default": 2019
                    },
                    "endYear": {
                        "title": "End Year",
                        "minimum": 1940,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Last year of data to retrieve. Set to current year for most recent data.",
                        "default": 2024
                    },
                    "includeCalculations": {
                        "title": "Include Change Calculations",
                        "type": "boolean",
                        "description": "When enabled, each data point includes 1-month, 3-month, and 12-month net and percent changes. Useful for trend analysis and YoY/MoM comparisons.",
                        "default": true
                    },
                    "blsApiKey": {
                        "title": "BLS Registration Key (Optional)",
                        "type": "string",
                        "description": "Optional BLS API registration key. Without a key: 25 queries/day, max 10 series per query, 20 years of data. With a key (free to register at bls.gov/developers): 500 queries/day, 50 series per query, net/percent change calculations. Register at https://data.bls.gov/registrationEngine/"
                    },
                    "serveMcp": {
                        "title": "MCP Server Mode",
                        "type": "boolean",
                        "description": "When enabled, starts an MCP-compatible HTTP server on port 4321. Connect your AI assistant (Claude, GPT, etc.) to http://<actor-run-url>:4321 to query BLS economic data in real time during conversations.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
