{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T19:02:17.508Z","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews","markdownUrl":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews.md","server":{"slug":"com-1102tools-bls-oews-mcp","name":"BLS OEWS","registryName":"com.1102tools/bls-oews-mcp","description":"BLS Occupational Employment and Wage Statistics market wages, bundled; no API key. 8 tools.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"bls-oews","type":"remote","identifier":"https://bls-oews.1102tools.com/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews","version":"1.1.6","transport":null,"scoredAt":"2026-11-05T03:02:10.312Z"},"score":{"total":69,"tier":"medium","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":69},{"date":"2026-11-04","total":69},{"date":"2026-11-03","total":68},{"date":"2026-11-02","total":68},{"date":"2026-11-01","total":67},{"date":"2026-10-31","total":67},{"date":"2026-10-30","total":66},{"date":"2026-10-29","total":66},{"date":"2026-10-28","total":65},{"date":"2026-10-27","total":65},{"date":"2026-10-26","total":64},{"date":"2026-10-25","total":64},{"date":"2026-10-24","total":63},{"date":"2026-10-23","total":63},{"date":"2026-10-22","total":62},{"date":"2026-10-21","total":62}]},"categories":[{"name":"Endpoint Security","score":63,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.","HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.none_no_destructive","args":{}},{"code":"https.inconclusive","args":{"reason":"plaintext_status","status":"405"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":100,"verdict":"pass","reasons":["Verified streamable-http transport via a live MCP handshake."],"codes":[{"code":"transport.verified","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":62,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 1569 tokens (~196/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"196","items":"8","tools":"8","tokens":"1569","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":50,"verdict":"partial","reasons":["Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"15"}}]},{"name":"Tool Coverage","score":71,"verdict":"fail","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","0% of tool parameters carry a description.","Structured output schemas are declared (100% of tools); any adoption earns full credit."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"0"}},{"code":"toolquality.output_present","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"8"}},{"code":"toolsafety.manipulation_clean","args":{"units":"8","judged":"8"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a current MCP spec version (2026-07-28)."],"codes":[{"code":"protocol.current","args":{"version":"2026-07-28"}}]}],"inconclusive":["HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement."],"malware":[],"components":[{"slug":"bls-oews","type":"remote","identifier":"https://bls-oews.1102tools.com/mcp","withdrawn":false,"score":69,"current":true,"url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews","markdownUrl":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews.md"},{"slug":"bls-oews-mcp","type":"pypi","identifier":"bls-oews-mcp","withdrawn":false,"score":91,"current":false,"url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews-mcp","markdownUrl":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews-mcp.md"}],"facts":[{"label":"Endpoint","value":"https://bls-oews.1102tools.com/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.1.6"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"compare_metros","title":null,"description":"Compare wages for one occupation across multiple metro areas.\n\n    Pass a list of 5-digit MSA codes (e.g., ['47900', '42660', '12580']\n    for DC, Seattle, Baltimore). Returns the specified wage measure for\n    each metro. Use list_common_metros() to find codes.\n\n    datatype: '04' (Annual Mean, default), '13' (Median), '03' (Hourly Mean).\n\n    Up to 50 metros per call.","inputs":[{"name":"datatype","type":null,"required":false,"description":null},{"name":"metro_codes","type":"array","required":true,"description":null},{"name":"occ_code","type":null,"required":true,"description":null},{"name":"year","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":134},{"name":"compare_occupations","title":null,"description":"Compare wages across multiple occupations in one location.\n\n    Pass a list of 6-digit SOC codes. Returns the specified wage measure\n    for each occupation. Use list_common_soc_codes() to find codes.\n\n    Up to 50 occupations per call.","inputs":[{"name":"area_code","type":null,"required":false,"description":null},{"name":"datatype","type":null,"required":false,"description":null},{"name":"occ_codes","type":"array","required":true,"description":null},{"name":"scope","type":"string","required":false,"description":null},{"name":"year","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":92},{"name":"detect_latest_year","title":null,"description":"Report the OEWS data year this server answers from.\n\n    OEWS releases annually in spring, and this server bundles the current\n    release. Every tool defaults to that year. When BLS publishes a newer\n    release, a new package version bundles it.","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":63},{"name":"get_data_status","title":null,"description":"Report which OEWS release this server answers from and where it came from.\n\n    Returns the bundled data year and release, the BLS source files with\n    their SHA-256 and publication dates, the retrieval date, and row counts.\n    No API key is used or needed.","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":67},{"name":"get_wage_data","title":null,"description":"Get wage data for an occupation by SOC code.\n\n    This is the primary tool for querying BLS OEWS wage statistics.\n\n    occ_code: 6-digit SOC code without dash (e.g., '151252' for Software\n    Developers, '131082' for Project Management Specialists). See\n    list_common_soc_codes() for common mappings.\n\n    scope + area_code:\n    - 'national': no area_code needed (all US)\n    - 'state': area_code = 2-digit state FIPS (e.g., '51' for VA, '11' for DC)\n    - 'metro': area_code = 5-digit MSA code (e.g., '47900' for DC metro,\n      '42660' for Seattle). See list_common_metros() for codes.\n\n    industry: 6-digit industry code for national-only breakdowns.\n    '000000' = all industries (default). Common:\n    '541000' (Professional, Scientific, and Technical Services),\n    '541500' (Computer Systems Design and Related Services),\n    '999100' (Federal Executive Branch (OEWS Designation)).\n    Industry breakdowns only work with scope='national'. Federal IT staff mostly fall under 15-1299 (Computer Occupations, All\n    Other), so 999100 with 15-1252 rests on few employees.\n\n    datatypes: list of 2-digit codes. Default uses IGCE set:\n    - '04' = Annual Mean Wage\n    - '13' = Annual Median\n    - '11' = Annual 10th Percentile\n    - '15' = Annual 90th Percentile\n    Hourly percentiles: '03' (Mean), '06' (10th), '07' (25th), '08'\n    (Median), '09' (75th), '10' (90th). Annual percentiles: '11' (10th),\n    '12' (25th), '13' (Median), '14' (75th), '15' (90th). Other: '01'\n    (Employment); '16' (Employment per 1,000 Jobs) and '17' (Location\n    Quotient) exist at state/metro scope only.\n\n    '02' (Employment RSE) and '05' (Mean Wage RSE) are relative standard\n    errors in percent, a measure of each estimate's reliability.\n\n    Data year defaults to the OEWS release bundled with this server\n    (get_data_status reports it). Do NOT pass the current calendar year:\n    OEWS publishes about a year in arrears. Other years are rejected.\n\n    Special values ('-', '*', '#') mean BLS did no…","inputs":[{"name":"area_code","type":null,"required":false,"description":null},{"name":"datatypes","type":null,"required":false,"description":null},{"name":"industry","type":null,"required":false,"description":null},{"name":"occ_code","type":null,"required":true,"description":null},{"name":"scope","type":"string","required":false,"description":null},{"name":"year","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":630},{"name":"igce_wage_benchmark","title":null,"description":"Get wage benchmarks formatted for IGCE development.\n\n    Returns annual and hourly wages at the mean and the 10th, 25th, median,\n    75th, and 90th percentiles (25th/75th are the usual junior/senior\n    anchors), plus estimated burdened hourly rates using the specified\n    burden multiplier range. Hourly figures are BLS's published hourly\n    wages (annual / 2080 only where BLS publishes no hourly wage). Also\n    returns the cell's employment and relative standard errors\n    (reliability) and flags thin estimates.\n\n    Wages are point-in-time estimates for the OEWS reference month\n    (wage_period in the response), not current rates: escalate them to the\n    period of performance before pricing.\n\n    BLS wages are BASE wages (no fringe, overhead, G&A, or profit).\n    Multiply by a burden factor to estimate fully-loaded rates:\n    - 1.5x-1.7x: lean contractor\n    - 1.8x-2.2x: mid-range professional services (default)\n    - 2.0x-2.5x: large contractor with clearance overhead\n    - 2.5x-3.0x: high-overhead (SCIF, deployed)\n\n    The burdened range should roughly align with GSA CALC+ ceiling rates\n    for comparable labor categories. If CALC+ >> burdened BLS, the role\n    may require specialized skills or clearance overhead. Document the gap.\n\n    Burden multipliers must be positive and burden_low <= burden_high.\n    Reasonable range: 1.3 (lean) to 4.0 (high-overhead/clearance).","inputs":[{"name":"area_code","type":null,"required":false,"description":null},{"name":"burden_high","type":"number","required":false,"description":null},{"name":"burden_low","type":"number","required":false,"description":null},{"name":"occ_code","type":null,"required":true,"description":null},{"name":"scope","type":"string","required":false,"description":null},{"name":"year","type":null,"required":false,"description":null}],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":414},{"name":"list_common_metros","title":null,"description":"List common metro area MSA codes for wage lookups.\n\n    Use these codes with get_wage_data(scope='metro', area_code=...).\n    Pass the 5-digit MSA code (the tool auto-pads to 7 characters).\n\n    For the full MSA list: https://www.bls.gov/oes/current/msa_def.htm","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":83},{"name":"list_common_soc_codes","title":null,"description":"List common SOC code mappings for federal IT and professional services.\n\n    Use these codes with get_wage_data() and other tools. SOC codes are\n    6 digits without a dash (e.g., '151252' not '15-1252').\n\n    For the full SOC list: https://www.bls.gov/oes/current/oes_stru.htm","inputs":[],"outputs":[],"hasOutputSchema":true,"hasExamples":false,"tokenEstimate":86}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T03:02:10.000Z","track":"remote","endpoint":"https://bls-oews.1102tools.com/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=1102tools.com","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-26T21:59:57Z","notAfter":"2026-12-25T22:59:51Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"bls-oews.1102tools.com.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"com.","outcome":"verified","label":"Verified"},{"zone":"1102tools.com.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"none","label":"No authorisation required","gate":null,"gateLabel":null,"status":200,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":405},"transports":[{"transport":"streamable-http","outcome":"verified","label":"Verified","status":200,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-21","recent":[{"id":"chg_01a1a482-03ec-7ba9-b98b-e907857b1777","kind":"score.total_changed","summary":"Trust score (68 → 69)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a1a482-03ec-7ba9-b98b-e907857b1777"},{"id":"chg_01a19a35-ac04-73af-abcb-bd26bb52f36d","kind":"score.total_changed","summary":"Trust score (67 → 68)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a19a35-ac04-73af-abcb-bd26bb52f36d"},{"id":"chg_01a18fe8-8d07-7073-99e1-5334666652c6","kind":"score.total_changed","summary":"Trust score (66 → 67)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a18fe8-8d07-7073-99e1-5334666652c6"},{"id":"chg_01a1859c-3555-7899-8793-882895c4e32b","kind":"score.total_changed","summary":"Trust score (65 → 66)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a1859c-3555-7899-8793-882895c4e32b"},{"id":"chg_01a17f97-98fa-7406-b6d7-dabc81b441e9","kind":"server.version_changed","summary":"Server version (1.1.5 → 1.1.6)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a17f97-98fa-7406-b6d7-dabc81b441e9"},{"id":"chg_01a17b4f-abf6-7281-9caa-be571e6aa570","kind":"score.total_changed","summary":"Trust score (64 → 65)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a17b4f-abf6-7281-9caa-be571e6aa570"},{"id":"chg_01a17102-f342-7454-9510-3d758025e92d","kind":"score.total_changed","summary":"Trust score (63 → 64)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-25","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a17102-f342-7454-9510-3d758025e92d"},{"id":"chg_01a166c2-eed7-7c69-a559-1eae83f92957","kind":"score.total_changed","summary":"Trust score (62 → 63)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a166c2-eed7-7c69-a559-1eae83f92957"},{"id":"chg_01a1619c-ea1d-7168-b5c4-a66d37234253","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a1619c-ea1d-7168-b5c4-a66d37234253"},{"id":"chg_01a1607a-bb70-7282-a421-834dde70c76c","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews#chg-chg_01a1607a-bb70-7282-a421-834dde70c76c"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews/changelog.json"},"links":{"html":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews","markdown":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews.md","changelogJson":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews/changelog.json","changelogRss":"https://verifymcp.io/servers/com-1102tools-bls-oews-mcp/bls-oews.xml","external":[{"label":"Remote endpoint","href":"https://bls-oews.1102tools.com/mcp"},{"label":"Repository","href":"https://github.com/1102tools-dev/federal-contracting-mcps"},{"label":"Website","href":"https://1102tools.com/"}]}}