API & MCP Server
Every US military job, queryable — every MOS, rate and AFSC across all six branches, plus rank-tier career playbooks, the acronym dictionary, installation data, and the pay and disability math behind our calculators. Live coverage counts come from /api/v1/stats, not from this paragraph.
No key. No signup. CORS open to every origin. Three ways in: a REST API, an OpenAPI 3.0 spec for tool-calling clients, and a Model Context Protocol endpoint you can paste into Claude Desktop.
MCP server
One endpoint, no auth, JSON-RPC 2.0 over HTTP, protocol version 2024-11-05. Drop this into your MCP client config:
{
"mcpServers": {
"honestmos": {
"url": "https://www.honestmos.com/api/mcp"
}
}
}Or point any MCP-aware client straight at https://www.honestmos.com/api/mcp. Eight tools:
get_mos_infoVerified community data about a US military job — description, training pipeline, ratings.get_mos_reviewsWhat people who actually did the job say about day-to-day reality and civilian translation.search_mosFind jobs by keyword when you know the work but not the code.get_bahBAH rates by pay grade and ZIP.get_acronymAcronym lookup with the official/recruiter/honest treatment.get_platform_statsCoverage and statistics for the whole platform.get_playbook_tipsCareer tips for a job at a specific rank tier.get_base_infoCommunity ratings for a US installation.
REST API
Plain GET requests. Try one right now — it works in a browser tab:
curl https://www.honestmos.com/api/v1/mos/11b
curl "https://www.honestmos.com/api/v1/calculators/pay?grade=E-5&yos=4"GET /api/v1/statsPlatform coverage — job counts by branch, playbook and acronym totals, review counts with verification-tier breakdown.GET /api/v1/mos/{code}One military job: title, branch, description, training pipeline and length, community ratings with sample size.GET /api/v1/mos/{code}/reviewsAnonymous verified reviews for that job. Identity is never returned — see the privacy note below.GET /api/v1/mos/{code}/playbookRank-tier career playbook for that job (E1–E9, W1–W5, O1–O10).GET /api/v1/searchKeyword search across jobs. Use when you know the work but not the code.GET /api/v1/acronymsAcronym lookup — official definition, the recruiter pitch, and what it actually means.GET /api/v1/basesUS installations with community quality-of-life ratings.GET /api/v1/bases/{slug}One installation in detail.GET /api/v1/calculators/payBase pay + BAS by grade and years of service. Params: grade (hyphenated, e.g. E-5) and yos.GET /api/bahBAH rates by pay grade, ZIP and dependent status. Note the path — this one sits outside /v1.GET /api/v1/calculators/va-disabilityVA combined-rating math, including the bilateral factor.GET /api/v1/calculators/height-weightService height/weight and body-composition standards.
Machine-readable spec: /api/openapi.json — OpenAPI 3.0, works as a ChatGPT custom GPT action or with any OpenAPI client.
Using it
Attribution: cite as Honest MOS (honestmos.com).
Carry the sample size. If you publish a rating, publish the sample_size next to it. Every ratings object in this API ships one, along with a confidence label — a score built on four reviews and one built on four hundred are different claims, and dropping the count silently turns the first into the second.
Identity is off the table. No endpoint returns a user identifier, and none ever will. Don't try to re-identify a reviewer by joining our data against anything else — it is the one thing that would make people stop telling the truth here, and the whole dataset is worth nothing the day that happens.
Questions
Do I need an API key?
No. There is no key, no signup, no quota form and no dashboard. The endpoints are public GET requests with CORS open to every origin, so you can call them straight from a browser. If you hammer it hard enough to cause a problem we will rate limit by IP, but we would rather you just told us what you are building.
Can I use this commercially?
Yes. Attribute it — "Honest MOS (honestmos.com)" — and if you are publishing review data, carry the sample size with it. A rating built on four reviews and a rating built on four hundred are different claims, and stripping the sample size turns one into the other.
Does the API expose who wrote a review?
No, and it cannot. Reviews are anonymous by default and the API returns no user identifier, no username, and no field that maps back to a person — not even to authenticated callers. There is no endpoint that will give you that, because there is no code path that would produce it. Anonymity here is enforced in the schema, not by a permission flag we could get wrong.
How current is the data?
Job definitions, playbooks and acronyms update as we publish. Pay and allowance figures track the current-year DFAS and DoD tables. Review counts move whenever someone submits. Call /api/v1/stats for live coverage numbers rather than caching a figure from this page.
What is the MCP server for?
It lets an AI assistant query military job data directly instead of guessing at it from training data. That matters more here than in most domains: MOS codes, training pipelines and pay tables are exactly the kind of specific, frequently-revised facts that language models confidently get wrong. Point the model at the endpoint and it can look the answer up.
Why is this free?
Our stated goal is to become unnecessary — this is infrastructure the military should have built twenty years ago. Locking it behind a key would make us the new gatekeeper, which is the thing we are trying to delete. Ads pay for the site; they have no influence on any rating or ranking, and no advertiser gets access to any of this.
Building something?
We'd genuinely like to know — it tells us which endpoints deserve more work. There's also an embed gallery if you want to drop a card on a page rather than call an API, and 291 free tools if you were only looking for an answer.