# FedSalary: official pay data

> Official pay statistics for any job and place, offer checks and two-offer comparisons.

- name: com.fedsalary/official-pay
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 81/100 flags: no-repository
- quality: 89/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.fedsalary%2Fofficial-pay
- tools: https://api.protogrid.dev/v1/servers/com.fedsalary%2Fofficial-pay/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "official-pay": {
      "type": "http",
      "url": "https://fedsalary.com/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 96
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-89% +updated-5d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,180 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 5 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 2,180 tokens to load them all
- tool set hash: ee90fdfdd35514e1f9df1ada0d6c3e96
- tools last changed: 2026-11-13T06:02:05.120Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.fedsalary/official-pay.svg)](https://protogrid.dev/servers/com.fedsalary/official-pay)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-13 `match_jobs` added
  - Current US and Canadian openings ranked by how closely they fit a person's work history: the job titles they have held, years of experience, skills, place and minimum pay. Each title is read as the occupation that most employers' current postings with that title fall under; openings are then ranked by title match, same or neighbouring occupation, skills named in the posting's title and seniority fit (intern and junior roles drop for experienced people, senior roles for people starting out). Each result says why it is listed, with the pay range the employer published or the official median when it published none, and the link to apply on the employer's site. No job descriptions are read, so a skill counts only when the employer put it in the job title. Nothing about the person is stored. Same coverage limits as find_jobs.
- 2026-11-12 `find_jobs` changed (inputSchema)
- 2026-11-09 `find_jobs` changed (description, inputSchema)
  - before: Current job openings in the US and Canada from employers' own job boards (read through their documented APIs, refreshed weekly), matching keywords and a place. Each result: title and employer as posted, places, posting date, the pay range when the employer published one, and when it did not, the official BLS median for the occupation in the US state named (national for US remote jobs); for published US ranges, where the range sits on the official distribution; and the link to apply on the employer's own site. Results are newest first or by published pay. Coverage is strongest for technology, finance, startups and remote work; many hospitals, retailers and public employers are not included yet, so few or no results does not mean no such jobs exist. No job descriptions; FedSalary takes no applications.
  - after: Current job openings in the US and Canada from employers' own job boards and US federal announcements from USAJOBS (read through their documented APIs, refreshed weekly), matching keywords and a place. Each result: title and employer as posted, places, posting date, the pay range when the employer published one, and when it did not, the official BLS median for the occupation in the US state named (national for US remote jobs); for published US ranges, where the range sits on the official distribution; and the link to apply on the employer's own site. Results are newest first or by published pay. Coverage is strongest for technology, finance, startups and remote work; many hospitals, retailers and state and local governments are not included yet, so few or no results does not mean no such jobs exist. No job descriptions; FedSalary takes no applications.
- 2026-11-09 `take_home` added
  - Take-home pay on a US salary or hourly wage in a state or one of the 50 largest metro areas: federal income tax, Social Security, Medicare, the state's income tax and the state's employee payroll contributions where it has them (disability insurance, paid family leave, long-term care, employee unemployment insurance), using the state's newest published rules with the federal rules of the same year. Single filer, no dependents, standard deduction, wage income only; city and county income taxes are not included. Returns the yearly, monthly and per-paycheck amounts with each tax line and a link to the state's calculator page.

Full history: https://api.protogrid.dev/v1/servers/com.fedsalary%2Fofficial-pay/changes

## Remotes

- https://fedsalary.com/api/mcp (streamable-http, auth none, reachable true, uptime30d 0.8888889)

## Packages

_none_

## Tools (6)

- `check_pay`: Where a job offer's pay, or a posted pay range, sits on the official pay distribution for the same job and place: the percentile span, the median, US take-home pay at the midpoint after federal and state tax, and for US metro areas which Department of Labor wage level (entry to fully competent) the pay meets. Same places as get_pay.
- `compare_offers`: Two US job offers, each a pay figure in a state or one of the 50 largest metro areas, compared after federal income tax, Social Security, Medicare and state income tax, then after local prices (BEA regional price parities, rent included). Returns take-home pay, take-home at national prices, which offer is worth more and by how much, and the salary each place would need to match the other. With a job, also where each offer sits on the official pay distribution. City and county income taxes are not included.
- `find_jobs`: Current job openings in the US and Canada from employers' own job boards and US federal announcements from USAJOBS (read through their documented APIs, refreshed weekly), matching keywords and a place. Each result: title and employer as posted, places, posting date, the pay range when the employer published one, and when it did not, the official BLS median for the occupation in the US state named (national for US remote jobs); for published US ranges, where the range sits on the official distribution; and the link to apply on the employer's own site. Results are newest first or by published pay. Coverage is strongest for technology, finance, startups and remote work; many hospitals, retailers and state and local governments are not included yet, so few or no results does not mean no such jobs exist. No job descriptions; FedSalary takes no applications.
- `get_pay`: Official pay statistics for one job in one place: median, 10th to 90th percentiles, employment, the publisher and reference period, take-home pay where the site shows it, and for US states and metro areas the U.S. Department of Labor's four wage levels (entry to fully competent). Covers the US (national, every state, the 50 largest metro areas), Canada (national, provinces) and the UK (national; regions are a table on the national answer). Returns the page's Markdown copy with a citation line.
- `match_jobs`: Current US and Canadian openings ranked by how closely they fit a person's work history: the job titles they have held, years of experience, skills, place and minimum pay. Each title is read as the occupation that most employers' current postings with that title fall under; openings are then ranked by title match, same or neighbouring occupation, skills named in the posting's title and seniority fit (intern and junior roles drop for experienced people, senior roles for people starting out). Each result says why it is listed, with the pay range the employer published or the official median when it published none, and the link to apply on the employer's site. No job descriptions are read, so a skill counts only when the employer put it in the job title. Nothing about the person is stored. Same coverage limits as find_jobs.
- `take_home`: Take-home pay on a US salary or hourly wage in a state or one of the 50 largest metro areas: federal income tax, Social Security, Medicare, the state's income tax and the state's employee payroll contributions where it has them (disability insurance, paid family leave, long-term care, employee unemployment insurance), using the state's newest published rules with the federal rules of the same year. Single filer, no dependents, standard deduction, wage income only; city and county income taxes are not included. Returns the yearly, monthly and per-paycheck amounts with each tax line and a link to the state's calculator page.
