Skip to content

BLS OEWS

by 1102tools.com · remote · local (pypi) · no sign-in to list tools · v1.1.5 · published by com.1102tools

BLS Occupational Employment and Wage Statistics market wages, bundled; no API key. 8 tools.

Changes · 1

8 tools: 1 change things and 7 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http bls-oews https://bls-oews.1102tools.com/mcp

Findings

Matches of fixed checks, with the text they matched.

1 info
  • The description is 2,102 characters long, over the 2,000 this check looks for.

    Matched text

    description ends: "...e attached footnote says why (annual-only occupation, sample too small)."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

8 tools

Changes things 1Claude Code: ask
  • detect_latest_yearReport the OEWS data year this server answers from.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Report the OEWS data year this server answers from. OEWS releases annually in spring, and this server bundles the current release. Every tool defaults to that year. When BLS publishes a newer release, a new package version bundles it.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Detect Latest Year
Only reads 7Claude Code: allow
  • compare_metrosCompare wages for one occupation across multiple metro areas.No findings

    Why it is in this group

    • The name "compare_metros" says "compare": a word for reading.
    Description, as the server wrote it
    Compare wages for one occupation across multiple metro areas. Pass a list of 5-digit MSA codes (e.g., ['47900', '42660', '12580'] for DC, Seattle, Baltimore). Returns the specified wage measure for each metro. Use list_common_metros() to find codes. datatype: '04' (Annual Mean, default), '13' (Median), '03' (Hourly Mean). Up to 50 metros per call.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Compare Metros
  • compare_occupationsCompare wages across multiple occupations in one location.No findings

    Why it is in this group

    • The name "compare_occupations" says "compare": a word for reading.
    Description, as the server wrote it
    Compare wages across multiple occupations in one location. Pass a list of 6-digit SOC codes. Returns the specified wage measure for each occupation. Use list_common_soc_codes() to find codes. Up to 50 occupations per call.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Compare Occupations
  • get_data_statusReport which OEWS release this server answers from and where it came from.No findings

    Why it is in this group

    • The name "get_data_status" says "get": a word for reading.
    Description, as the server wrote it
    Report which OEWS release this server answers from and where it came from. Returns the bundled data year and release, the BLS source files with their SHA-256 and publication dates, the retrieval date, and row counts. No API key is used or needed.

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Check Bundled OEWS Data
  • get_wage_dataGet wage data for an occupation by SOC code.1 finding

    Why it is in this group

    • The name "get_wage_data" says "get": a word for reading.

    Findings

    • Info

      The description is 2,102 characters long, over the 2,000 this check looks for.

      Matched text

      description ends: "...e attached footnote says why (annual-only occupation, sample too small)."

      What this check looks for
    Description, as the server wrote it
    Get wage data for an occupation by SOC code. This is the primary tool for querying BLS OEWS wage statistics. occ_code: 6-digit SOC code without dash (e.g., '151252' for Software Developers, '131082' for Project Management Specialists). See list_common_soc_codes() for common mappings. scope + area_code: - 'national': no area_code needed (all US) - 'state': area_code = 2-digit state FIPS (e.g., '51' for VA, '11' for DC) - 'metro': area_code = 5-digit MSA code (e.g., '47900' for DC metro, '42660' for Seattle). See list_common_metros() for codes. industry: 6-digit industry code for national-only breakdowns. '000000' = all industries (default). Common: '541000' (Professional, Scientific, and Technical Services), '541500' (Computer Systems Design and Related Services), '999100' (Federal Executive Branch (OEWS Designation)). Industry breakdowns only work with scope='national'. Federal IT staff mostly fall under 15-1299 (Computer Occupations, All Other), so 999100 with 15-1252 rests on few employees. datatypes: list of 2-digit codes. Default uses IGCE set: - '04' = Annual Mean Wage - '13' = Annual Median - '11' = Annual 10th Percentile - '15' = Annual 90th Percentile Hourly percentiles: '03' (Mean), '06' (10th), '07' (25th), '08' (Median), '09' (75th), '10' (90th). Annual percentiles: '11' (10th), '12' (25th), '13' (Median), '14' (75th), '15' (90th). Other: '01' (Employment); '16' (Employment per 1,000 Jobs) and '17' (Location Quotient) exist at state/metro scope only. '02' (Employment RSE) and '05' (Mean Wage RSE) are relative standard errors in percent, a measure of each estimate's reliability. Data year defaults to the OEWS release bundled with this server (get_data_status reports it). Do NOT pass the current calendar year: OEWS publishes about a year in arrears. Other years are rejected. Special values ('-', '*', '#') mean BLS did not publish the cell; the attached footnote says why (annual-only occupation, sample too small).

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: Get Wage Data
  • igce_wage_benchmarkGet wage benchmarks formatted for IGCE development.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get wage benchmarks formatted for IGCE development. Returns annual and hourly wages at the mean and the 10th, 25th, median, 75th, and 90th percentiles (25th/75th are the usual junior/senior anchors), plus estimated burdened hourly rates using the specified burden multiplier range. Hourly figures are BLS's published hourly wages (annual / 2080 only where BLS publishes no hourly wage). Also returns the cell's employment and relative standard errors (reliability) and flags thin estimates. Wages are point-in-time estimates for the OEWS reference month (wage_period in the response), not current rates: escalate them to the period of performance before pricing. BLS wages are BASE wages (no fringe, overhead, G&A, or profit). Multiply by a burden factor to estimate fully-loaded rates: - 1.5x-1.7x: lean contractor - 1.8x-2.2x: mid-range professional services (default) - 2.0x-2.5x: large contractor with clearance overhead - 2.5x-3.0x: high-overhead (SCIF, deployed) The burdened range should roughly align with GSA CALC+ ceiling rates for comparable labor categories. If CALC+ >> burdened BLS, the role may require specialized skills or clearance overhead. Document the gap. Burden multipliers must be positive and burden_low <= burden_high. Reasonable range: 1.3 (lean) to 4.0 (high-overhead/clearance).

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: IGCE Wage Benchmark
  • list_common_metrosList common metro area MSA codes for wage lookups.No findings

    Why it is in this group

    • The name "list_common_metros" says "list": a word for reading.
    Description, as the server wrote it
    List common metro area MSA codes for wage lookups. Use these codes with get_wage_data(scope='metro', area_code=...). Pass the 5-digit MSA code (the tool auto-pads to 7 characters). For the full MSA list: https://www.bls.gov/oes/current/msa_def.htm

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: List Common Metros
  • list_common_soc_codesList common SOC code mappings for federal IT and professional services.No findings

    Why it is in this group

    • The name "list_common_soc_codes" says "list": a word for reading.
    Description, as the server wrote it
    List common SOC code mappings for federal IT and professional services. Use these codes with get_wage_data() and other tools. SOC codes are 6 digits without a dash (e.g., '151252' not '15-1252'). For the full SOC list: https://www.bls.gov/oes/current/oes_stru.htm

    Annotations the server declares

    • destructiveHint: false
    • openWorldHint: false
    • readOnlyHint: true
    • title: List Common SOC Codes

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.5. Values in angle brackets are yours to fill in.

claude mcp add --transport http bls-oews https://bls-oews.1102tools.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__bls-oews__compare_metros",
      "mcp__bls-oews__compare_occupations",
      "mcp__bls-oews__get_data_status",
      "mcp__bls-oews__get_wage_data",
      "mcp__bls-oews__igce_wage_benchmark",
      "mcp__bls-oews__list_common_metros",
      "mcp__bls-oews__list_common_soc_codes"
    ],
    "ask": [
      "mcp__bls-oews__detect_latest_year"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as bls-oews. Review it before you use it.