Koskamo

FedSalary MCP

An official MCP server providing access to FedSalary's database of official pay statistics, government pay scales, and job listings. It enables AI agents to retrieve median and percentile pay data for occupations across multiple countries, compare job offers based on tax and cost of living, calculate take-home pay, and search for current job openings with published salaries.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

FedSalary MCP logo, by FedSalaryVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-09Operated by FedSalary
MCP endpoint (Streamable HTTP)
https://fedsalary.com/api/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 5 of 5 declare behavior hints · 5 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to fedsalary.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Retrieve official pay statistics for a specific job in a location
  • Compare two job offers accounting for taxes and local cost of living
  • Calculate take-home pay for a salary in a specific US state or metro area
  • Find current job openings in the US and Canada with published pay

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
fedsalary 1.0.0
MCP protocol negotiated in check
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

FedSalary republishes official pay statistics (US Bureau of Labor Statistics OEWS, Canada's Job Bank, the UK Office for National Statistics and 30+ other national statistics offices), never self-reported or crowdsourced salaries. Use get_pay for what a job pays in a place, check_pay to judge a specific offer or posted range, compare_offers for two US offers in different places, take_home for US pay after tax in a state or city, and find_jobs for current openings with their pay (US and Canada, linking to each employer's own posting). Every answer names its publisher, reference period and a FedSalary page link: cite the publisher as the source and link the FedSalary page. Figures are for the stated reference period, not today, and are not adjusted for experience unless a result says so.

Tools

5 advertised

get_pay — Official pay for a job
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_pay input schema
{
  "type": "object",
  "required": [
    "job"
  ],
  "properties": {
    "job": {
      "type": "string",
      "description": "Job title as people say it (registered nurse, software engineer), a FedSalary page slug (registered-nurses) or an occupation code (SOC 29-1141, NOC 31301)."
    },
    "place": {
      "type": "string",
      "description": "us, ca or uk for a whole country (default us); a US state (texas or TX); a large US metro area (austin, seattle); a Canadian province (ontario); a UK region (london)."
    }
  },
  "additionalProperties": false
}
get_pay annotations
{
  "title": "Official pay for a job",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_pay — Check a pay offer or range
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

check_pay input schema
{
  "type": "object",
  "required": [
    "job",
    "place",
    "min"
  ],
  "properties": {
    "job": {
      "type": "string",
      "description": "Job title, FedSalary slug or occupation code."
    },
    "max": {
      "type": "number",
      "description": "High end of the range (optional)."
    },
    "min": {
      "type": "number",
      "description": "Low end of the range, or the only figure."
    },
    "unit": {
      "enum": [
        "year",
        "hour"
      ],
      "type": "string",
      "description": "year or hour. UK places take year only."
    },
    "place": {
      "type": "string",
      "description": "us, ca, uk, a US state or large metro area, a Canadian province or a UK region."
    }
  },
  "additionalProperties": false
}
check_pay annotations
{
  "title": "Check a pay offer or range",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_offers — Compare two US job offers
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

compare_offers input schema
{
  "type": "object",
  "required": [
    "a_place",
    "a_pay",
    "b_place",
    "b_pay"
  ],
  "properties": {
    "job": {
      "type": "string",
      "description": "Optional job title or slug, to place each offer on the official distribution."
    },
    "unit": {
      "enum": [
        "year",
        "hour"
      ],
      "type": "string",
      "description": "year or hour, for both offers (default year)."
    },
    "a_pay": {
      "type": "number",
      "description": "Offer A's pay."
    },
    "b_pay": {
      "type": "number",
      "description": "Offer B's pay."
    },
    "a_place": {
      "type": "string",
      "description": "Offer A's place: a US state or large metro area."
    },
    "b_place": {
      "type": "string",
      "description": "Offer B's place."
    }
  },
  "additionalProperties": false
}
compare_offers annotations
{
  "title": "Compare two US job offers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_jobs — Find current job openings with their pay
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

find_jobs input schema
{
  "type": "object",
  "properties": {
    "sort": {
      "enum": [
        "new",
        "pay"
      ],
      "type": "string",
      "description": "new (default) or pay."
    },
    "place": {
      "type": "string",
      "description": "A US state (texas or TX), a US metro area or large city (austin), remote (US remote jobs), canada, a Canadian province (ontario) or a large Canadian city (toronto). Leave out for everywhere."
    },
    "min_pay": {
      "type": "number",
      "description": "Minimum yearly pay in USD: the top of the published range must reach it (Canadian ranges converted). Jobs without published pay are left out when this is set."
    },
    "keywords": {
      "type": "string",
      "description": "Words matched against the job title and employer, all of which must match (data analyst, product manager, Stripe)."
    },
    "published_pay_only": {
      "type": "boolean",
      "description": "true = only jobs that publish a pay range."
    }
  },
  "additionalProperties": false
}
find_jobs annotations
{
  "title": "Find current job openings with their pay",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
take_home — US take-home pay after tax
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

take_home input schema
{
  "type": "object",
  "required": [
    "pay",
    "place"
  ],
  "properties": {
    "pay": {
      "type": "number",
      "description": "Pay before tax: a yearly salary, or an hourly wage with unit hour."
    },
    "unit": {
      "enum": [
        "year",
        "hour"
      ],
      "type": "string",
      "description": "year (default) or hour; hourly pay is annualized at 2,080 hours."
    },
    "place": {
      "type": "string",
      "description": "A US state (ohio or OH) or a large US metro area (austin, seattle). us gives federal taxes only."
    }
  },
  "additionalProperties": false
}
take_home annotations
{
  "title": "US take-home pay after tax",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-09: 1 of 1 checks answered
  2. 2026-11-10: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
676 ms
95th percentile latency
676 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 676 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http fedsalary-mcp https://fedsalary.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add fedsalary-mcp --url https://fedsalary.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable fedsalary-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "fedsalary-mcp": {
      "url": "https://fedsalary.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "fedsalary-mcp": {
      "type": "streamableHttp",
      "url": "https://fedsalary.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start fedsalary-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "fedsalary-mcp": {
      "type": "http",
      "url": "https://fedsalary.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http fedsalary-mcp https://fedsalary.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://fedsalary.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "fedsalary-mcp": {
      "serverUrl": "https://fedsalary.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like FedSalary MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run FedSalary MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing