# `bls__bls_list_surveys`

**List BLS Surveys**

List BLS survey programs with their abbreviation codes, full names, and metadata about calculation support and annual averages. Use to discover which survey covers a topic before calling bls_search_series. Optional category filter narrows results to prices, employment, wages, productivity, injuries, or time_use surveys.

- Server: [US Bureau of Labor Statistics](https://gateway.mcpharbor.dev/docs/servers/bls) (`dev.mcpharbor.gateway/bls`)
- Price per call: $0.0001 (100 micro-USD); only tools/call is charged
- Endpoint: `https://gateway.mcpharbor.dev/mcp` or `https://gateway.mcpharbor.dev/mcp/bls`
- Upstream tool: exposed by the provider; called through this gateway as `bls__bls_list_surveys`
- Provider terms: <https://www.bls.gov/developers/termsOfService.htm> (verified 2026-09-19)
- Upstream API documentation: <https://www.bls.gov/developers/>
- Rate limit: 450 requests per 24 hours
- Attribution required: "BLS.gov cannot vouch for the data or analyses derived from these data after the data have been retrieved from BLS.gov", plus cite BLS as source

## Parameters

- `category` (string, optional): Optional category filter. One of: prices, employment, wages, productivity, injuries, time_use. Omit to list all surveys. One of: `prices`, `employment`, `wages`, `productivity`, `injuries`, `time_use`.

## Example call

Request headers and body:

```http
POST /mcp HTTP/1.1
Host: gateway.mcpharbor.dev
Authorization: Bearer <your gateway API key>
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: bls__bls_list_surveys
```

```json
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "_meta": {
      "io.modelcontextprotocol/clientCapabilities": {},
      "io.modelcontextprotocol/clientInfo": {
        "name": "example-agent",
        "version": "1.0.0"
      },
      "io.modelcontextprotocol/protocolVersion": "2026-07-28"
    },
    "arguments": {
      "category": "prices"
    },
    "name": "bls__bls_list_surveys"
  }
}
```

A successful response:

```json
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "_meta": {
      "dev.mcpharbor.gateway/call": {
        "chargedMicroUsd": 100,
        "id": "<the id of this charge>"
      }
    },
    "content": [
      {
        "text": "<whatever the upstream tool returned>",
        "type": "text"
      }
    ],
    "resultType": "complete"
  }
}
```

This call costs $0.0001 (100 micro-USD). Reading this page and listing the tool cost nothing.
The `dev.mcpharbor.gateway/call` record in the result is the receipt for that charge. Each
POST is metered separately, so sending the same call again buys another one: see
[agent.txt](https://gateway.mcpharbor.dev/agent.txt), section 7, before retrying.

## Attribution

This provider requires the attribution below wherever you use results from its tools.
Reproduce it verbatim:

> "BLS.gov cannot vouch for the data or analyses derived from these data after the data have been retrieved from BLS.gov", plus cite BLS as source

## Tool definition

Exactly as `tools/list` returns it (free):

```json
{
  "_meta": {
    "dev.mcpharbor.gateway/pricing": {
      "currency": "USD",
      "pricePerCallMicroUsd": 100
    }
  },
  "annotations": {
    "idempotentHint": true,
    "openWorldHint": false,
    "readOnlyHint": true
  },
  "description": "List BLS survey programs with their abbreviation codes, full names, and metadata about calculation support and annual averages. Use to discover which survey covers a topic before calling bls_search_series. Optional category filter narrows results to prices, employment, wages, productivity, injuries, or time_use surveys.",
  "inputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "properties": {
      "category": {
        "description": "Optional category filter. One of: prices, employment, wages, productivity, injuries, time_use. Omit to list all surveys.",
        "enum": [
          "prices",
          "employment",
          "wages",
          "productivity",
          "injuries",
          "time_use"
        ],
        "type": "string"
      }
    },
    "type": "object"
  },
  "name": "bls__bls_list_surveys",
  "outputSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "anyOf": [
      {
        "not": {
          "required": [
            "error"
          ]
        },
        "required": [
          "surveys",
          "total"
        ]
      },
      {
        "required": [
          "error"
        ]
      }
    ],
    "properties": {
      "categoryFilter": {
        "description": "Category filter applied, if any. Absent when all surveys were listed.",
        "type": "string"
      },
      "error": {
        "additionalProperties": {},
        "description": "Present when the call failed. Absent on success.",
        "properties": {
          "code": {
            "description": "JSON-RPC error code for this failure.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "data": {
            "additionalProperties": {},
            "properties": {
              "reason": {
                "description": "Machine-readable failure mode. Declared by this tool: `invalid_api_key`: BLS rejected the configured BLS_API_KEY as invalid. `service_unavailable`: BLS /surveys API is unreachable or returns a non-200 response. `serialization_failure`: BLS /surveys response cannot be parsed (malformed JSON or unexpected schema). Other values are possible when a failure originates below the handler.",
                "examples": [
                  "invalid_api_key",
                  "service_unavailable",
                  "serialization_failure"
                ],
                "type": "string"
              },
              "recovery": {
                "additionalProperties": {},
                "description": "Actionable next step for the caller.",
                "properties": {
                  "hint": {
                    "type": "string"
                  }
                },
                "required": [
                  "hint"
                ],
                "type": "object"
              },
              "retryable": {
                "description": "Whether retrying may succeed.",
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "message": {
            "description": "Human-readable description of what went wrong.",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "surveys": {
        "description": "BLS survey programs matching the filter, sorted alphabetically by abbreviation.",
        "items": {
          "additionalProperties": false,
          "description": "A BLS survey program entry.",
          "properties": {
            "abbreviation": {
              "description": "Two-character survey abbreviation (e.g. CU, CE, LN).",
              "type": "string"
            },
            "allowsNetChange": {
              "description": "True when the survey supports BLS-computed net change via calculations=true.",
              "type": "boolean"
            },
            "allowsPercentChange": {
              "description": "True when the survey supports BLS-computed percent change via calculations=true.",
              "type": "boolean"
            },
            "hasAnnualAverages": {
              "description": "True when BLS reports that the survey publishes annual average observations. Advisory only: it does not predict whether a given series returns annual-average rows for bls_get_series with annual_average=true — LN, CE, LA and SM report true yet return none. Read annualAverageRows on that response for what actually came back.",
              "type": "boolean"
            },
            "name": {
              "description": "Full survey name (e.g. CPI - All Urban Consumers).",
              "type": "string"
            }
          },
          "required": [
            "abbreviation",
            "name",
            "allowsNetChange",
            "allowsPercentChange",
            "hasAnnualAverages"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "total": {
        "description": "Total surveys returned.",
        "type": "number"
      }
    },
    "type": "object"
  },
  "title": "List BLS Surveys"
}
```
