# Allowances API

> U.S. government per diem and overseas allowance rates from GSA, DTMO OCONUS and State DSSR tables.

- name: com.allowancesapi/per-diem-allowances
- version: 1.0.0
- connection class: R1 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 81/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.allowancesapi%2Fper-diem-allowances
- tools: https://api.protogrid.dev/v1/servers/com.allowancesapi%2Fper-diem-allowances/tools

**An agent can connect on its own if it already holds `X_API_KEY`, `X_API_KEY`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "per-diem-allowances": {
      "type": "http",
      "url": "https://mcp.allowancesapi.com/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}",
        "Authorization": "${X_API_KEY}"
      }
    }
  }
}
```

Placeholders to fill: `${X_API_KEY}`, `${X_API_KEY}`.

## Trust

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

## Quality 81/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 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: 86 (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`: 43 of 43 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- warn `tools.token_cost`: about 13,726 tokens to load every tool
- warn `tools.api_dump`: 43 tools, 84% named like REST operations: looks like an API mapped one endpoint per tool

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

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 6 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: 43, about 13,726 tokens to load them all
- tool set hash: 714b73c17f9cee97cb957ba699917e40
- tools last changed: 2026-11-05T11:32:58.922Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.allowancesapi/per-diem-allowances.svg)](https://protogrid.dev/servers/com.allowancesapi/per-diem-allowances)
- 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-05 `get_gsa_fedrooms` added
  - Lists current worldwide FedRooms hotels with name, address, postal city, state, postal code and country. Optional q matches every word as a case-insensitive literal substring across those fields. country filters by ISO alpha-2 code; results include country_iso_code. Paginate with offset and limit (maximum 200); total counts matches. as_of is the UTC download date. verification_url always links to GSA. No prices or availability; book through approved channels for the FedRooms rate.
- 2026-11-04 `get_user` changed (annotations)
- 2026-11-04 `get_latest_publications` changed (annotations)
- 2026-11-04 `get_opm_pay` changed (annotations)
- 2026-11-04 `search_opm_pay` changed (annotations)
- 2026-11-04 `get_opm_locality_by_county` changed (annotations)
- 2026-11-04 `get_opm_localities` changed (annotations)
- 2026-11-04 `get_fema_hotels_by_state_city` changed (annotations)
- 2026-11-04 `get_fema_hotels_by_zipcode` changed (annotations)
- 2026-11-04 `get_fema_hotel_by_id` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/com.allowancesapi%2Fper-diem-allowances/changes

## Remotes

- https://mcp.allowancesapi.com/mcp (streamable-http, auth api_key ${X_API_KEY}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (43)

- `calculate_mileage_reimbursement`: Calculate mileage reimbursement with the official GSA rate in effect on the travel date (today if omitted). Provide a distance in miles and the vehicle type: automobile, airplane, motorcycle or moving. For automobile travel, say whether a government-furnished automobile was available, which selects the reduced rate. Returns the rate category, rate and effective date, and the amount rounded to the cent. Use get_mileage for the rates alone.
- `calculate_trip_per_diem`: Estimates GSA CONUS per diem for a multi-stop trip: a day-by-day breakdown and totals of payable lodging and M&IE. Each stop has inclusive arrival and departure dates and a GSA destination ID or ZIP code, optionally the actual nightly lodging cost and meals to deduct. Applies the rate in effect each day, 75% M&IE on first and last days, the official meal deductions and the lodging cap (excess reported as overage). Not for Department of Defense or foreign travel.
- `cola_calculator_by_postcode`: Calculates the DSSR cost-of-living allowance (COLA) for a post: the COLA rate in percent and the annual and biweekly USD amounts for the given base salary and family size, today or on `date`. The post is identified by its five-digit DSSR post code (see get_dssr_locations_by_country). Use get_allowances for the COLA rate alone.
- `get_allowances`: Returns State Department (DSSR) allowance rates for every post in a country: cost-of-living (COLA),
hardship differential, living quarters (LQA), danger pay and education allowances, plus each post's per
diem, in force today or on `date`. `type` limits the result to some allowances. For one post use
get_allowances_by_location or get_allowances_by_postcode; for Department of Defense rates use the DTMO
tools.
- `get_allowances_by_location`: Returns DSSR allowances (COLA, hardship, LQA, danger pay, education, per diem) for one post in a country
matched by name, case-insensitive and partial ('toky' finds Tokyo), today or on `date`. Find exact post
names with get_dssr_locations_by_country or search_perdiem. Use get_allowances_by_postcode when the DSSR
post code is known, get_allowances for every post in the country.
- `get_allowances_by_postcode`: Returns DSSR allowances (COLA, hardship, LQA, danger pay, education, per diem) for the post identified by
its five-digit DSSR post code, today or on `date`. Post codes are the State Department's own identifiers
and come back in every DSSR result, so this is the most precise lookup. Use get_allowances_by_location
for a name, get_allowances for the whole country.
- `get_city_pair_locations`: Returns the airport or metropolitan codes GSA uses in City Pair airfare awards for the fiscal year of `date` (today by default), with city, state and country. GSA decides whether a city uses airport codes (DCA, IAD) or a metro code (WAS), so resolve codes here before get_city_pairs. `q` (3+ characters) matches a code exactly or a city or country name by substring. Fiscal years other than the current one depend on the plan.
- `get_city_pairs`: Returns GSA City Pair Program contract airfares between two codes (see get_city_pair_locations) on `date`, today by default: every matching award with airline, service and one-way USD fares by category (YCA, CA, business and others; null means not offered), valid in either direction. Government contract prices, not live availability; domestic fares exclude passenger and security fees. Other fiscal years depend on the plan; there is no fallback to another date.
- `get_countries`: Resolves a country name to its ISO alpha-2 code and lists the names of its DSSR posts; `q` matches the
country name case-insensitively ('papua' finds PG). Use it before any tool that needs a country code. ZZ
stands for Other Foreign Localities, not a country. Returns no rates.
- `get_country`: Returns one country by ISO alpha-2 code: its name, the names of its DSSR posts and State Department
notes. Use get_countries to find the code from a name, and get_dssr_locations_by_country when the post
codes are needed too. Returns no rates.
- `get_destination_by_id`: Returns the metadata of one GSA destination rate area by numeric ID: GSA's display name, the defined geographic scope, county and state. ID 0 is the Standard CONUS area. No rates: use get_gsa_perdiem_by_destination for the rate on a date and get_destinations to browse IDs.
- `get_destinations`: Returns the paginated list of every GSA destination rate area with its numeric ID, display name, defined scope, county and state, ordered by ID (`offset`, `limit`; past the end is an empty list). Use the ID with get_gsa_perdiem_by_destination or calculate_trip_per_diem. No rates; a ZIP or state lookup is usually faster than browsing.
- `get_dssr_locations`: Returns a paginated list of every DSSR post with its country, ISO code and post name; `q` filters by
case-insensitive substring. `total` counts every match regardless of `offset` and `limit`. Use it to find
the exact post name for the by-location tools when the country is unknown; get_dssr_locations_by_country
is shorter when it is known. Returns no rates.
- `get_dssr_locations_by_country`: Returns the DSSR posts of a country by ISO alpha-2 code, each with its name and five-digit post code
(`external_id`), as needed by the by-location and by-postcode tools. Use get_countries to resolve a name
to the code. Returns no rates.
- `get_dtmo_conus_locations`: Returns the DTMO per diem locations of a US state (US-XX code) with location name and county, as named in
the Department of Defense CONUS table. Use it to find the name for the `q` filter of
get_dtmo_perdiem_conus. Returns no rates. For other countries, Alaska, Hawaii and territories use
get_dtmo_oconus_locations.
- `get_dtmo_oconus_locations`: Returns the DTMO per diem locations of a country by ISO alpha-2 code ('AU', 'BE'), as named in the
Department of Defense OCONUS table. `location` filters by case-insensitive substring, taken literally (no
wildcards); no match returns an empty list. Use the names for the `q` filter of get_dtmo_perdiem_oconus.
Returns no rates.
- `get_dtmo_perdiem_conus`: Department of Defense per diem for the continental U.S. by state code (e.g. 'TX'); Alaska, Hawaii
and the territories are served by the OCONUS endpoint. Returns lodging, local and proportional meal
rates, incidentals and the maximum per diem (lodging + meals + incidentals) per season. `q` filters by
location name. `date` selects the rates in force on that day, `year` a fiscal year (Oct 1 to Sep 30);
omit both for the current fiscal year.
- `get_dtmo_perdiem_oconus`: Department of Defense per diem outside the continental U.S.: foreign countries by ISO alpha-2 code
(e.g. 'PG'), and Alaska, Hawaii and U.S. territories by 'US-XX' code. Returns lodging, local and
proportional meal rates, incidentals and the maximum per diem (lodging + meals + incidentals) per
season. `q` filters by location name. `date` selects the rates in force on that day, `year` a fiscal
year (Oct 1 to Sep 30); omit both for the current fiscal year.
- `get_fema_hotel_by_id`: Returns one property on FEMA's Hotel and Motel National Master List by FEMA ID, or a 404 error when the ID is not listed: name, address, phone, property type, stories and sprinklers, with `as_of` the date of the list snapshot. Use it to confirm a hotel is fire-safe for reimbursed federal lodging. No rates.
- `get_fema_hotels_by_state_city`: Returns the properties on FEMA's Hotel and Motel National Master List in a US state, optionally narrowed by a partial, case-insensitive `city` ('york' matches New York and Yorktown), ordered by city then name and paginated with `offset`, `limit` (up to 200) and `total`. Covers the 50 states, DC and the territories FEMA lists. Returns FEMA ID, address and property details, no rates.
- `get_fema_hotels_by_zipcode`: Returns every property on FEMA's Hotel and Motel National Master List in a US ZIP code (five digits or ZIP+4), ordered by name, with FEMA ID, address and property details. A known ZIP with no listed property returns an empty list, an unknown ZIP a 404 error. Fire-safe lodging is required for reimbursed federal travel; no rates, pair with get_gsa_perdiem_by_zipcode.
- `get_fleet_rates_by_sin`: Returns the GSA Fleet vehicle leasing rates (monthly lease rate and rate per mile) for the vehicle type identified by its Standard Item Number (SIN), from the standard (US) or europe rate schedule, for the current fiscal year unless `year` is given; rates are available from fiscal year 2022. SINs are the vehicle-type codes of the GSA Fleet rate schedule; the response names the vehicle type.
- `get_gsa_fedrooms`: Lists current worldwide FedRooms hotels with name, address, postal city, state, postal code and country. Optional q matches every word as a case-insensitive literal substring across those fields. country filters by ISO alpha-2 code; results include country_iso_code. Paginate with offset and limit (maximum 200); total counts matches. as_of is the UTC download date. verification_url always links to GSA. No prices or availability; book through approved channels for the FedRooms rate.
- `get_gsa_perdiem_by_destination`: Returns the GSA per diem of one GSA destination rate area (a city, county, metro area or the Standard CONUS area, ID 0) in effect today or on `date`: the seasonal lodging rate and daily M&IE in USD. Destination IDs come from get_destinations or any GSA per diem result. When the ID is unknown use get_gsa_perdiem_by_zipcode or get_gsa_perdiem_by_state.
- `get_gsa_perdiem_by_state`: Returns every GSA destination rate in a US state (US-XX) in effect today or on `date`: seasonal lodging and daily M&IE in USD per destination, with its county. `location` filters by destination or defined-area name, case-insensitive and partial. A state with no non-standard destination returns the Standard CONUS rate. CONUS only: for Alaska, Hawaii, territories and abroad use the DTMO or DSSR tools.
- `get_gsa_perdiem_by_state_year`: Return every GSA destination rate in a US state (US-XX) for a US fiscal year (October 1 to September 30): the lodging rate for every month and the daily M&IE rate per destination. The optional `location` filters destinations by GSA destination or defined-area name, case-insensitive and partial. Set `verification_url=true` to include the official GSA state lookup URL. Use get_gsa_perdiem_by_state for the rate on one date.
- `get_gsa_perdiem_by_zipcode`: Returns the GSA per diem for a US ZIP code (five digits or ZIP+4) in effect today or on `date`: seasonal lodging and daily M&IE in USD. A ZIP can map to several destinations; then every rate is returned with its county and none is chosen for you. A ZIP with no non-standard destination returns the Standard CONUS rate. Use get_gsa_perdiem_by_zipcode_year for a whole fiscal year.
- `get_gsa_perdiem_by_zipcode_year`: Returns the GSA lodging rate for every month of a US fiscal year (October 1 to September 30) and the daily M&IE, in USD, for a US ZIP code (five digits or ZIP+4). A ZIP can map to several destinations; then every rate is returned with its county and none is chosen for you. A ZIP with no non-standard destination returns the Standard CONUS rate. Use get_gsa_perdiem_by_zipcode for the rate on one date.
- `get_latest_publications`: Returns the most recent data loaded for each source, with its publication date and fiscal year: DSSR
allowances and per diem, DTMO CONUS and OCONUS per diem, GSA per diem, mileage, vehicle rates and M&IE
breakdowns, FEMA hotels and OPM pay tables. Use it to say how current an answer is. Returns no rates.
- `get_mie_breakdowns`: Return how daily M&IE totals break down into breakfast, lunch, dinner and incidental expenses, as in effect on the given date. The CONUS table breaks down the five standard CONUS M&IE tiers and is returned by default. Set region=oconus for the generic DTMO/DSSR M&IE total table. If date is not specified, today's breakdowns will be returned.
- `get_mileage`: Returns the GSA privately owned vehicle (POV) mileage reimbursement rates in USD per mile for airplane, automobile, government-furnished automobile, motorcycle and moving, in effect today or on `date`; `type` selects one. Use calculate_mileage_reimbursement to turn a distance into an amount.
- `get_opm_localities`: Returns OPM General Schedule locality pay areas for the latest pay year with the code for get_opm_pay. `location` keeps areas whose name contains every word and areas of counties or cities with exactly that name (`state` narrows it); `matched_places` shows why. A place in no area returns Rest of U.S. (RUS); several areas come back when a name exists in several states or a city spans areas. Empty results mean an unknown name, not RUS. Territories are not covered.
- `get_opm_locality_by_county`: Returns the General Schedule locality pay area of a county by five-digit FIPS code for the latest pay year, with the code for get_opm_pay. Counties outside every area return Rest of U.S. (RUS); every county in Alaska or Hawaii returns that state's area. Unknown codes, Connecticut planning regions and territory counties are 404 errors. Use get_opm_localities to search by name.
- `get_opm_pay`: Return the latest pay table of a locality pay area, ordered by grade and step, or 404 for an unknown code. `grade` and `step` narrow the rates. Use `GS` for the base table without locality pay, and `RUS` for Rest of U.S.
- `get_perdiem_allowance`: Returns State Department (DSSR) per diem for every post in a country: lodging, M&IE and maximum per diem
in USD per day, today or on `date`. For one post use get_perdiem_allowance_by_location or
get_perdiem_allowance_by_postcode; for a place name without a country code use search_perdiem. For
Department of Defense travel use get_dtmo_perdiem_oconus.
- `get_perdiem_allowance_by_location`: Returns DSSR per diem (lodging, M&IE and maximum per diem in USD per day) for one post in a country
matched by name, case-insensitive and partial, today or on `date`. Find exact post names with
get_dssr_locations_by_country or search_perdiem. Use get_perdiem_allowance for the whole country,
get_perdiem_allowance_by_postcode for a known post code.
- `get_perdiem_allowance_by_postcode`: Returns DSSR per diem (lodging, M&IE and maximum per diem in USD per day) for the post identified by its
five-digit DSSR post code, today or on `date`. Every DSSR result carries the post code, so use it for
follow-up lookups. Use get_perdiem_allowance_by_location for a name, get_perdiem_allowance for the whole
country.
- `get_user`: Returns the account behind the API key: plan, monthly request limit, requests used in the current billing
period, and the period start, end and renewal date. Use it to explain a quota or plan error or to check
remaining requests. This call does not count against the quota.
- `get_zipcode`: Returns the state or states a US ZIP code (five digits or ZIP+4) belongs to; a ZIP that crosses a state line returns every state. Metadata only, no rates: use get_gsa_perdiem_by_zipcode for per diem. Send ZIPs as strings so leading zeros survive.
- `search_dtmo_perdiem`: Finds Department of Defense per diem by location name ('Kabul') or country or state name ('Afghanistan'),
across CONUS and OCONUS, with no code needed. Returns lodging, local and proportional meal rates,
incidentals and maximum per diem per matching location and season. `date` selects the rates in force on
that day, `year` a fiscal year (Oct 1 to Sep 30); omit both for the current fiscal year.
- `search_fema_hotels`: Searches FEMA's Hotel and Motel National Master List (fire-safe lodging, required for reimbursed federal travel) by property name and city: every word of `q` must appear as a plain substring of the name or city, with no fuzzy matching. `state` narrows to one state; paginated with `offset`, `limit` (up to 200) and `total`. Returns FEMA ID, address, phone and property details, no rates: pair with GSA per diem for the lodging cap.
- `search_opm_pay`: Return the latest General Schedule pay tables whose locality area matches every word of `q`: each word must be contained in the area name, case-insensitively, or equal its code. `grade` and `step` narrow the rates; no match returns an empty `results` list. Matching only looks at OPM's area names, not the counties and towns they cover, so a town missing from the names returns nothing, which does not mean Rest of U.S. Use get_opm_localities to resolve a place to its area.
- `search_perdiem`: Finds DSSR per diem by a partial, case-insensitive country or post name of at least three characters,
with no country code needed. Returns lodging, M&IE and maximum per diem per matching post, today or on
`date`, with the post code for precise follow-up lookups. A name that matches nothing is a 404 error, not
an empty list. Once the ISO code is known, the country tools are more precise.
